Bagaimana mereka melacak NPC di Left 4 Dead?

11

Bagaimana mereka melacak zombie NPC di Left 4 Dead?

Saya berbicara tentang NPC yang hanya berjalan ke dinding atau berkeliaran tanpa tujuan. Meskipun para pemain tidak dapat melihat mereka, mereka ada di sana (katakan di dalam kamar atau di balik pintu). Katakanlah ada sekitar 10 zombie di lorong dan di dalam kamar. Apakah game menyimpan semua zombie itu dalam daftar dan beralih dengan memberi mereka perintah? Apakah mereka hanya muncul ketika pengguna berada dalam radius tertentu atau mencapai lokasi khusus?

Katakanlah Anda menempatkan 4 unit (dikendalikan oleh pemain) di tempat yang sangat berbeda di seluruh peta. Anggaplah Anda tidak dikerumuni dan kemudian Anda belum membunuh salah satu NPC tanpa tujuan ini. Apakah game akan melacak 10 x 4 = 40 zombie secara total?

Atau apakah pemahaman saya benar-benar hilang?

Alasan saya bertanya adalah jika saya mengimplementasikan sesuatu yang serupa pada perangkat seluler, melacak 40 atau lebih NPC mungkin bukan ide yang bagus.

f20k
sumber
1
Saya telah melihat presentasi yang dibuat oleh Valve menjelaskan segala sesuatu tentang zombie di L4D. Saya tidak dapat menemukannya.
Bebek Komunis
2
@ Bebek Komunis - Itu akan sangat berguna. Silakan kirim jika Anda pernah menemukannya. Satu-satunya hal yang dapat saya temukan online adalah faq game.
f20k

Jawaban:

24

Anda tertarik dengan kertas yang ditemukan di sini:

Sistem AI dari Left 4 Dead

ChrisE
sumber
Ya, inilah tepatnya yang saya cari terima kasih!
f20k
1
Tidak masalah. Beruntung bagi kita bahwa para devs cukup baik untuk memasang publikasi mereka.
ChrisE
4

Saya belum membaca makalah yang dituliskan oleh ChrisE, tetapi dari percakapan saya dengan karyawan Valve atau di suatu tempat di Development Wiki mereka (tidak ingat yang mana) saya ingat diberitahu bahwa pada dasarnya mereka hanya memiliki beberapa entitas nyata (direktur AI); avatar yang Anda lihat menggambarkan NPC yang terinfeksi hanyalah "boneka jari" untuk entitas tersebut. Mereka melakukan ini untuk menjaga jumlah entri edict (kamus entitas) ke minimum karena jelas ada satu ton NPC yang terinfeksi untuk melacak.

Kamus entitas engine memiliki ukuran tetap dan tidak dapat tumbuh. Ini berarti bahwa setiap permainan yang dibangun di atas mesin ini yang membutuhkan sejumlah besar NPC - atau entitas apa pun dalam hal ini - harus menggunakan sistem tersebut agar mesin berfungsi dengan baik dan tidak tersedak (dan akhirnya macet) karena jumlah entitas terlalu tinggi.

Cale
sumber
Apakah Anda tahu entitas macam apa yang ada? Apakah yang terinfeksi khusus akan menjadi entitas? Saya mengalami kesulitan memahami "entitas" vs "boneka jari" ketika saya dapat berinteraksi dengan NPC yang terinfeksi.
f20k
1
Spesial adalah entitas. Cara termudah untuk menentukan apa yang nyata dan apa yang dipalsukan adalah dengan menonton konsol. Anda dapat menerima damage dari pemain lain, dari spesial dengan nama, tetapi ketika Anda menerima damage dari commons, konsol menunjukkan Anda menerima damage dari "world" (iirc).
Rob N
Ya saya mengerti maksud Anda. Mereka hanya berkerumun di sekitar saya dan melakukan animasi cakar. Itu sangat menarik, terima kasih.
f20k
Mungkin cara terbaik untuk menjelaskan bagaimana konsep 'boneka jari' bekerja adalah dengan membandingkannya dengan anjing domba. Ada satu 'pengontrol' (misalnya: anjing) dan kawanan (atau gerombolan dalam hal ini) dari 'boneka' (misalnya: domba). 'Boneka' tidak dapat berpikir untuk diri mereka sendiri, mereka hanya melakukan apa yang diperintahkan oleh pengontrol. Boneka pada dasarnya merupakan perpanjangan dari entitas pengontrol tetapi alih-alih menggunakan satu elemen visual tunggal, seperti case dengan infeksi khusus, mereka menggunakan beberapa elemen visual yang dikendalikan secara independen.
Cale
1

Saya tidak dapat berbicara tentang bagaimana implementasi Left 4 Dead bekerja, tetapi saya dapat mengatakan bagaimana saya mungkin akan melakukannya.

Saya akan memilih sesuatu seperti opsi kedua Anda, melacak setiap pemain dan hanya memuat NPC ketika pemain melewati poin pemicu. Kunci dalam sistem seperti ini, adalah membuat titik pemicu cukup jauh dari pemain sehingga mereka tidak dapat mengasosiasikan walking past this fence postpemicu tersebut.that car to blow up, and shoot a zombie at them.

Saya mungkin akan memiliki koleksi NPC aktif, yang memicu poin baik menambah atau menghapus NPC dari koleksi. Ini memungkinkan Anda untuk menghabiskan sumber daya CPU / GPU di NPC yang berinteraksi dengan pemain, tetapi memberi Anda fleksibilitas untuk memuat NPC kapan saja.

Pikirkan tentang bos yang dapat mendengar suara, mungkin bos dimuat pada awal peta dan jika pemain melalui peta membuat banyak suara (granat, bom pipa, dll), bos akan mencari pemain dan menyerang tiba-tiba, bukannya menunggu sampai pemain mencapai arena bos.

Nate
sumber