AI trò chơi phức tạp cho trò chơi chiến lược theo lượt


26

Tôi đang thực hiện một số nghiên cứu cho một dự án trò chơi Chiến lược theo lượt và tìm kiếm các nguồn lực tốt về chủ đề này. Trò chơi này là một trò chơi chiến tranh điển hình, nơi các quốc gia có thể chiến đấu với nhau, triển khai các đơn vị và để các đơn vị này di chuyển xung quanh trên một sơ đồ hình lục giác, tấn công lẫn nhau, v.v.

Tôi đặc biệt quan tâm đến cách tổ chức AI của Civilization V! Theo Wikipedia, trò chơi sử dụng bốn hệ thống AI khác nhau cho các lớp AI khác nhau của trò chơi:

  • AI chiến thuật kiểm soát các đơn vị cá nhân
  • AI hoạt động giám sát toàn bộ mặt trận chiến tranh
  • AI chiến lược quản lý toàn bộ đế chế
  • AI chiến lược vĩ đại đặt ra các mục tiêu dài hạn và xác định làm thế nào để chiến thắng trò chơi

Về mặt khái niệm, điều này có vẻ như rất có ý nghĩa để đạt được một AI phức tạp và nó khiến tôi tò mò muốn tìm hiểu về cách các hệ thống AI khác nhau này hoạt động (và hoạt động cùng nhau). AI chiến thuật có lẽ là dễ hiểu nhất vì nó xử lý việc ra quyết định cho một đơn vị (di chuyển, tấn công, sửa chữa, rút ​​lui, v.v.) nhưng tôi nghĩ các hệ thống AI khác là nơi nó thực sự thú vị. Ví dụ, AI hoạt động làm gì và làm như thế nào? Tôi chắc chắn đây là những bí mật được lưu giữ tốt nhất bởi Firaxis Games nhưng sẽ rất tuyệt nếu bắt đầu một số cuộc thảo luận về vấn đề này để tìm hiểu thêm về nó.

Ngoài ra nếu có ai biết bất kỳ cuốn sách hay nào xử lý trò chơi chiến lược theo lượt AI thì sẽ rất tuyệt nếu biết. Rõ ràng đây là một chủ đề hạt giống thưa thớt trên web. Tôi đã nhận được "Lập trình trò chơi AI bằng ví dụ" nhưng cuốn sách đó nói về AI hành vi đơn lẻ hơn là AI định hướng mục tiêu cấp cao.

Câu trả lời:


19

Mặc dù tôi đồng ý với đoạn mở đầu của DampeS8N (tức là trò chơi AI chỉ cần đủ thông minh để khiến người chơi nghĩ rằng nó thông minh), tôi cảm thấy rằng câu hỏi này cần nhiều chi tiết hơn. Các cấu trúc dữ liệu được sử dụng có thể là các FSM cho tất cả các cấp, nhưng điều đó không thực sự trả lời cho câu hỏi như thế nào các hệ thống riêng lẻ hoạt động.

Disclaimer: Tôi hầu như không chơi các trò chơi Civilization nên sự hiểu biết của tôi về lối chơi bị hạn chế. Nếu có bất kỳ lỗi rõ ràng, tôi xin lỗi. Xin hãy sửa cho tôi, và tôi sẽ vui lòng chỉnh sửa.

Tôi sẽ lấy trích dẫn từ Điều IGN ban đầu .

1. AI chiến thuật

Ở cấp độ thấp nhất, AI chiến thuật sử dụng các lực lượng trong tay để giành chiến thắng trong một trận chiến ở quy mô địa phương.

Đây có lẽ là phần tiêu chuẩn nhất của hệ thống con. Có vô số cách để thực hiện điều này từ việc sử dụng các FSM, Cây hành vi (hoặc thậm chí thực hiện các hành động ngẫu nhiên, tùy thuộc vào độ khó của AI).

Tuy nhiên, vì đây là một trò chơi theo lượt, tương tự như Rủi ro, tôi nghĩ điều có nhiều khả năng xảy ra là mỗi đơn vị được chỉ định một điểm. Sau đó, có các số nhân được gắn vào điểm số này tùy thuộc vào các biến khác nhau (trung thành, tiền thưởng địa hình, v.v.).

Kết quả sau đó được tính bằng một cái gì đó như thế này:

If (AI unit score >> (much greater) enemy unit score) Then Completely destroy enemy unit
If (AI unit score > (somewhat greater) enemy unit score) Then Partially destroy enemy unit
If (AI unit score < (somewhat less) enemy unit score) Then Partially destroy AI unit
If (AI unit score << (much less) enemy unit score) Then Completely destroy AI unit

Nó có ý nghĩa rằng AI sẽ cố gắng và tối đa hóa điểm số này khi trong trận chiến.

