Những hành vi nào nên được thực hiện để tạo ra một chiến binh AI AI không hoàn hảo?


19

Khi chế tạo một chiến binh npc, thật dễ dàng phải làm gì để có được một deathmachine robot bằng cách tối ưu hóa các chiến thuật chiến đấu, thời gian và các loại tấn công, nhưng khó hơn (và thú vị hơn trong một cuộc chiến) để có được một kẻ thù bình dị, không thể đoán trước. Những hành vi (thuật toán?) Hữu ích cho việc tạo ra một kẻ thù hữu cơ hơn, độc đáo hơn?

Chỉnh sửa: Trường hợp sử dụng cụ thể của tôi là với những kẻ thù giống MMO, ví dụ World of Warcraft, mặc dù có ít đồ họa hơn. Lưu ý rằng điều đó có nghĩa là cả kẻ thù của con người và vô nhân đạo (động vật, quái vật, v.v.)

Câu trả lời:


14

Có một bài viết rất thú vị về vấn đề trên Gamasutra: Những sai lầm thông minh: Cách kết hợp sự ngu ngốc vào Mã AI của bạn , bởi Mick West.

Bài viết này nói về một trò chơi Pool AI. Khi thực hiện một AI như vậy, thật dễ dàng để biến nó thành một quả bóng trong mỗi lần chụp. Một cách đơn giản để làm cho AI bớt "thông minh" hơn, như được đề xuất trong các câu trả lời khác, để thêm một yếu tố ngẫu nhiên vào tính toán, khiến AI bỏ lỡ nhiều hơn.

Nhưng có hai lỗ hổng lớn với cách tiếp cận như vậy. Đầu tiên, không thể đoán trước được. Đối với một người chơi đang chơi ở chế độ "Dễ", không thể chấp nhận rằng AI sẽ "may mắn". Điều gì sẽ xảy ra nếu yếu tố ngẫu nhiên của bạn khiến AI thực hiện một cú đánh thậm chí tốt hơn, đánh một quả bóng có giá trị hơn hoặc thực hiện một cú combo? Bạn không biết điều gì sẽ xảy ra và may mắn không phải là một lựa chọn cho AI ở chế độ dễ.

Một lỗ hổng khác là người chơi sẽ cố gắng xác định một mô hình trong các hành vi AI. Và với một yếu tố ngẫu nhiên đơn giản, không có mô hình. Nhưng điều đó không có nghĩa là người chơi sẽ không nhìn thấy bất kỳ mô hình nào, hoàn toàn ngược lại, trên thực tế. Ngay khi AI gặp may, người chơi sẽ thấy một chiến lược trong hành vi của nó. Trong bài viết, người chơi đang phàn nàn về việc AI chơi chiến lược vị trí. Khi chỉ có một yếu tố ngẫu nhiên trong độ chính xác góc .

Theo quan điểm của tôi, sau khi đọc bài viết mở mắt này, một AI không hoàn hảo không bao giờ nên sử dụng ngẫu nhiên hóa như một yếu tố đơn giản hóa. Nó hoàn toàn ngược lại. Một AI dễ dàng hơn nên thông minh hơn, nhưng cố gắng giúp người chơi.

Trong ví dụ về trò chơi Pool pool, tùy chọn tốt nhất để triển khai AI "chế độ dễ dàng" trên thực tế là loại bỏ tất cả các yếu tố ngẫu nhiên và thêm chiến lược định vị. AI sẽ cố gắng đánh những quả bóng để chuẩn bị một cú đánh dễ dàng và tuyệt vời cho người chơi .

Bằng cách này, người chơi sẽ nghĩ rằng mình đã gặp may mắn. Và đó là những gì bạn mong đợi cho một trò chơi khi chơi nó dễ dàng.


