AI Game Kompleks untuk Game Strategi Berbasis Giliran

26

Saya sedang melakukan penelitian untuk proyek game Strategi berbasis giliran dan mencari sumber daya yang baik tentang topik ini. Gim ini adalah gim perang biasa di mana negara-negara dapat saling bertarung, mengerahkan unit, dan meminta unit-unit ini bergerak pada tilemap heksagonal, saling serang, dll.

Saya sangat tertarik dengan bagaimana AI Peradaban V diatur! Menurut Wikipedia gim ini menggunakan empat sistem AI berbeda untuk berbagai lapisan AI gim:

  • AI taktis mengontrol unit individu
  • AI operasional mengawasi seluruh front perang
  • AI strategis mengelola seluruh kekaisaran
  • AI strategis besar menetapkan tujuan jangka panjang dan menentukan bagaimana memenangkan permainan

Secara konsep ini sepertinya masuk akal untuk mencapai AI yang kompleks dan membuat saya penasaran untuk mencari tahu tentang bagaimana sistem AI yang berbeda ini bekerja (dan bekerja bersama). AI taktis mungkin adalah yang paling mudah dipahami karena menangani pengambilan keputusan untuk satu unit (bergerak, menyerang, memperbaiki, mundur, dll.) Tetapi saya pikir sistem AI lainnya adalah tempat yang benar-benar menarik. Misalnya apa yang dilakukan AI operasional dan bagaimana melakukannya? Saya yakin ini adalah rahasia yang paling baik disimpan oleh Firaxis Games, tetapi akan lebih baik untuk memulai diskusi tentang hal ini untuk mengetahui lebih banyak tentang hal itu.

Juga jika ada yang tahu buku bagus yang menangani game strategi turn-based AI, akan lebih baik untuk mengetahui. Jelas ini adalah topik yang jarang diunggulkan di web. Saya mendapat "Programming Game AI by Example" tetapi buku itu lebih tentang AI agen tunggal daripada AI berorientasi tingkat tinggi.

BadmintonCat
sumber

Jawaban:

19

Sementara saya setuju dengan paragraf pembuka DampeS8N (yaitu game AI hanya perlu cukup pintar untuk membuat pemain berpikir bahwa itu pintar), saya merasa bahwa pertanyaan ini perlu sedikit lebih banyak elaborasi. Struktur data yang digunakan bisa FSM untuk semua tingkatan, tetapi itu tidak benar-benar menjawab pertanyaan tentang bagaimana sistem individu bekerja.

Penafian: Saya jarang memainkan game Civilization sehingga pemahaman saya tentang gameplay terbatas. Jika ada kesalahan yang jelas, saya minta maaf. Harap perbaiki saya, dan saya akan dengan senang hati mengedit.

Saya akan mengambil kutipan dari Artikel IGN asli .

1. AI taktis

Pada level terendah, AI taktis menggunakan pasukan yang ada untuk memenangkan pertempuran pada skala lokal.

Ini mungkin bagian paling standar dari subsistem. Ada cara tak terbatas untuk melakukan ini dari menggunakan FSM, Behavior Trees (atau bahkan melakukan tindakan acak, tergantung pada kesulitan AI).

Namun, karena ini adalah permainan berbasis giliran, mirip dengan Risiko, saya pikir apa yang lebih mungkin terjadi adalah bahwa setiap unit diberi skor. Kemudian ada pengganda yang melekat pada skor ini tergantung pada variabel yang berbeda (kesetiaan, bonus medan, dll).

Hasilnya kemudian dihitung dengan sesuatu seperti ini:

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

Masuk akal bahwa AI akan mencoba dan memaksimalkan skor ini ketika dalam pertempuran.

Tambahkan nilai epsilon (mis. Peluang kegagalan / keberhasilan acak kecil) dan Anda memiliki AI yang tampak lumayan (tidak ada yang menginginkan lawan yang sempurna, itu tidak menyenangkan!).

2. AI Operasional

Selangkah lebih maju dari itu, AI operasional memilih pertempuran mana yang harus dilawan dan memastikan bahwa pasukan yang diperlukan tersedia.

