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.
quelle
Antworten:
Sie interessieren sich für das hier gefundene Papier:
KI-Systeme von Left 4 Dead
quelle
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.
quelle
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 post
Trigger 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.
quelle