Driver AI dalam game balap


17

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?


4
Strategi "stick to ideal curve" hanya berfungsi selama tidak ada gangguan. Saat agen AI mulai berinteraksi dengan mobil lain (menghindarinya atau menabrak), mereka perlu berimprovisasi.
Philipp

1
Yap, sesuatu seperti simpul di sepanjang lintasan dengan kemudi tipe boids.
MichaelHouse

1
Berikut ini adalah artikel tentang AI dalam Rapat
Umum

@re_gor, artikel ini sangat membantu, terima kasih!
dargemir

Jawaban:


16

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.


Ini hanya jawaban yang bagus, terima kasih banyak.
dargemir

0

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:

  • Anda dapat menerapkan dan men-debug model fisika / keadaan untuk pemain dan AI
  • Setiap fitur baru dari model fisika / keadaan segera berlaku untuk pemain dan AI
  • Mobil pemain dan AI berperilaku konsisten di trek, yang meningkatkan persepsi dan keadilan yang sebenarnya (jika Anda ingin menghambat para pembalap, tentu saja, Anda dapat melakukannya dengan mengubah parameter pada mobil)
  • Berbagai macam dukungan multi pemain menjadi lebih mudah untuk dikembangkan.

Omong -omong, ini adalah kasus khusus pemisahan MVC .


2
Saya suka jawaban ini, tetapi pernyataan terakhir itu tidak masuk akal. Hapus dan Anda ada benarnya dari saya. Pemisahan Kekhawatiran ? - tentu saja Tetapi MVC tidak berlaku di seluruh konteks jawaban lengkap Anda.
Insinyur

1
Terlepas dari kenyataan bahwa aspek Tampilan tidak dibahas dalam pertanyaan atau jawaban, mengapa menurut Anda masuk akal untuk menganggap ini sebagai MVC?
Russell Borogove
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.