1
Nó cũng sẽ hữu ích cho AI để nhớ những gì người chơi có thể tận dụng. Các nhà phát triển có thể nghĩ rằng anh ta có một 'nồi dễ dàng' nhưng nếu anh ta không thể sử dụng nó, chiến thuật tình huống sẽ ít được sử dụng bởi AI. Điều này cũng có lợi, bởi vì bạn có thể huấn luyện người chơi, nhớ những gì anh ta không thể làm và cố tình khai thác điều này thường xuyên cho đến khi anh ta có thể, theo cách này, người chơi không buồn chán, không nản lòng.
Jonathan Connell

Mặc dù tôi đồng ý không sử dụng ngẫu nhiên, tôi không đồng ý với "giúp đỡ người chơi": điều đó sẽ giống như gian lận, chỉ tệ hơn nhiều vì bạn sẽ nói dối người chơi.
o0 '.

@ Lo'oris: Chà, tôi không xem đó là lời nói dối. Khi người chơi bảo trò chơi dễ dàng với anh ta, anh ta hy vọng trò chơi sẽ nhẹ nhàng. Khi bạn đang chơi một trò chơi, bạn thực sự rất thân với một người bạn mới khám phá ra nó, tôi cảm thấy khá ổn khi cho anh ta cơ hội. Nó làm cho trò chơi thú vị hơn cho mọi người.
Tyn

1
Có một bài viết hay trên blog của Shawn Hargreaves về sự ngẫu nhiên và khả năng con người phát hiện ra các mô hình một cách ngẫu nhiên. Điều này sẽ dịch tấn, trong trường hợp này, một người chơi đánh giá sai chiến thuật của một người chơi AI.
Jonathan Connell

1
Trên thực tế tôi nghĩ ngẫu nhiên về độ chính xác là một cách tốt để đi. Với một cầu thủ thực sự không tuyệt vời như vậy, đôi khi anh ta sẽ phạm lỗi và đánh bóng tốt hơn.
Tấn công

10

Khái niệm chính là để tránh cho NPC "kiến thức hoàn hảo".

  • Tỷ lệ sai ngẫu nhiên trên bất kỳ quyết định hoặc hành động nào liên quan đến tính toán. ví dụ rõ ràng là nhắm (ví dụ: lính bắn tỉa Stormtrooper). Nếu họ không luôn đánh bạn, điều đó thực tế hơn.
  • Đường ngắm ... nếu họ không thể nhìn thấy bạn, nó có thể tạo ra một trò chơi thú vị về mèo và chuột.
  • Chiến thuật nhóm, tùy thuộc vào loại trò chơi của bạn, kẻ thù thích nghi với tình huống có thể thú vị hơn. Ví dụ: nếu bạn bị bắn vào, bạn sẽ không bịt mắt một cách mù quáng, bạn sẽ che đậy cho đến khi lửa đến. Hoặc có lẽ bạn sẽ cảm thấy thoải mái hơn khi lao vào nếu bạn có đồng đội ở gần ... bạn có thể mô phỏng những hành vi đó để khiến NPC hành xử như thể họ còn sống.

Tôi chắc chắn sẽ có rất nhiều ví dụ sẽ được đưa ra, có lẽ bạn có thể cho chúng tôi biết về trò chơi của bạn và chúng tôi có thể nhận được cụ thể hơn :-)


4

Một cách nhanh chóng để khiến một AI hoàn hảo có thể chiến đấu là khiến nó đưa ra quyết định không hoàn hảo bằng cách thêm một số 'nhiễu' vào đầu vào hoặc đầu ra của nó. Bởi tiếng ồn tôi có nghĩa là một số yếu tố ngẫu nhiên.

Đây là một ví dụ nhỏ cho đầu ra:

  • Thuật toán hoàn hảo mang lại ba hành động có thể được xếp hạng với một số điểm.
  • Thêm một giá trị ngẫu nhiên cho mỗi điểm.
  • Chọn điểm số tốt nhất.

