Saya baru mengenal pemrograman game dan saya mencoba membuat game ruang top-down 2d dasar dengan 2 kapal ruang yang saling bertarung. Saya melakukannya dengan baik dengan kapal ruang angkasa yang dikendalikan pengguna, tetapi tidak tahu bagaimana memulai pemrograman AI. Apakah metode / pola tertentu lebih baik untuk situasi ini? Di mana saya akan mulai?
58
Jawaban:
The pola Strategi sangat bagus untuk menentukan apa yang harus dilakukan tetapi tidak ketika melakukannya. Anda juga perlu menggunakan Mesin Status Hingga untuk mengetahui keadaan AI Anda dan keputusan apa yang sesuai.
Panduan Praktis untuk Membangun Game Lengkap AI: Volume I
sumber
Jika ini adalah pertama kalinya Anda mengembangkan AI, Anda tidak perlu khawatir tentang hal-hal seperti pola keadaan, matematika perilaku atau bahkan mendapatkan buku tentang subjek tersebut.
Anda benar-benar dapat pergi dengan sesuatu seperti ini:
Aspek utama untuk mendapatkan AI yang benar adalah dengan memikirkan perilaku apa yang Anda inginkan dari karakter tersebut dan bagaimana hal ini dapat dicapai secara realistis. Jadi untuk musuh pesawat ruang angkasa dasar, saya membayangkan tindakan yang mungkin dilakukan adalah:
Dan kapan tindakan ini bisa terjadi?
Setelah Anda melakukan ini karena rendahnya jumlah "status" tempat karakter Anda berada, Anda dapat menggunakan pernyataan sederhana jika seperti di atas. Saya kemudian akan merekomendasikan Anda melihat Steering Behaviors karena ini adalah perilaku yang sangat sederhana untuk diterapkan dan dapat menghasilkan gerakan yang terlihat sangat baik.
Lebih banyak dapat ditemukan di sini: http://www.red3d.com/cwr/steer/
Dan saya pasti akan merekomendasikan buku Mat Buckland, Programming Game AI By Example , terutama ketika Anda memulai.
Ketika Anda benar-benar nyaman dengan ini, saya akan menyarankan melihat Pola Negara dan Strategi.
Intinya adalah memulai dari yang kecil dan sederhana. Jangan khawatir tentang semua istilah ini yang semua orang terus bicarakan tentang FSM dan pola desain dan apa pun. Desain dan bangun pertama-tama, kemudian khawatir tentang bagaimana Anda dapat memperbaikinya dengan menggunakan metode atau standar yang ada.
Semoga itu bisa membantu!
sumber
Anda mungkin ingin melihat OpenSteer , dan dokumentasi Steering Behaviors yang menyertainya. Kode sumber bukan tingkat pemula, tetapi konsep di baliknya harus memberi Anda beberapa ide bagus.
sumber
Anda mungkin ingin melihat pola desain Strategi . Pada dasarnya, tuliskan strategi dasar yang sama tentang bagaimana kapal akan berperilaku:
Kemudian Anda akan menggunakan logika (mesin negara) untuk memilih antara strategi ini. Sebagai contoh: Jika perisai kapal telah jatuh di bawah 50%, maka larilah dari target dan bergerak ke arah power up / item penyembuhan dan sebagainya.
sumber
Bolehkah saya menyarankan Anda membeli buku Artificial Intelligence for Games karya Ian Millington - sangat bagus! :) http://www.ai4g.com/
Kode sumber ada di lisensi Github - MIT.
Tentu saja, jika Anda tidak menggunakan C / C ++, maka ini mungkin kurang relevan.
Tapi benar-benar pengantar yang luar biasa untuk dunia kebodohan / kecerdasan buatan.
Hal-hal yang Anda perlukan dari itu adalah kemudi dan mesin negara. Sebagai permulaan.
sumber
Beberapa saran praktis jika Anda menggunakan mesin negara: Waspadalah dengan megastate.
Sangat menggoda untuk memiliki status "melarikan diri" yang menangani pengaturan posisi untuk melarikan diri, menetapkan kecepatan target tinggi, membersihkan semua target, dll. Jauh lebih baik daripada memiliki banyak mesin keadaan, masing-masing menangani satu atau beberapa kontrol kapal - mis. mesin negara yang menangani memilih posisi target, yang menangani senjata, dll.
Ini mungkin tampak bodoh, karena Anda harus menambahkan status pelarian ke setiap mesin individual, tetapi karena Anda dibatasi hanya satu atau dua output, status Anda berakhir sangat kecil sehingga ini seharusnya tidak menjadi masalah.
Juga, karena masing-masing kontrol sekarang di bawah kendali individu, Anda dapat akhirnya memilih posisi target yang melarikan diri sambil tetap memiliki status serangan mengendalikan senjata Anda. Anda dapat memberondong musuh saat masih menghemat tenaga mesin karena kebocoran cairan pendingin. Anda dapat menyetir untuk menghindari tabrakan saat masih melakukan penanggulangan. Semua ini tidak mungkin dengan mesin negara tunggal yang mencakup semua.
sumber
Matematika Perilaku untuk Game AI
Menambahkan buku ini ke daftar titik awal untuk mempelajari pemrograman AI. Dengan fokusnya pada pengamatan dan implementasi perilaku daripada algoritma aplikasi terbatas, saya percaya itu sangat cocok untuk tugas itu.
sumber
Cara membuat AI adalah pertanyaan yang sulit, karena terdiri dari banyak bagian:
Poster-poster lain menyarankan buku-buku bagus dan saya suka AI4Games yang disarankan oleh jacmoe, meskipun itu cukup umum di beberapa bagian (seperti banyak buku, yang tentu saja dapat dimengerti).
Tentu saja, setiap jenis permainan memiliki kebutuhan khusus, dan permainan arcade / shooter tidak membutuhkan arsitektur yang rumit untuk mendukung gameplay yang menarik. Lib kemudi sederhana akan melakukan pekerjaan sebagai dasar dari perilaku itu, dan kemudian Anda menambahkan rincian untuk berbagai jenis musuh (beberapa, menembak secara berkala, beberapa menembak dengan memprediksi gerakan pemain, beberapa giliran untuk menghadapi musuh, yang lain mungkin mengoordinasikan serangan mereka dll).
sumber
Pikirkan apa yang Anda lakukan saat bermain. Tanyakan pada diri Anda beberapa pertanyaan.
Lalu, apa yang saya lakukan adalah meminta AI melihat lapangan permainan dan membuat daftar tindakan atau gerakan yang mungkin dilakukan AI berdasarkan pertanyaan-pertanyaan itu. Saya memberi peringkat dan mengurutkan gerakan ini dengan "faktor kecerdasan". Kemudian, sesederhana memilih dan mengeksekusi gerakan / aksi berdasarkan beberapa kombinasi keacakan dan tingkat kesulitan apa pun yang dipilih pemain di awal permainan.
Kemudian, setelah 500 milidetik, saya melakukannya lagi.
Itu tidak memiliki kemampuan belajar atau apa pun tetapi dengan tweaker yang cukup itu bisa sangat meyakinkan, yang penting
sumber