Come tengono traccia degli NPC in Left 4 Dead?


11

Come tengono traccia degli zombi NPC in Left 4 Dead?

Sto parlando degli NPC che camminano semplicemente nei muri o vagano senza meta. Anche se i giocatori non possono vederli, sono lì (diciamo dentro le stanze o dietro le porte). Diciamo che ci sono circa 10 zombi in un corridoio e nelle stanze. Il gioco mantiene tutti quegli zombi in un elenco e scorre ripetendo comandi? Si generano solo quando l'utente si trova entro un certo raggio o ha raggiunto una posizione speciale?

Supponi di aver posizionato le 4 unità (controllate dai giocatori) in luoghi completamente diversi in tutta la mappa. Supponiamo che non siate sciamati e quindi non abbiate ucciso nessuno di questi NPC senza scopo. Il gioco dovrebbe tenere traccia di 10 x 4 = 40 zombi in totale?

O la mia comprensione è completamente off?

Il motivo per cui mi chiedo è se dovessi implementare qualcosa di simile su un dispositivo mobile, tenere traccia di 40 o più NPC potrebbe non essere una grande idea.


1
Ho visto una presentazione fatta dalla Valve che spiega tutto sugli zombi in L4D. Non riesco a trovarlo però.
L'anatra comunista,

2
@ L'anatra comunista - Sarebbe molto utile. Si prega di pubblicare se mai lo trovi. L'unica cosa che posso trovare online sono le domande frequenti sui giochi.
f20k,

Risposte:



4

Non ho letto l'articolo a cui ChrisE ha scritto un link, ma da una conversazione che ho avuto con un dipendente Valve o da qualche parte nel loro Wiki di sviluppo (non ricordo quale) ricordo di essere stato informato che essenzialmente hanno solo un paio di entità reali (il direttore dell'IA); gli avatar che vedi ritrarre gli NPC infetti sono solo "burattini" per quelle entità. Lo hanno fatto per mantenere al minimo il numero di voci dell'editto (dizionario delle entità) poiché ovviamente ci sono un sacco di NPC infetti di cui tenere traccia.

Il dizionario delle entità del motore ha una dimensione fissa e non può crescere. Ciò significa che qualsiasi gioco costruito su questo motore che richiede una grande quantità di NPC - o qualsiasi entità per quella materia - deve fare uso di tale sistema affinché il motore funzioni correttamente e non si strozzi (e alla fine si blocchi) il conteggio delle entità è troppo alto.


Ti capita di sapere quali altri tipi di entità ci sono? Gli infetti speciali sarebbero entità? Ho difficoltà a comprendere "entità" vs "burattino" quando posso interagire con l'NPC infetto.
f20k,

1
Gli speciali sono entità. Il modo più semplice per determinare ciò che è reale e ciò che è falso è guardare la console. Puoi subire danni da altri giocatori, dagli speciali per nome, ma quando subisci danni dai beni comuni la console mostra che stai subendo danni da "mondo" (iirc).
Rob N

Sì, vedo il tuo punto. Si affollano intorno a me e fanno un'animazione artigliata. È molto interessante, grazie.
f20k,

Probabilmente il modo migliore per spiegare come funziona il concetto di "burattino da dito" è confrontarlo con un cane da pastore. C'è un "controllore" (ad esempio: il cane) e un branco (o un'orda in questo caso) di "pupazzi" (ad esempio: le pecore). I "burattini" non possono pensare da soli, fanno solo ciò che il controllore gli dirige di fare. I pupazzi sono fondamentalmente un'estensione dell'entità controllore ma invece di utilizzare un singolo elemento visivo, come nel caso dell'infezione speciale, usano più elementi visivi che sono controllati indipendentemente.
Cale,

1

Non posso parlare di come funziona l'implementazione di Left 4 Dead, ma posso dire come probabilmente lo farei.

Vorrei qualcosa come la tua seconda opzione, tracciare ogni giocatore e caricare NPC solo quando i giocatori superano i punti trigger. La chiave in un sistema come questo è rendere i punti trigger abbastanza lontani dal giocatore che non sono in grado di associare i walking past this fence posttriggerthat car to blow up, and shoot a zombie at them.

Probabilmente avrei una collezione di NPC attiva, che i punti trigger aggiungono o rimuovono NPC dalla collezione. Ciò ti consente di spendere risorse CPU / GPU su NPC con cui i giocatori interagiscono effettivamente, ma ti dà la flessibilità di caricare NPC in qualsiasi momento.

Pensa a un boss che può sentire suoni, forse il boss viene caricato all'inizio della mappa e se il giocatore che attraversa la mappa fa molto rumore (granate, bombe a tubo, ecc.), Il boss cercherà il giocatore e attaccherà di punto in bianco, invece di aspettare che il giocatore raggiunga l'arena del boss.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.