Wie verfolgen sie die NPCs in Left 4 Dead?

11

Wie verfolgen sie die NPC-Zombies in Left 4 Dead?

Ich spreche von den NPCs, die einfach gegen Wände gehen oder ziellos herumwandern. Obwohl die Spieler sie nicht sehen können, sind sie da (etwa in Räumen oder hinter Türen). Nehmen wir an, es gibt ungefähr 10 Zombies in einem Flur und in Räumen. Hält das Spiel all diese Zombies in einer Liste und iteriert, indem es ihnen Befehle gibt? Spawnen sie nur, wenn sich der Benutzer in einem bestimmten Radius befindet oder einen bestimmten Ort erreicht hat?

Angenommen, Sie haben die 4 Einheiten (von Spielern kontrolliert) an völlig unterschiedlichen Stellen auf der Karte platziert. Nehmen wir an, Sie werden nicht überschwemmt und haben dann keinen dieser ziellosen NPCs getötet. Würde das Spiel insgesamt 10 x 4 = 40 Zombies verfolgen?

Oder ist mein Verständnis völlig aus?

Der Grund, den ich frage, ist, ob ich etwas Ähnliches auf einem mobilen Gerät implementieren würde. 40 oder mehr NPCs im Auge zu behalten, ist möglicherweise keine so gute Idee.

f20k
quelle
1
Ich habe eine Präsentation des Ventils gesehen, in der alles über die Zombies in L4D erklärt wurde. Ich kann es aber nicht finden.
Die kommunistische Ente
2
@ The Communist Duck - Das wäre sehr nützlich. Bitte posten Sie, wenn Sie es jemals finden. Das einzige, was ich online finden kann, sind Spiel-FAQs.
f20k

Antworten:

24

Sie interessieren sich für das hier gefundene Papier:

KI-Systeme von Left 4 Dead

ChrisE
quelle
Ja, genau das suche ich danke!
f20k
1
Kein Problem. Zum Glück sind die Entwickler so freundlich, ihre Veröffentlichungen zu veröffentlichen.
ChrisE
4

Ich habe das Papier, zu dem ChrisE einen Link geschrieben hat, nicht gelesen, aber entweder aus einem Gespräch mit einem Valve-Mitarbeiter oder irgendwo in dessen Entwicklungs-Wiki (ich kann mich nicht erinnern, welches) erinnere ich mich, dass ich informiert wurde, dass sie im Wesentlichen nur ein paar haben reale Einheiten (der KI-Direktor); Die Avatare, die die infizierten NPCs darstellen, sind für diese Entitäten nur "Fingerpuppen". Sie haben dies getan, um die Anzahl der Edikteinträge (Entity Dictionary) auf ein Minimum zu beschränken, da offensichtlich eine Menge infizierter NPCs zu verfolgen sind.

Das Entity-Wörterbuch der Engine hat eine feste Größe und kann nicht wachsen. Dies bedeutet, dass jedes Spiel, das auf dieser Engine basiert und eine große Anzahl von NPCs benötigt - oder eine andere Entität - ein solches System verwenden muss, damit die Engine ordnungsgemäß funktioniert und nicht erstickt (und letztendlich abstürzt), weil Die Anzahl der Entitäten ist zu hoch.

Cale
quelle
Wissen Sie zufällig, welche anderen Arten von Entitäten es gibt? Wären die speziell infizierten Wesenheiten? Ich habe Probleme, "Entität" gegen "Fingerpuppe" zu verstehen, wenn ich mit dem infizierten NPC interagieren kann.
f20k
1
Specials sind Entitäten. Der einfachste Weg, um festzustellen, was echt und was gefälscht ist, besteht darin, die Konsole zu beobachten. Sie können Schaden von anderen Spielern erleiden, von Specials mit Namen, aber wenn Sie Schaden von Commons erleiden, zeigt die Konsole, dass Sie Schaden von "world" (iirc) erleiden.
Rob N
Ja, ich verstehe deinen Standpunkt. Sie drängen sich einfach um mich und machen eine Krallenanimation. Das ist sehr interessant, danke.
f20k
Der wahrscheinlich beste Weg, um zu erklären, wie das Konzept der Fingerpuppe funktioniert, ist der Vergleich mit einem Schäferhund. Es gibt einen "Controller" (z. B. den Hund) und eine Herde (oder in diesem Fall eine Horde) von "Puppen" (z. B. die Schafe). Die 'Puppen' können nicht für sich selbst denken, sie tun nur das, wozu der Controller sie anweist. Die Puppen sind im Grunde eine Erweiterung der Controller-Entität, aber anstatt ein einziges visuelles Element zu verwenden, wie dies bei speziell infizierten Personen der Fall ist, verwenden sie mehrere visuelle Elemente, die unabhängig voneinander gesteuert werden.
Cale
1

Ich kann nicht darüber sprechen, wie die Implementierung von Left 4 Dead funktioniert, aber ich kann sagen, wie ich es wahrscheinlich tun würde.

Ich würde mich für so etwas wie Ihre zweite Option entscheiden, jeden Spieler verfolgen und NPCs nur laden, wenn sich die Spieler an Triggerpunkten vorbei bewegen. Der Schlüssel in einem solchen System besteht darin, die Triggerpunkte so weit vom Spieler entfernt zu machen, dass sie diese walking past this fence postTrigger nicht zuordnen könnenthat car to blow up, and shoot a zombie at them.

Ich hätte wahrscheinlich eine aktive NPC-Sammlung, bei der die Triggerpunkte entweder NPCs hinzufügen oder aus der Sammlung entfernen. Auf diese Weise können Sie CPU- / GPU-Ressourcen für NPCs ausgeben, mit denen Spieler tatsächlich interagieren, aber Sie können NPCs jederzeit flexibel laden.

Denken Sie an einen Boss, der Geräusche hören kann. Vielleicht ist der Boss am Anfang der Karte geladen. Wenn der Spieler, der durch die Karte geht, viel Lärm macht (Granaten, Rohrbomben usw.), sucht der Boss den Spieler und greift an aus heiterem Himmel, anstatt zu warten, bis der Spieler die Boss-Arena erreicht.

Nate
quelle