Thiết kế AI trong trận chiến 1 trên 1 tương tự như Pokemon


7

Tôi đang thiết kế một trò chơi trong đó hệ thống chiến đấu tương tự như Pokemon. Đó là, trận chiến 1 trên 1 chỉ với một vài (4-6) di chuyển để lựa chọn. Khi trò chơi đang hình thành, tôi bắt đầu nghĩ về một số lĩnh vực mã hóa khó khăn hơn như AI của kẻ thù và tôi có một vài câu hỏi. Tôi đã nghĩ về một số khả năng để thiết kế AI và cũng muốn nghe phản hồi của bạn.

Tôi đang nghĩ đến việc thử một AI phổ quát cho trò chơi của mình, nơi tất cả các quái vật sẽ sử dụng cùng một logic để xác định di chuyển chúng sẽ sử dụng. Nó sẽ dựa trên các phương trình / giá trị được gán cho mỗi lần di chuyển và xác định cái nào là tốt nhất để thực hiện. Ví dụ, nếu quái vật di chuyển sẽ bị đối thủ chống lại (1/2 sát thương) thì nó sẽ nhận được giá trị hiệu quả thấp hơn so với những kẻ khác và di chuyển gây thêm sát thương do lỗ hổng sẽ nhận được giá trị hiệu quả cao hơn. Ngoài ra, tôi đã nghĩ đến việc thêm một biến làm giảm giá trị nếu di chuyển đã được sử dụng nhiều lần để tránh máy tính luôn sử dụng cùng một động tác. Tôi cảm thấy rằng điều này hiện bị giới hạn chỉ để làm cho máy tính sử dụng di chuyển thiệt hại cao nhất. Bất kỳ đề xuất?

SO cho câu hỏi của tôi.

  1. Làm thế nào để thiết kế logic AI cho mỗi quái vật / Pokemon so với việc có một bộ quy tắc chung cho tất cả ảnh hưởng đến kích thước trò chơi của tôi về mã và hiệu quả của AI?

  2. Có tài nguyên nào thảo luận về thiết kế AI theo cách này không? Tôi tìm thấy rất ít về AI trong các trò chơi Pokemon và tôi không chắc những trò chơi khác có thể giống nhau về cơ học.

Cảm ơn vì đã dành thời gian cho tôi!

Câu trả lời:


12

AI tổng quát hóa với các thành phần mô-đun có thể sẽ dẫn đến mã nhỏ hơn và sẽ dễ dàng mở rộng hơn cho số lượng ký tự lớn hơn. Dưới đây là một số cân nhắc ví dụ, giả sử bạn xây dựng một hệ thống trọng số chung cho tất cả các ký tự.

-Bạn có thể chỉ định cho mỗi nhân vật một 'tính cách' hoặc 'thái độ' từ danh sách đã đặt (ví dụ: 'Tích cực', 'Phòng thủ', 'Ngẫu nhiên'). Sau đó, có công thức trọng số của bạn đưa vào tài khoản. Vì vậy, giả sử, một nhân vật hung hăng sẽ tăng thêm trọng lượng cho các động tác gây sát thương, trong khi một nhân vật Phòng thủ sẽ tăng thêm trọng lượng để tự chữa lành vết thương. Sau đó, bạn chỉ phải gán tính cách cho từng nhân vật thay vì viết các kịch bản duy nhất cho mỗi nhân vật.

-Trong khi luôn chọn tùy chọn 'tốt nhất', AI của bạn có thể cân nhắc từng tùy chọn, sau đó quyết định ngẫu nhiên giữa chúng. Vì vậy, được đưa ra 4 lần di chuyển, nếu các giá trị được tính toán của chúng đạt đến 60, 35, 25 và 20 trong lượt này, cộng lại lên tới 140. Chọn một số ngẫu nhiên trong phạm vi từ 1 đến 140 và kiểm tra các trọng số để quyết định xem di chuyển được sử dụng. Điều này sẽ khiến AI thường sử dụng nước đi tốt nhất, nhưng thường làm bạn ngạc nhiên với một lựa chọn thay thế.

-Bạn có thể cho mỗi nhân vật AI xếp hạng "kỹ năng" số được sử dụng để mở rộng cơ hội mà họ sẽ chọn nước đi tốt nhất.