Dưới đây là một số ý tưởng cho đầu vào:

  • Nếu các hành động dựa trên sức khỏe của đối thủ, hãy thêm một yếu tố ngẫu nhiên (giả sử +/- 10 cho thanh sức khỏe 0-100) vào trạng thái cảm nhận bằng AI.
  • Tương tự đối với đánh giá hành động, nếu AI biết một số cuộc tấn công mạnh hơn các hành động khác, hãy cộng / trừ ngẫu nhiên một số giá trị ở đó.

Một điều rõ ràng cần xem xét là tốc độ của AI. Trong hầu hết các trò chơi, AI có thể phản ứng NHIỀU nhanh hơn con người (đặc biệt là trong chiến đấu) và thực hiện đa nhiệm rõ ràng (rất dễ thấy trong các trò chơi RTS). Vì vậy, bạn phải hành động theo cách đó, bằng cách giữ cho AI chậm một chút (có thể thích nghi như vậy) và giới hạn số lượng công việc có thể làm trong một khung thời gian xác định (tức là một hành động mỗi nửa giây).

Hy vọng điều này sẽ giúp và may mắn!


3

Thật khó để đưa ra một câu trả lời trực tiếp hữu ích mà không biết chính xác những gì bạn đang cố gắng làm.

Tôi có hai điều để nói về chủ đề có thể giúp bạn hiểu.

Điều đầu tiên (và đây là điều quan trọng nhất), nếu bạn đang cố gắng làm cho kẻ thù cảm thấy thú vị hơn và con người hơn thì chiến thuật chiến đấu của bạn là không liên quan. Bí quyết để khiến người chơi "tin" kẻ thù còn sống là sử dụng hoạt hình, âm thanh và các chi tiết nhỏ để ám chỉ hành vi của con người. AI hoàn hảo có thể đi bộ quanh một góc, nhìn thấy người chơi và bắn. Một AI của con người có thể đi quanh một góc, nhìn thấy một người chơi, có một cái nhìn ngạc nhiên trên khuôn mặt của anh ta và hét lên trong báo động, và bắn. Người đầu tiên có vẻ như robot. Cái thứ hai có vẻ như con người. Cả hai đều sử dụng AI giống hệt nhau theo mọi cách, ngoại trừ việc chèn hình ảnh động ngay trước khi quay (hoặc, để giữ cho hành vi chiến thuật giống nhau, trong khi chụp).

Thứ hai, tránh ngẫu nhiên. Người chơi không đánh giá cao nó nhiều như các nhà thiết kế muốn nghĩ rằng họ sẽ làm. Người chơi không thấy "máy tính tạo ra 1 trên 100, tiếp theo là 5, 3 và 4, vì vậy các yếu tố lỗi trong bốn lần chụp gần nhất chỉ là 1%, 5%, 3% và 4% và đó là tại sao bạn chết trong nửa giây vòng này. " Người chơi chỉ nhìn thấy những kẻ thù đôi khi rất nhớ và lần khác đóng đinh chúng liên tục mà không có lý do rõ ràng, điều này gây khó chịu vô cùng. Thiết kế trò chơi tốt phần lớn là xây dựng các mô hình mà người chơi có thểquan sát, học hỏi và đánh bại, và làm cho thành công của người chơi dựa trên sự đánh giá và kỹ năng và trực giác của chính anh ta hơn là làm cho nó về việc người chơi có gặp may mắn hay không. Sự thôi thúc ngẫu nhiên xuất phát từ kinh nghiệm với các trò chơi bóng bàn và trò chơi đánh bạc, cả hai đều là phương tiện cực kỳ khác biệt so với trò chơi video (và những gì hoạt động trong một phương tiện thường không có ý nghĩa trong một phương tiện khác).


1