Thêm vào một giá trị epsilon (ví dụ: cơ hội thất bại / thành công ngẫu nhiên nhỏ) và bạn đã có một AI có vẻ ngoài khá ổn (không ai muốn có một đối thủ hoàn hảo, điều đó thật không vui!).

2. AI hoạt động

Một bước tiến lên từ đó, AI hoạt động chọn chiến đấu để chiến đấu và đảm bảo rằng các lực lượng cần thiết đã có sẵn.

Tôi nghĩ rằng có một vài điểm về điều này:

  • Đánh giá sức mạnh hiện tại
  • Gia cố đơn vị
  • Đánh giá chiến đấu nào để chọn / tránh

Đánh giá sức mạnh hiện tại - Điều này chỉ hét lên Bản đồ ảnh hưởng với tôi. Nó có thể dễ dàng được biểu diễn trên lưới hex. Vì hệ thống con này được định hướng chiến đấu, các giá trị ảnh hưởng có thể đại diện cho các giá trị sức mạnh của từng đơn vị trong vùng lân cận. Nếu bạn có một đội quân đông đảo tập trung trong một khu vực nhỏ hình lục giác, giá trị ảnh hưởng sẽ rất lớn và AI hoạt động sẽ tính đến điều này khi đánh giá các trận đánh để chọn. Đừng quên, các giá trị ảnh hưởng của quân đội đối lập cũng sẽ được tính toán. Điều này cho phép AI hoạt động để dự đoán các mối đe dọa tiềm ẩn.

Củng cố các đơn vị - Bằng cách nhận thông tin về các phe phái đối lập từ bản đồ ảnh hưởng, AI có thể xác định đơn vị nào đang bị đe dọa nhiều nhất. AI sau đó có thể ra lệnh cho các đơn vị thân cận đi và củng cố các bên bị đe dọa.

Đánh giá những gì chiến đấu để chọn / tránh - Một vài tình huống có thể xảy ra ở đây. Nếu AI phát hiện một đơn vị đang bị đe dọa VÀ không có đơn vị nào ở gần để giúp nó có thể a) quyết định hy sinh đơn vị đó (nếu họ chỉ là bộ binh thấp, thay vì một vị tướng không thể thay thế) hoặc b) Đặt hàng cho đơn vị rút lui. Ngược lại, nếu AI phát hiện ra một đơn vị kẻ thù yếu gần một đội quân, nó có thể ra lệnh cho các đơn vị loại bỏ kẻ thù này.

Đây là một bài báo hay sử dụng các bản đồ ảnh hưởng trong các trò chơi Chiến lược thời gian thực.

3. AI chiến lược

Tiến lên cao hơn, AI chiến lược quản lý toàn bộ đế chế, tập trung vào nơi xây dựng thành phố và phải làm gì với chúng.

"Tôi nên xây dựng một thành phố ở đâu?" chỉ là âm thanh như đánh giá vị trí. Các chương trình cờ vua và các trò chơi khác sử dụng nó để xác định mức độ mong muốn của một vị trí nhất định. Ví dụ:

Hex A: Gần tài nguyên, trên địa hình cao, gần đồng minh, gần kẻ thù Hex B: Xa tài nguyên, trên địa hình trung bình, khoảng cách trung bình với đồng minh, xa kẻ thù

Hàm đánh giá vị trí có thể có ba yếu tố như vậy:

Score = Proximity to resources (closer yields a higher score) + 
terrain elevation (higher yields higher score) + 
proximity to allies (closer is better) + 
proximity to enemies (farther is better)

Và bất kỳ hình lục giác nào có điểm số cao hơn, sẽ là nơi thành phố được xây dựng. Thông tin thêm về các chức năng đánh giá có thể được tìm thấy ở đây .

Tôi cho rằng AI chiến lược cũng có một loạt các chiến lược giả định sẵn trong trò chơi tùy thuộc vào loại chiến thắng mà AI sẽ giành được.

4. AI chiến lược lớn

Đứng đầu nấc thang là AI chiến lược vĩ đại, quyết định làm thế nào để chiến thắng trò chơi.

Tôi nghĩ rằng đây có lẽ là đơn giản nhất trong số đó, và nó mang lại ấn tượng rằng nó ấn tượng hơn thực tế. Trong một trò chơi như thế này, sẽ chỉ có một số lượng hữu hạn các loại chiến thắng. Bài báo đề cập đến một chiến thắng Chinh phục, giả sử rằng cũng có những chiến thắng của Liên minh, v.v., nó có thể đơn giản như chọn ngẫu nhiên một trong các loại và sau đó chuyển nó sang các hệ thống khác.

EDIT: Tất nhiên như được chỉ ra bởi DampeS8N, loại bản đồ có thể đưa ra điều kiện chiến thắng tốt nhất, trong trường hợp đó có thể được mã hóa bởi các nhà thiết kế hoặc một số loại chức năng đánh giá bao gồm các biến khác nhau.

