Saya ingin tahu bagaimana saya bisa mengendalikan mobil dalam permainan balap.
Haruskah agen AI saya mengendalikan mobilnya dengan perintah seperti "throttle pada 0,35, roda kemudi di 0,5 kanan, rem pada 0,0"? Atau haruskah saya lebih baik menghitung kurva yang menempel pada mobil, dan visual seperti roda depan belok hanya untuk membuat semuanya terlihat konsisten? Atau ada cara lain?
game-design
ai
dargemir
sumber
sumber
Jawaban:
Kita dapat mengatakan bahwa pada tingkat tertentu permainan mengikuti jalur yang telah dihitung sebelumnya. Karena trek dari game balap (biasanya) adalah jalur yang sudah ditentukan sebelumnya.
Bahkan jika kita berbicara tentang membuat trek secara acak, permainan harus menghitung bagian trek saat ini untuk saat di mana mobil sampai di sana.
Yah, itu mudah. Ada hal lain tentang itu?
Keduanya, mengikuti jalur yang telah ditentukan sebelumnya dan mengendalikan mobil secara sistematis memiliki kegunaan dalam industri game. Jawabannya adalah menggunakan keduanya, semacam.
Pertama, saya ingin menyebutkan bahwa "menghitung kurva" dapat berarti dua hal:
Membuat fungsi yang akan menampilkan posisi pada kurva, sebagai parameter seberapa jauh Anda ingin melakukan query.
Membuat jalur, dipahami sebagai daftar poin (atau instruksi dan informasi kontrol lainnya) untuk diikuti.
Yang pertama dapat berguna untuk prediksi atau dalam beberapa simulasi fisik. Namun, ketika kita berbicara tentang mengendalikan suatu objek, yang terakhir adalah pendekatan yang direkomendasikan.
Catatan: Untuk game yang lebih lama (1980-an) mobil-mobil lain di mana lebih suka bergerak hambatan. Mereka ada di sana bagi Anda untuk menghindari mereka dan melampaui mereka. Kami tidak berbicara tentang itu.
Mengikuti jalur yang telah dihitung sebelumnya: Ini berguna untuk sinematik atau adegan yang berulang. Misalnya di GTA San Andreas, pengejaran misi mengejar target dan semua mobil mengikuti jalur yang telah ditentukan (ini memastikan bahwa target pengejaran dapat menghindari lalu lintas ※). Namun, segera setelah Anda mengganggu mereka, mereka kembali ke kontrol AI, dalam hal ini AI harus menemukan jalan untuk sampai ke tempat ia seharusnya mengikuti jalur regulernya.
※: Sebenarnya, itu sudah direkam sebelumnya. Rekam dan pemutaran adalah salah satu fitur baru dari mesin game GTA SA.
Dikendalikan oleh AI:
AI pada bentuknya yang paling sederhana adalah mesin negara. Ia memeriksa keadaan apa itu dan menjalankan beberapa tindakan tergantung pada itu. Saya akan merujuk pada kombinasi keadaan dan tindakan ini sebagai perilaku. Tindakan tidak harus mencocokkan gamepad pemain. Perilaku juga tidak.
Untuk permainan sederhana, Anda mungkin hanya perlu dua perilaku penting: 1) jika berada di trek lalu ikuti lintasan menghindari mobil lain dan hambatan apa pun dan 2) jika tidak di lintasan, kembalilah ke trek.
Pada tahap ini, tidak jauh dari mengikuti jalan (trek). Namun, karena jalurnya tidak benar-benar garis, kami tidak berbicara tentang mengikuti jalan, tetapi tetap dekat dengan itu (sambil menghindari mobil lain dan hambatan). Berarti AI harus menyelesaikan "kemudi, pengereman, dan akselerasi".
Untuk permainan modern, mobil juga akan dikenakan simulasi fisika (untuk menyelesaikan tabrakan dan menjaga realisme). Karena itu, setiap iterasi dari loop game, mobil akan diperbarui berdasarkan kecepatan dan akselerasi, dan juga "kemudi, pengereman, dan akselerasi" (tweaks to speed) akan diterapkan untuk mengikuti perilaku saat ini.
Saya juga ingin menyebutkan bahwa permainan modern mungkin memiliki perilaku yang lebih kompleks, misalnya, AI dapat memilih untuk menabrak mobil lain atau memblokir jalan mereka. Bahkan, AI bahkan dapat memilih mana yang akan diterapkan berdasarkan beberapa bentuk pembelajaran mesin, tapi saya ngelantur.
Akhirnya, pertimbangkan bahwa mungkin juga bermanfaat untuk memiliki kontrol yang lebih sederhana untuk mobil AI di luar tampilan pemain. Baik untuk kinerja atau untuk Karet Banding (yang dalam hal ini membuat mobil AI dekat dengan pemain untuk membuat balapan tetap menarik, ini dapat dianggap sebagai kecurangan AI ketika Anda tidak dapat benar-benar meninggalkan lawan mana pun).
Tentang animasi, biasanya bukan ide yang baik untuk mensimulasikan fisika untuk roda secara mandiri. Jika Anda melakukannya, itu mungkin akan menambah realisme ke permainan, tetapi akan membutuhkan kinerja. Biasanya permainan akan menggerakkan roda berdasarkan perilaku alih-alih mengungkapkan perilaku dalam hal pergerakan roda dan mensimulasikan konsekuensi.
Tentu saja, Anda mungkin perlu memberikan pertimbangan tambahan pada roda apa pun yang sesuai dengan tanah atau tidak. Dan mungkin suspensi beranimasi.
sumber
Saya sangat menyarankan memisahkan model mobil fisika / negara dari pengontrol mobil, dan membuat agen AI dan pengontrol pemain menjadi dua jenis pengontrol yang dapat dipertukarkan, dengan perintah tingkat tinggi seperti yang Anda sarankan dalam pertanyaan Anda.
Ini memiliki sejumlah efek yang bagus:
Omong -omong, ini adalah kasus khusus pemisahan MVC .
sumber