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.
sumber
Jawaban:
Anda tertarik dengan kertas yang ditemukan di sini:
Sistem AI dari Left 4 Dead
sumber
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.
sumber
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 post
pemicu 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.
sumber