Tóm tắt
Tôi nghĩ điều thực sự quan trọng cần lưu ý về loại hệ thống này là cách thức các hệ thống con được xếp lớp, chúng thực sự không cần phải giao tiếp nhiều với nhau. Nó trông giống như một kiến ​​trúc từ trên xuống với các thành phần được ghép lỏng lẻo. Từ quan điểm thiết kế kỹ thuật, nó sạch sẽ và linh hoạt và có lẽ lấy cảm hứng từ Hành vi mới nổi và / hoặc Kiến trúc dự phòng .

Tôi thực sự xin lỗi về độ dài của bài đăng này, nó đã biến thành một chút quái thú :(

Dù bằng cách nào, tôi hy vọng nó sẽ giúp!


2
"Tôi nghĩ rằng đây có lẽ là đơn giản nhất trong số đó, và nó mang lại ấn tượng rằng nó ấn tượng hơn thực tế." Tôi sẽ không quá chắc chắn. Có một sự khác biệt giữa việc chỉ quyết định chiến thắng chinh phục và quyết định tuyên chiến với ai, liệu chúng ta có mở rộng quá mức và cần kiện vì hòa bình hay không, mục tiêu nào là yếu nhất để tấn công, đơn vị nào chúng ta cần xây dựng, giành lấy các nguồn tài nguyên chiến lược đúng đắn để làm cho quân đội của chúng tôi mạnh mẽ hơn, việc tìm kiếm một cách để gây ra hai kẻ thù để chiến đấu mỗi khác, vv Giai đoạn này là một nhiều hơn phức tạp hơn bạn cung cấp cho nó tín dụng cho.
Nicol Bolas

1
Wow, và tôi nghĩ rằng câu trả lời của tôi đã nhận được một chút dài. LOL. Chương trinh hay.
DampeS8N

1
Một điều đáng chú ý là Civil hoàn toàn không có điều kiện chiến thắng đơn giản. Có rất nhiều cách để giành chiến thắng. Xây dựng kỳ quan, tiến bộ khoa học, chinh phục, ngoại giao, vân vân. Chọn những thứ cần đi thường rất khó khăn và có thể thay đổi dựa trên các điều kiện của bản đồ. Bạn có thể phát hiện ra, ví dụ, người mà bạn vừa gặp đang đi trước bạn trong khoa học, và bạn sẽ phải từ bỏ con đường đó và giải quyết cho một người mới. Thường thì thành công đến từ việc giữ cho các lựa chọn của bạn mở càng lâu càng tốt.
DampeS8N

@NicolBolas rất có thể phức tạp hơn thế, nhưng tất cả những điểm bạn đã thực hiện có vẻ là trách nhiệm cho các cấp thấp hơn của AI. Quyết định tuyên chiến với ai -> Hoạt động. Mục tiêu nào là yếu nhất để tấn công -> Hoạt động / Chiến thuật. Có được nguồn lực phù hợp -> Hoạt động / Chiến lược. Điều này hoàn toàn được đoán, nhưng sẽ có ý nghĩa khi các hệ thống thấp hơn chịu trách nhiệm cho các chiến lược cụ thể để đảm bảo mức độ khớp nối thấp nhất.
Ray Dey

1
@RayDey: Mức độ cao nhất của AI cần phải được tham gia vào những thứ như thu thập tài nguyên, bởi vì nó cần phải quyết định làm thế nào để có được nó. Ngoại giao có thể có được nó. Mở rộng đến tài nguyên có thể có được nó. Cấp độ hoạt động không phải là nơi thích hợp để quyết định liệu người ta có nên chiến đấu với nó hay không so với các chiến thuật khác. Khớp nối là một điều cần thiết cho một trò chơi như Civilization; tất cả mọi thứ ảnh hưởng đến mọi thứ khác trong trò chơi đó. Bạn không thể có một AI hiệu quả để đưa ra quyết định mà không cần nhiều sự kết hợp. Mặc dù điều đó có thể giải thích tại sao AI của Civil V ... không đặc biệt sáng sủa;)
Nicol Bolas

9

Nói chung, AI trong các trò chơi không nên được coi là 'phức tạp', đó là tất cả về việc đạt được những gì bạn muốn với nỗ lực ít nhất có thể. Tên của trò chơi là Xuất hiện.

Trong trường hợp này, khái niệm cơ bản của bạn là sai. Cả 4 hệ thống này không cần phải làm việc cùng nhau. Họ chỉ cần trông giống như họ làm. Họ cũng có thể bị tước đi nhiều hơn bạn nghĩ.

Bạn cũng đã đảo ngược thứ tự khó khăn. Thành phần khó nhất của Civil AI là AI chiến thuật, theo sát là Hoạt động. Chiến lược có lẽ rất đơn giản, và AI vĩ đại có lẽ vẫn đơn giản hơn.