-Nhận rằng Pokemon có RẤT NHIỀU chiêu thức không gây sát thương trực tiếp, mà thay vào đó áp dụng các hiệu ứng trạng thái, buff hoặc debuff. Bạn có thể cung cấp cho mỗi nhân vật một ưu tiên số cho các động tác gây sát thương so với không gây sát thương. Bạn cũng có thể cung cấp cho họ một số lượng đã đặt hoặc một loạt các động tác không gây sát thương mà họ sẽ sử dụng trước khi bắt đầu tấn công trực tiếp. Giá trị HP của bản thân và đối thủ hiện tại cũng có thể là một yếu tố trong công thức tấn công trọng lượng so với sử dụng các bước đi chiến lược - khi cả hai bạn đều có sức khỏe, bạn đã có thời gian để thiết lập, nhưng khi nó giảm xuống một chút , đã đến lúc sử dụng một cuộc tấn công (hy vọng một cuộc tấn công đầu tiên!).

-Ngoài ra, Pokemon có các cuộc tấn công với hiệu ứng phụ. Xem xét cách bạn muốn tăng trọng lượng cho một cuộc tấn công gây sát thương nhiều hơn so với một cuộc tấn công yếu hơn với cơ hội làm choáng hoặc luôn luôn đi trước.


cảm ơn rất nhiều vì những gợi ý đó Tôi nghĩ rằng đó sẽ là một ý tưởng tuyệt vời để thiết lập một vài phong cách khác nhau (hung hăng, phòng thủ) để thêm một số loại và sau đó cân nhắc những thứ khác nhau như hiệu ứng trạng thái hoặc di chuyển gây sát thương.
chí

5

Vì vậy, mối quan tâm lớn nhất của bạn là mã và hiệu quả AI. Vì câu hỏi của bạn có 44 lượt xem không có gợi ý, tôi nghĩ bạn sẽ không bận tâm đến ý tưởng từ một game thủ cơ bản - đặc biệt là người đã chơi các trò chơi Pokemon. Tôi không có nền tảng AI chỉ là một nền tảng lập trình nhỏ, tuy nhiên tôi nghĩ:

Nếu bạn có AI duy nhất trên mỗi Poke (Pokemon), mã của bạn có thể rất lớn. Do đó, bạn cần các lớp Poke và AI (một bộ chiến lược) cho mỗi lớp. Vấn đề là đối với các lớp = n, bạn có bộ chiến lược "SS từ i = n đến i = 0 của i" để thực hiện.

Example: 
Classes A, B, C have match-ups AA, AB, AC, BB, BC, CC. n=3 SS=6=3+2+1
Classes ABCD; match-ups AA AB AC AD BB BC BD CC CD DD. n=4 SS=10=4+3+2+1

Nếu bạn thiết kế các lớp học của bạn theo cách điển hình, có một cách cắt giấy bằng giấy cho mọi thứ. Giống như lửa đập nước đập đất gấu lửa (chu kỳ xung quanh). Do đó, mỗi Poke có thể có một định danh cho Class Poke. Ngoài ra, bạn đã nói tối đa 5 di chuyển.

Example:
Pikachu's "growl" has the same effect as Raticates "squeal" to "Lower defense"

Đối tượng Poke của bạn sẽ chứa các mục sau

  1. Đó là lớp học (A, B, C, v.v.)
  2. lớp # của danh sách được sắp xếp ưu tiên di chuyển để sử dụng so với các lớp khác

    Ví dụ: Pikachu: Class A. Strateget A, 12345, B; 34512 C; 51234 Chrmndr: Class B. Strategets A; 21543, B; 12345 C; 34512 Squirtl: Class C. Strateget A; 43215, B; 21543 C; 12345

Khi họ chiến đấu, (Nói Pikachu vs Charmander) nếu CPU là Pikachu, đối tượng Charmander chuyển Class B sang Pikachu và CPU-Pikachu chọn chiến lược đặt B; 34512, đây là cách ưu tiên hàng đầu để chiến đấu với đối thủ Class B . Năm động tác đó rơi vào các loại chung (tấn công, phòng thủ, tự tăng tốc, giảm tốc độ của kẻ thù, tấn công kẻ thù) hoặc những gì có bạn, và do đó máy tính biết nên sử dụng cái gì trước tiên. Sử dụng các vật phẩm khác trong danh sách có thể lên đến các thông số như tần số sức khỏe của đối thủ hoặc thậm chí là thứ gì đó điên rồ như sim của các giá trị ưu tiên vượt quá mức tối đa.


0

Tôi đã thực hiện một số công việc về mã trận pixelmon, như đã đề cập, nó hoạt động trên các tùy chọn có trọng số cho các bước di chuyển, nhưng cũng có những trạng thái cần lo lắng, sau đó thuộc tính tốc độ được sử dụng + buff / debuffs / vật phẩm để xác định di chuyển để cho lượt đó sau đó tính lại lượt tiếp theo.

Nhưng hãy nhớ rằng có những bước di chuyển và vật phẩm giới hạn cho bất cứ ai sử dụng trong trò chơi theo phong cách pokemon vì tất cả chúng đều được xác định trước khi bắt đầu trận chiến.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.