Bayangkan tembak-menembak yang sangat sederhana, sesuatu yang kita semua tahu:
Anda adalah pemain (hijau). Gerakan Anda terbatas pada X
sumbu. Musuh kita (atau musuh) ada di bagian atas layar, gerakannya juga terbatas pada X
porosnya. Pemain menembakkan peluru (kuning) ke arah musuh.
Saya ingin menerapkan AI untuk musuh yang harusnya benar-benar pandai menghindari peluru pemain. Ide pertama saya adalah membagi layar menjadi beberapa bagian terpisah dan memberikan bobot kepada mereka:
Ada dua bobot: "bobot peluru" (abu-abu) adalah bahaya yang ditimbulkan oleh peluru. Semakin dekat peluru ke musuh, semakin tinggi "peluru" ( 0..1
, di mana 1 adalah bahaya tertinggi). Jalur tanpa peluru memiliki bobot 0. Berat kedua adalah "distance-weight" (hijau limau). Untuk setiap jalur saya menambahkan 0.2
biaya perpindahan (nilai ini agak berubah-ubah sekarang dan dapat diubah).
Kemudian saya cukup menambahkan bobot (putih) dan pergi ke jalur dengan bobot terendah (merah). Tetapi pendekatan ini memiliki cacat yang jelas, karena dapat dengan mudah kehilangan minimum lokal sebagai tempat yang optimal untuk pergi hanya antara dua peluru yang masuk (seperti dilambangkan dengan panah putih).
Jadi inilah yang saya cari:
- Harus menemukan jalan melalui badai-peluru, bahkan ketika tidak ada tempat yang tidak memaksakan ancaman peluru.
- Musuh dapat secara andal menghindari peluru dengan memilih solusi yang optimal (atau hampir optimal).
- Algoritma harus dapat memperhitungkan kecepatan pergerakan peluru (karena mereka mungkin bergerak dengan kecepatan yang berbeda).
- Cara untuk mengubah algoritma sehingga berbagai tingkat kesulitan dapat diterapkan (bodoh terhadap musuh yang sangat cerdas).
- Algoritma harus memungkinkan gol yang berbeda, karena musuh tidak hanya ingin menghindari peluru, ia juga harus dapat menembak pemain. Itu berarti bahwa posisi di mana musuh dapat menembak pemain harus lebih disukai ketika menghindari peluru.
Jadi bagaimana Anda menangani ini? Berlawanan dengan gim-gim lain dari genre ini, saya hanya ingin memiliki beberapa musuh yang sangat "terampil" daripada massa musuh yang bodoh.