Saya pikir ada beberapa poin untuk ini:

  • Mengevaluasi kekuatan saat ini
  • Penguatan unit
  • Mengevaluasi perkelahian mana yang harus dipilih / dihindari

Mengevaluasi Kekuatan Saat Ini - Ini hanya menjerit Peta Pengaruh kepada saya. Itu dapat dengan mudah direpresentasikan pada hex grid. Karena subsistem ini berorientasi pada pertempuran, nilai-nilai pengaruh dapat mewakili nilai-nilai kekuatan dari setiap unit di sekitarnya. Jika Anda memiliki pasukan besar yang fokus pada area kecil segi enam, nilai pengaruh akan sangat besar dan AI operasional akan mempertimbangkan hal ini saat mengevaluasi perkelahian yang harus dipilih. Jangan lupa, nilai-nilai pengaruh tentara lawan juga akan dihitung. Ini memungkinkan AI operasional untuk memprediksi potensi ancaman yang masuk.

Bala bantuan unit - Dengan menerima informasi tentang faksi yang berseberangan dari peta pengaruh, AI dapat menentukan unit mana yang paling terancam. AI kemudian dapat mengeluarkan perintah untuk menutup unit untuk pergi dan memperkuat pihak yang terancam.

Mengevaluasi perkelahian mana yang harus dipilih / dihindari - Beberapa situasi dapat terjadi di sini. Jika AI mendeteksi unit berada di bawah ancaman DAN tidak ada unit terdekat untuk membantunya bisa a) memutuskan untuk mengorbankan unit (jika mereka hanya infanteri rendah, bukan jenderal yang tak tergantikan, misalnya) atau b) Pesan unit untuk mundur. Sebaliknya, jika AI mendeteksi unit musuh yang lemah di dekat pasukan, itu bisa memerintahkan unit untuk mengeluarkan musuh ini.

Berikut makalah yang layak yang memanfaatkan peta pengaruh dalam game Strategi Waktu Nyata.

3. AI Strategis

Bergerak lebih tinggi lagi, AI strategis mengelola kekaisaran secara keseluruhan, dengan fokus pada di mana membangun kota dan apa yang harus dilakukan dengan mereka.

"Di mana saya harus membangun kota?" hanya terdengar seperti evaluasi posisi. Program catur dan permainan lain menggunakannya untuk menentukan keinginan posisi tertentu. Sebagai contoh:

Hex A: Dekat dengan sumber daya, di medan tinggi, dekat dengan sekutu, dekat dengan musuh Hex B: Jauh dari sumber daya, di medan tingkat menengah, jarak menengah dari sekutu, jauh dari musuh

Fungsi evaluasi posisi dapat mengambil tiga faktor ini seperti:

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)

Dan hexagon mana pun yang memiliki skor lebih tinggi, akan berada di tempat kota itu dibangun. Informasi lebih lanjut tentang fungsi evaluasi dapat ditemukan di sini .

Saya rasa AI strategis juga memiliki banyak strategi pseudo-prebaked dalam permainan tergantung pada jenis kemenangan AI akan terjadi.

4. Grand Strategic AI

Di puncak tangga adalah AI strategis besar, yang memutuskan bagaimana memenangkan permainan.

Saya pikir ini mungkin yang paling sederhana dari kelompok itu, dan memberi kesan bahwa itu lebih mengesankan daripada yang sebenarnya. Dalam permainan seperti ini, hanya akan ada sejumlah tipe kemenangan yang terbatas. Artikel itu menyebutkan kemenangan Penaklukan, dengan asumsi bahwa ada juga kemenangan Aliansi, dll, bisa semudah memilih secara acak salah satu jenis dan kemudian meneruskannya ke sistem lain.

EDIT: Tentu saja seperti yang ditunjukkan oleh DampeS8N, jenis peta dapat menentukan kondisi kemenangan terbaik yang harus dicapai, dalam hal ini dapat dikodekan oleh perancang atau semacam fungsi evaluasi yang melibatkan berbagai variabel.

Ringkasan
Saya pikir apa yang benar-benar penting untuk dicatat tentang sistem semacam ini adalah bahwa cara subsistem berlapis, mereka sebenarnya tidak perlu berkomunikasi banyak dengan satu sama lain. Tampaknya menjadi arsitektur top-down dengan komponen yang digabungkan secara longgar. Dari sudut pandang desain teknis bersih dan fleksibel dan mungkin mengambil inspirasi dari Emergent Behavior dan / atau Subsumption Architecture .