Giao tiếp giữa các thành phần giống như một hệ thống lẩm cẩm và ít giống như giao tiếp thực sự. Từ cấp độ cao đến cấp độ thấp, nó sẽ trông như thế này:

Đại AI

đánh giá tình trạng của bản đồ. Với kiến ​​thức mà AI có (có thể là tất cả mọi thứ hoặc chỉ là những gì nó sẽ có nếu là người chơi), nó quyết định mục tiêu cuối cùng là nhanh nhất để đạt được. Nó có khả năng là một cỗ máy trạng thái hữu hạn thực hiện một số con số giòn và chọn một mục tiêu. Có thể nó là một cái gì đó kỳ lạ hơn; một thuật toán di truyền hoặc có thể là một doohickey dựa trên Bayes . Sau đó, nó càu nhàu một thông điệp như "khoa học hơn".

Chiến lược AI

sau đó xem xét những gì nó có sẵn để làm việc với việc sử dụng nhiều thông tin tương tự. Nó đi về việc cố gắng đáp ứng mục tiêu tổng thể đó, nhưng cũng lo lắng về các khía cạnh chi tiết hơn của trò chơi. Tôi có chiến tranh không? Tôi có người chết đói không? Sớm. Nó có lẽ cũng là một cỗ máy trạng thái hữu hạn , có thể là Logic Mờ (thực sự chỉ là một sự tiến hóa trên một FSM.) Hãy giả sử rằng đó là một FSM đơn giản. Nó sẽ hỏi các câu hỏi trên theo thứ tự trong đó, với các tiêu chí nhất định, nó sẽ quyết định những điều khác nhau cần phải xảy ra trong vòng này. Tôi đang có chiến tranh, phân bổ tiền cho huấn luyện binh lính. Người của tôi đang chết đói, xây dựng một vựa lúa ở đây hơn là xây dựng một cái gì đó khoa học.

Chọn đơn vị nào để xây dựng có thể là một phần của Strat AI hoặc Op AI tùy thuộc vào cách chúng tôi chia nhỏ mọi thứ.

Op AI

sẽ đưa các đơn vị có sẵn và sẽ chỉ định chúng di chuyển vào các mặt trận chiến tranh khác nhau. Nó sẽ quyết định hình dạng tổng thể của cuộc xung đột, nơi các đơn vị mới sẽ đứng đầu sau khi chúng được triển khai. Nó có lẽ cũng là một FSM. Nó có thể nhận thấy rằng kẻ thù ở Mặt trận A đang tấn công với các đơn vị yếu chống lại Đơn vị B, và sẽ gửi thêm Đơn vị B ở đó, thay vì cho Mặt trận khác mạnh với Đơn vị B. Nó sẽ phát lệnh chung cho các đơn vị lớn. Tấn công theo ý muốn. Rút lui. Sớm.

AI chiến thuật

là đơn vị cụ thể. Mỗi loại đơn vị sẽ phản ứng khác nhau theo thứ tự chung. Một đơn vị có ý định tự sát, có thể bỏ qua lệnh rút lui. Các đơn vị wuss có thể rút lui ngay cả khi được yêu cầu chiến đấu. Thường thì rất nhẹ về loại điều này. Nói chung tất cả các đơn vị trong Civil tuân theo mệnh lệnh của họ. Với thứ tự lớn hơn họ đang ở, họ (xem một mẫu ở đây?) Một FSM. Tôi có bị thương không? Tôi nên trở ra và chữa lành. Tôi có lợi thế ở vị trí này không? Tấn công. Tôi có quá gần để tấn công không? Rút lui. Và sự phức tạp của FSM này không cần nhiều hơn 3 điều đó để có hiệu quả và thuyết phục như thông minh.

Điều này có thể được tăng cường?

Phải, tất nhiên. Câu hỏi là nếu người chơi sẽ chú ý. Và 99% thời gian họ sẽ không.

Bây giờ, đây là tất cả quyết định làm AI. Có các hệ thống con AI khác đang chơi ở đây. Có A * hoặc một số thuật toán tìm đường khác cho phép các đơn vị tìm đường đi ngắn nhất đến một vị trí. Có các thuật toán để tìm vị trí tốt nhất để bắt đầu các thành phố mới. Sớm. Thường được nhóm với AI, và thường thực sự phức tạp hơn phần 'suy nghĩ' của AI. Trên thực tế, mã để tìm câu trả lời cho các câu hỏi mà FSM cần hỏi thường là các đơn đặt hàng có độ lớn phức tạp hơn so với chính FSM. Làm thế nào chính xác một người quyết định rằng


Doohicky dựa trên Bayes - tuyệt vời
Brian Broom
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.