Tôi nhớ tại khóa học AI của chúng tôi ở trường đại học có một chủ đề về việc làm cho AI trở nên "người" hơn và kém hoàn hảo hơn. Đó là nhiều năm trước vì vậy tôi chỉ nhớ một vài gạch đầu dòng từ đầu của tôi.

  • Sử dụng "thư viện di chuyển". Nếu bạn đang chiến đấu với một con Orc, hãy cho anh ta nói 3 thói quen chiến đấu mà họ lặp lại mỗi giờ và sau đó. Điều này làm cho các chiến đấu trở nên dễ dàng hơn bằng cách dễ dự đoán hơn, dường như trái ngược với những gì bạn muốn, nhưng vẫn khiến AI trở thành "cỗ máy hoàn hảo" và "không lặp đi lặp lại cùng một động tác".
  • Tối thiểu hóa, nếu có thể. Nếu, như bạn nói, AI của bạn dựa trên việc tính toán nước đi tốt nhất, hãy đặt giới hạn nhân tạo cho phép tính này. Thực hiện tìm kiếm nông hơn, hoặc giới hạn số bước. Thay vì di chuyển tốt nhất từ ​​trước đến nay, AI sẽ chọn đơn giản là một nước đi tốt thay thế. Điều này có thể thêm rất nhiều sự đa dạng cho hành vi của kẻ thù của bạn, vì có nhiều điều tốt hơn so với các động tác tốt nhất.
  • Mắc lỗi về mục đích Thay vì di chuyển tốt nhất, hãy chọn thứ hai hoặc thứ ba tốt nhất. Hoặc thậm chí chọn một động thái có tiện ích xấu. Điều này có thể giải quyết điểm "không thể đoán trước" của bạn.

Tất nhiên đây chỉ là những lời khuyên chung nên được nghiên cứu và chơi thử cho từng trường hợp, và thực sự có thể làm cho AI của bạn trông thậm chí nhân tạo hơn dự định. Tuy nhiên tôi nghĩ rằng họ là một điểm khởi đầu tốt.


0

Tôi chỉ thấy điều này bật lên và muốn chia sẻ một ý tưởng mà tôi đã sử dụng trong quá khứ.

Giả sử nhân vật có ba bước di chuyển và mỗi điểm được ghi, điểm cao hơn là bước đi tốt hơn. (Các câu trả lời khác nói về việc thêm tiếng ồn để tạo điểm số này.)

  • Tấn công bằng kiếm (30 điểm)
  • Bùa lửa (50 điểm)
  • Phép thuật băng (20 điểm)

Tổng cộng tổng số điểm (100)

Lấy chỉ số thông minh của nhân vật ra khỏi giá trị tối đa có thể cho chỉ số này (giả sử 60 trên 100).

Tạo một số ngẫu nhiên giữa 0 (hoặc một số sàn khác) và tỷ lệ thông minh (0,6), nhân với tổng số điểm (100). Trong ví dụ của chúng tôi, giả sử kết quả là 45.

Bây giờ bạn bắt đầu trừ đi những chuyển động xấu từ giá trị này cho đến khi bạn chạm 0. (Trừ theo thứ tự.)

Đầu tiên, chúng tôi xem xét phép thuật Ice, ghi được 20. 45 - 20 = 25. Đây là trên 0, vì vậy chúng tôi ném phép Ice ra ngoài.

Thứ hai, nhìn vào Tấn công bằng kiếm, trị giá 30 điểm. 25 - 30 = -5. Chúng tôi đạt đến ngưỡng của mình, vì vậy chúng tôi chọn Tấn công bằng hành động dùng kiếm.

Trong hệ thống này, một nhân vật có trí thông minh thấp sẽ không chọn được nước đi tốt nhất. Và một nhân vật có trí thông minh cao thường sẽ chọn cách di chuyển tốt nhất. (Trong ví dụ này, một nhân vật có trí thông minh hoàn hảo chọn cách di chuyển tốt nhất 50% thời gian.)

Thêm một cơ chế sàn vào số ngẫu nhiên sẽ tăng cơ hội lựa chọn di chuyển tốt hơ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.