Menargetkan kendaraan dengan kecepatan konstan yang diketahui sederhana, dan tabrakan dijamin (lihat Memprediksi posisi musuh agar objek memimpin targetnya , Temukan titik temu 2 objek dalam 2D, mengetahui kecepatan dan kemiringan (konstan) dan kemiringan ). AI yang tepat dapat dimodelkan dengan menambahkan faktor kesalahan kecil.
Tapi bagaimana cara menargetkan kendaraan yang pergerakannya lebih kompleks? Mungkin itu menghindari AI atau objek game lain.
Saya telah berpikir tentang bagaimana saya melakukannya sendiri dalam FPS (di mana peluru memiliki kecepatan yang terbatas) dan berpikir mungkin perlu ada setidaknya beberapa mode penargetan berdasarkan pergerakan target pada detik sebelumnya:
- Jika mendekati target linear (akselerasi puncak dalam kisaran tertentu) dengan model linier
- Jika itu sangat tidak teratur (mungkin ukuran kotak pembatas posisi terbaru dapat digunakan?), Target pada rata-rata
Untuk saat ini saya dapat mengasumsikan ruang 2d, AI stasioner dan proyektil tidak terarah dan bergerak secara linear.
Jawaban:
Pikiran acak (tanpa kode) ...
Dalam kehidupan nyata, seseorang menargetkan kendaraan dengan gerakan rumit dengan mencoba mencari tahu apa gerakan itu untuk mengantisipasinya. Jika Anda menulis kode AI untuk menargetkan AI, maka Anda harus membuat AI penargetan yang berasal dari AI target. Misalnya, jika target Anda akan berjalan untuk perlindungan jika dekat, AI penargetan harus dapat mengantisipasi gerakan ini.
Di sisi lain, jika Anda mencoba menargetkan manusia dengan AI, itu akan jauh lebih sulit. Penargetan acak bisa berfungsi, tetapi mungkin terlihat "acak", yang mungkin atau mungkin tidak menjadi masalah bagi game Anda.
Untuk menemukan solusi, satu hal yang dapat Anda lakukan adalah memisahkan masalah secara mental menjadi bagian-bagian berbeda dari mencoba menembak sesuatu ...
Kemampuan Pelacakan
Untuk mencapai target dengan perangkat bertujuan yang dapat bergerak, seseorang harus dapat melacak dan memindahkan perangkat untuk mengikuti target. Targeter mengamati target bergerak, dan menggerakkan tujuannya untuk mengikuti. Jika pelacak memiliki jumlah gerakan terbatas, maka kemampuan pelacakannya akan terhambat dan mungkin sulit melacak beberapa hal. tetapi jika pelacak memiliki banyak kebebasan lacak, ia berpotensi melacak banyak hal. Pikirkan tentang perbedaan antara menara tangki dan Anda menunjuk sesuatu dengan jari Anda.
Kecepatan Pelacakan
Faktor lain adalah seberapa cepat pelacak dapat melacak. Jika sangat lambat (pikirkan "tank turret"), maka ia tidak dapat melacak target yang bergerak cepat. Sebaliknya ia harus bergantung pada antisipasi jalur target. Di sisi lain pelacak dengan kecepatan "cepat" dapat dengan cepat pindah ke lokasi baru target.
Melacak Waktu Reaksi
Faktor ketiga dalam pelacakan adalah waktu reaksi pelacakan. Artinya, ketika target berubah arah, seberapa cepat pelacak bereaksi? Pelacak terhebat adalah pelacak dengan kecepatan pelacakan cepat dan waktu reaksi instan - ia dapat melacak setiap perubahan.
Pengakuan Target
Seberapa baik targeter dapat mengenali target? Jika seseorang melacak target di lingkungan yang kompleks, mungkin ada saat-saat targeter gagal mengenali atau "kehilangan" target. Semakin cepat targeter dapat mengenali target, semakin baik itu akan dilakukan. Semakin kecil kemungkinan untuk kehilangan target, semakin baik itu akan dilakukan.
Waktu Reaksi Pemotretan
Hanya karena target muncul di crosshair untuk sesaat, bukan berarti tembakan akan terjadi. Bisakah pelacak bereaksi cukup cepat untuk menarik pelatuk? Pelacak sangat buruk dengan waktu reaksi sangat buruk tidak akan mengenai apa pun. Pelacak yang sangat baik dengan waktu reaksi yang sangat baik akan mengenai apa pun, karena mereka hanya membutuhkan sedikit waktu pada target.
Mengantisipasi Gerakan
Antisipasi gerakan adalah faktor lain. Ini adalah perbedaan antara hanya mencoba melacak ke mana target sekarang, dibandingkan melacak ke tempat yang menurut Anda target. Jika pelacak dapat mengantisipasi, mereka dapat melacak target dengan lebih baik, dan mendapatkan lebih banyak peluang untuk memiliki target di garis bidik, dan dengan demikian meningkatkan kemampuan mereka untuk melepaskan tembakan berdasarkan waktu reaksi mereka. Pelacak antisipasi nol hanya akan secara otomatis menggerakkan sasaran ke arah target, terlepas dari tindakan target. Kasus terburuk adalah pelacak yang kecepatannya lambat tanpa antisipasi mencoba melacak target bergerak sederhana. Bayangkan target yang hanya melangkah ke kiri dan kemudian ke kanan setiap beberapa detik. Pelacak yang lambat hanya akan terus memantulkan tujuan bolak-balik, tidak pernah cukup cepat untuk mendapatkan target.
Modeling Target Movement
Seperti disebutkan di atas, pelacak dapat mengantisipasi target dengan memodelkan gerakannya, yang tidak selalu sulit dilakukan. Jika sebuah kendaraan melaju dengan kecepatan tertentu, ada sejumlah tempat yang terbatas sehingga kendaraan dapat berada di detik berikutnya, dan pada dasarnya diletakkan seperti segitiga di depan pergerakannya. Semakin cepat mereka pergi, semakin ketat segitiga itu. Semakin cepat mereka berputar, semakin lebar itu. Kendaraan yang sangat cepat yang sulit berputar (seperti roket) memiliki jalur potensial sempit yang sangat kecil. Jalur lambat yang dapat berputar dengan sangat baik memiliki jalur potensial yang jauh lebih luas. Ini seperti kamera cadangan pada beberapa mobil yang melapisi garis yang menunjukkan ke mana mobil Anda akan pergi jika Anda terus mengemudi seperti sekarang, ditambah ke mana Anda berpotensi pergi jika Anda ingin memutar roda lebih.
Maka dengan itu dalam pikiran, Anda harus meletakkan kotak "ruang target potensial" Anda di ruang jalur potensial itu. Jika Anda tahu target Anda cenderung membelok dari satu sisi ke sisi lain, kotak target Anda harus cukup lebar untuk mencakup semua gerakan yang mungkin. Jika target Anda cukup linier dalam gerakan mereka, Anda dapat membuat kotak target Anda jauh lebih kecil dan berpusat pada lokasi gerakan yang diantisipasi. Saya pikir pemikiran seperti ini akan membantu Anda membuat solusi tunggal untuk pelacakan yang tidak benar-benar membedakan antara antisipasi linear dan non linear. Pelacakan linier hanyalah antisipasi dengan tingkat kepercayaan yang lebih tinggi (kotak penargetan yang lebih kecil), sedangkan pelacakan acak adalah pelacakan tingkat rendah (kotak pelacakan yang lebih besar).
Tentu ini menjadi tantangan jika targetnya diam, karena memiliki potensi untuk bergerak ke segala arah. Tetapi tentu saja jika itu masih terlalu lama, itu adalah target yang mudah bahkan untuk pelacak paling lambat.
Psikologi Sasaran
Pertimbangkan apa yang akan Anda lakukan jika tiba-tiba ada tembakan yang mendarat di sebelah kiri Anda. Apakah Anda akan berlari pada mereka? TIDAK! Anda lari ke kanan. Atau mungkin Anda akan lari mencari perlindungan. Tapi mungkin saja targeter itu secara khusus menembak di lokasi sampul sehingga Anda tidak berlari untuk itu.
Kapasitas untuk Belajar
Targeter Anda yang berpotensi dapat belajar dari pengalaman. Misalkan pada awalnya mereka tidak tahu gerakan potensial kendaraan. Mereka tidak tahu seberapa cepat itu bisa berjalan, atau seberapa cepat itu bisa berubah. Mengamati hal itu dalam tindakan akan mengajarkan mereka apa ini. Berarti bahwa pertama kali mereka mencoba dan melacak satu, mereka mungkin tidak melakukannya dengan baik. Tetapi mereka mempelajari perilaku gerakan, dan melakukan lebih baik pada percobaan berikutnya.
Bacaan lebih lanjut
Sedikit googling setelah menulis ini menyebabkan bertemu dengan manual ini untuk keahlian menembak senapan ...
http://www.globalsecurity.org/military/library/policy/army/fm/3-22-9/c07.htm
Mungkin ada beberapa ide di sana tentang bagaimana orang sejati akan / harus / dapat mengarahkan dan melacak.
sumber