Saya sedang mengembangkan AI permainan strategi (pikirkan: Final Fantasy Tactics), dan saya mengalami kesulitan untuk mendesain AI. Masalah utama saya adalah menentukan mana yang optimal untuk dilakukan.
Pertama, izinkan saya menggambarkan prioritas tindakan apa yang saya ingin AI lakukan:
Bunuh unit pemain terdekat
Memenuhi arahan utama (membunuh semua unit pemain, membunuh unit target, bertahan selama x putaran)
- Sembuhkan unit pendukung / tuang buffer
Sekarang AI dapat melakukan hal berikut pada gilirannya:
Pindahkan -> {Serangan / Kemampuan / Item} (baik serangan atau kemampuan atau item)
{Attack / Ability / Item} -> Pindahkan
Bergerak lebih dekat (jika target tidak dalam jangkauan)
- {Attack / Ability / Item} (jika bergerak tidak tersedia)
Catatan
Kemampuan memiliki berbagai rentang / efek / biaya / efek. Setiap unit ai mungkin memiliki 5-10 kemampuan untuk dipilih. AI akan memprioritaskan pembunuhan daripada keselamatan kecuali arahannya adalah untuk bertahan hidup selama x turn. Itu juga tidak peduli biaya kemampuan banyak. Sementara seorang pemain mungkin ingin menyimpan mantra besar untuk nanti, AI kemungkinan besar akan menggunakannya sesegera mungkin.
Gerakan berada pada kisi (hex)
jumlah unit pemain: 3-6
jumlah unit ai: 3-7 atau lebih. Mungkin maks 10.
AI dan pemain bergiliran mengendalikan SATU unit, alih-alih semuanya secara bersamaan.
Platform adalah Android (jika program tidak merespons setelah beberapa waktu, akan ada popup yang mengatakan kepada Force Quit atau Wait - yang terlihat sangat buruk!).
Sekarang muncul pertanyaan:
Kemampuan terbaik untuk menggunakan jelas akan menjadi salah satu yang mencapai target paling banyak untuk kerusakan paling. Tetapi karena masing-masing kemampuan memiliki rentang yang berbeda, saya tidak akan tahu apakah mereka berada dalam jangkauan tanpa menjelajahi setiap tempat yang memungkinkan saya dapat pindah ke.
Salah satu solusinya adalah melalui setiap tempat yang memungkinkan untuk bergerak, menentukan serangan optimal di lokasi itu - yang memberi saya daftar langkah optimal untuk setiap lokasi. Kemudian pilih yang optimal dari daftar dan jalankan. Tetapi ini akan memakan banyak waktu CPU. Apakah ada solusi yang lebih baik?
Ide saya saat ini adalah bergerak sedekat mungkin ke arah kelompok orang terdekat, terbesar, dan menentukan serangan / kemampuan optimal dari sana. Saya pikir ini akan menjadi jauh lebih sedikit bekerja untuk CPU dan masih memungkinkan untuk serangan jarak jauh. Sub-optimal tetapi AI masih akan tampak 'pintar'.
Catatan / pertanyaan lain:
- Apakah saya terlalu berpikir / terlalu rumit? Solusi yang lebih baik? Saya terbuka untuk segala macam saran
- Saya telah melihat pertanyaan casting-mantra , tetapi tidak memperhitungkan pergerakan - jadi mungkin gunakan algo itu untuk setiap lokasi pemindahan yang mungkin? Jawaban teratas menyebutkan itu tidak bagus untuk area-of-effect dan pertarungan kelompok - jadi mungkin perlu lebih banyak tweaker?
- Silakan , jika Anda menyebutkan grafik / pohon, biarkan aku tahu pada dasarnya bagaimana menggunakannya. Misalnya Node berarti kemampuan, level berhubungan dengan kerusakan, kemudian mencari node terdalam.