Saya benar-benar minta maaf atas panjang posting ini, itu berubah menjadi sedikit binatang :(

Either way, saya harap ini membantu!

Ray Dey
sumber
2
"Saya pikir ini mungkin yang paling sederhana dari kelompok itu, dan memberi kesan bahwa itu lebih mengesankan daripada yang sebenarnya." Saya tidak akan terlalu yakin. Ada perbedaan antara hanya memutuskan untuk pergi untuk kemenangan penaklukan dan memutuskan siapa yang menyatakan perang, apakah kita diperpanjang dan perlu menuntut perdamaian, target mana yang paling lemah untuk diserang, unit apa yang perlu kita bangun, perolehan sumber daya strategis yang tepat untuk membuat pasukan kita lebih kuat, menemukan cara untuk menyebabkan dua musuh saling bertarung, dll. Fase ini jauh lebih rumit daripada yang Anda berikan penghargaan.
Nicol Bolas
1
Wow, dan saya pikir jawaban saya agak panjang. LOL. Pertunjukan yang bagus.
DampeS8N
1
Satu hal yang patut dicatat adalah bahwa Civ sama sekali tidak memiliki kondisi kemenangan yang sederhana. Ada banyak cara untuk menang. Membangun keajaiban, memajukan ilmu pengetahuan, penaklukan, diplomatik, dan sebagainya. Memilih yang mana untuk pergi seringkali sangat sulit, dan dapat berubah berdasarkan kondisi peta. Anda dapat menemukan, misalnya, bahwa seseorang yang baru saja Anda temui jauh di depan Anda dalam sains, dan Anda harus meninggalkan jalan itu dan menerima yang baru. Seringkali sukses datang untuk menjaga pilihan Anda terbuka selama Anda bisa.
DampeS8N
@NicolBolas mungkin lebih kompleks dari itu, tetapi semua poin yang Anda buat menjadi tanggung jawab untuk level AI yang lebih rendah. Memutuskan siapa yang akan menyatakan perang terhadap -> Operasional. Target mana yang paling lemah untuk diserang -> Operasional / Taktis. Memperoleh sumber daya yang tepat -> Operasional / Strategis. Ini sepenuhnya ditebak, tetapi masuk akal jika sistem yang lebih rendah bertanggung jawab atas strategi khusus untuk memastikan tingkat penggandaan terendah.
Ray Dey
1
@RayDey: Level AI tertinggi perlu dilibatkan dalam hal-hal seperti akuisisi sumber daya, karena ia perlu memutuskan bagaimana cara mendapatkannya. Diplomasi bisa mendapatkannya. Memperluas sumber daya bisa mendapatkannya. Level Operasional bukanlah tempat yang tepat untuk memutuskan apakah seseorang harus memperjuangkannya sebagai lawan dari taktik lain. Coupling adalah keharusan untuk permainan seperti Peradaban; semuanya memengaruhi segalanya dalam game itu. Anda tidak dapat memiliki AI efektif yang membuat keputusan tanpa banyak penggandengan. Meskipun itu mungkin menjelaskan mengapa AI Civ V adalah ... tidak terlalu cerah;)
Nicol Bolas
9

Secara umum AI dalam game tidak boleh dianggap sebagai 'kompleks', ini semua tentang mendapatkan apa yang Anda inginkan dengan upaya seminimal mungkin. Nama gim ini adalah Emergence.

Dalam hal ini, konseptualisasi fundamental Anda salah. Keempat sistem ini tidak perlu bekerja sama sekali. Mereka hanya perlu terlihat seperti mereka. Mereka juga bisa lebih banyak dilucuti daripada yang Anda pikir mereka perlu.

Anda juga membalik urutan kesulitan. Komponen yang paling sulit dari AI AI adalah taktis AI, diikuti oleh Operasional. Strategis mungkin sangat sederhana, dan grand AI mungkin masih lebih sederhana.

Komunikasi antar komponen lebih seperti sistem gerutuan dan kurang seperti komunikasi nyata. Dari level tinggi ke level rendah akan terlihat seperti ini:

