Apa praktik terbaik untuk membuat musuh NPC berlindung dalam game FPS?

8

Pertanyaan saya adalah tentang struktur data (dan cara logis untuk menggunakan struktur ini) di balik jenis serangan musuh NPC ini: Bagaimana dia menghitung tempat di mana dia bisa berlindung ketika pemain menembaknya?

Itu bisa dalam permainan tampilan seperti FPS, atau "papan permainan" ...

Pierre Watelet
sumber

Jawaban:

9

Anda punya 3 opsi utama:

Opsi # 1: (Paling kuat, tetapi paling intensif CPU)

Secara real-time, hitung area sudut yang cukup lebar untuk disembunyikan oleh NPC dan yang tidak terpapar kepada pemain. Pilih yang terdekat untuk disembunyikan pemain.

Ini akan bekerja pada level apa pun yang bagus dan pada level dengan geometri yang berubah selama bermain game. Tetapi akan membutuhkan waktu terlama untuk bekerja secara konsisten dan akan menggunakan hingga sebagian besar sumber daya CPU selama permainan.

Opsi # 2: (Menghemat waktu desainer level, hit real-time minimal)

Buat alat offline yang melakukan tes sudut dan kemudian menempatkan node di tingkat Anda untuk semua area cakupan potensial. LD's dapat men-tweak node-node ini atau menghapus yang tidak sesuai.

Selama bermain game, cukup temukan simpul valid terdekat.

Ini bagus karena perutean pencarian sudut Anda tidak harus 100% akurat karena LD dapat menyaring beberapa simpul buruk di sana-sini. Tidak dapat menanggapi perubahan dalam geometri kecuali jika Anda mulai pandai dengan melampirkannya pada objek, atau skrip on / off.

Opsi # 3: (Kekuatan Brute, hit real-time minimal)

Mintalah LD secara manual menempatkan semua node penutup, dan kemudian cukup pilih simpul valid terdekat selama bermain game.

Jika Anda memiliki banyak level atau level besar, harapkan LDs mengeluh.

wkerslake
sumber
3

Saya pikir cara terbaik untuk melakukannya adalah dengan secara manual mengatur kotak-kotak di area yang Anda inginkan menjadi tempat berlindung NPC.

Memiliki variabel untuk "takut" atau metrik lain yang Anda inginkan, ketika ambang batas tercapai, NPC harus pindah ke kotak terdekat yang berada di luar garis pandang pemain.

Anda dapat menemukan cara untuk secara dinamis membuat musuh berlindung di balik objek apa pun, tetapi lebih dari itu mereka dapat menghasilkan beberapa posisi penutup yang aneh dan tidak logis.

SerangHobo
sumber
1

Ada deskripsi tentang bagaimana AI of killzone mencari ruang posisi untuk mendapatkan posisi yang baik di sini (PDF). Anda dapat mengubah fungsi evaluasi untuk menambah nilai posisi penutup jika AI ditembak, atau rusak parah. Jadi AI yang tidak tertembak akan mengambil risiko sedikit lebih besar untuk mendapatkan target.

Anda juga bisa menambahkan solusi AttackingHobbo, menambah bunga penutup tergantung pada faktor ketakutan (yaitu 0: saya tak terkalahkan / 1: saya berhati-hati / 5 tolong hentikan)

salam

PATRY Guillaume
sumber
1

Tergantung pada gaya permainan. Cukup umum untuk membiarkan desainer level menempatkan objek penutup, yang bisa berupa volume, bentuk yang mewakili objek penutup atau simpul. Ini lebih padat karya untuk LDs tetapi memberi lebih banyak kontrol, yang biasanya diinginkan dalam permainan yang ditulis dengan ketat.

Untuk gim dunia terbuka, Anda memerlukan sistem deteksi sampul otomatis. Kami menggunakan satu yang mendeteksi sampul saat runtime di Battlefield: Bad Company (1 & 2) agar dapat membatalkan dan mendeteksi kembali kerusakan lingkungan.

slicedlime
sumber