Grand AI

menilai keadaan peta. Mengingat pengetahuan yang dimiliki AI (yang bisa menjadi segalanya atau hanya apa yang akan dimiliki jika itu pemain), ia menentukan tujuan akhir mana yang paling cepat untuk dicapai. Kemungkinan mesin Finite-state yang melakukan sejumlah angka dan memilih tujuan. Mungkin itu adalah sesuatu yang lebih eksotis; sebuah Algoritma Genetika atau mungkin alat kecil berbasis Bayesian . Itu kemudian menggerutu pesan seperti "lebih banyak sains."

Strat AI

kemudian lihat apa yang tersedia untuk bekerja dengan menggunakan banyak informasi yang sama. Ini tentang mencoba memenuhi tujuan keseluruhan, tetapi juga khawatir tentang aspek yang lebih rinci dari permainan. Apakah saya berperang? Apakah saya membuat orang kelaparan? begitu seterusnya. Mungkin juga mesin negara-terbatas , mungkin Fuzzy Logic (yang benar-benar hanya sebuah evolusi pada FSM.) Mari kita asumsikan itu adalah FSM sederhana. Ini akan menanyakan pertanyaan-pertanyaan di atas dalam urutan di mana, diberikan kriteria tertentu, itu akan memutuskan hal-hal yang berbeda perlu terjadi putaran ini. Saya sedang berperang, mengalokasikan uang untuk melatih tentara. Orang-orang saya kelaparan, membangun lumbung di sini daripada membangun sesuatu yang ilmiah.

Memilih unit apa yang akan dibangun mungkin menjadi bagian dari Strat AI atau Op AI tergantung pada bagaimana kita membagi semuanya.

Op AI

akan mengambil unit yang tersedia dan akan menugaskan mereka untuk pindah ke medan perang yang berbeda. Ini akan menentukan bentuk keseluruhan konflik, di mana unit baru akan menuju begitu mereka dikerahkan. Mungkin juga FSM. Mungkin melihat bahwa musuh di Front A menyerang dengan unit yang lemah terhadap Unit B, dan akan mengirim lebih banyak Unit B di sana, daripada ke Front lainnya yang kuat terhadap Unit B. Itu akan mengeluarkan perintah umum ke unit pada umumnya. Serang sesuka hati. Mundur. Sebagainya.

AI taktis

adalah unit spesifik. Setiap jenis unit akan bereaksi berbeda terhadap pesanan umum. Unit yang dimaksudkan untuk bunuh diri, dapat mengabaikan perintah mundur. Unit-unit yang berselisih mungkin mundur bahkan ketika disuruh bertarung. Civ biasanya sangat ringan pada hal semacam ini. Umumnya semua unit di Civ mengikuti perintah mereka. Mengingat urutan yang lebih besar mereka di bawah, mereka (lihat pola di sini?) FSM. Apakah saya terluka? Saya harus mundur dan menyembuhkan. Apakah saya mendapat keuntungan di lokasi ini? Menyerang. Apakah saya terlalu dekat untuk menyerang? Mundur. Dan kerumitan FSM ini tidak perlu lebih dari 3 hal untuk menjadi efektif dan meyakinkan sebagai kecerdasan.

Bisakah ini ditingkatkan?

Ya tentu saja. Pertanyaannya adalah apakah para pemain akan memperhatikan. Dan 99% dari waktu mereka tidak akan.

Sekarang, ini semua AI pengambilan keputusan. Ada subsistem AI lain yang berperan di sini. Ada A * atau algoritma pencarian jalur lain yang memungkinkan unit menemukan jalur terpendek ke suatu lokasi. Ada algoritma untuk menemukan lokasi terbaik untuk memulai kota baru. Sebagainya. Sering ada yang dikelompokkan dengan AI, dan seringkali benar-benar lebih kompleks daripada bagian 'berpikir' dari AI. Bahkan, kode untuk menemukan jawaban atas pertanyaan yang perlu diajukan FSM sering kali lipat lebih kompleks daripada FSM itu sendiri. Bagaimana tepatnya seseorang memutuskan itu

DampeS8N
sumber
Doohicky berbasis Bayesian - mengagumkan
Brian Broom