Star Citizen Live Gamedev: Building NPC Behaviors
Star Citizen Live gibt einen kleinen Rückblick auf die aktuelle Woche und speziell auf das Format Inside Star Citizen und beantwortet weitere Fragen zu diesen Themen. Der Stream kann jede Woche live auf dem CIG Twitch Channel angesehen und Fragen können direkt im Chat übermittelt werden.
Gastgeber dieser Episode ist Community Content Manager Jared Huckaby und als Gäste dabei sind Game Designer Dan Baker, Junior AI Programmer Jacob Pjetursson, AI Director Francesco Roccucci und Junior Technical Designer Haydn.
Zusammenfassung
- Was ist ein NPC-Verhalten?
- Das NPC-Verhalten ist wie das Gehirn eines NPCs. Dabei versuchen sie eine große Bandbreite zu haben, um auch Routinen zu integrieren und diese schnell einfügen zu können, wie das Sicherheitspersonal oder das Reparaturpersonal etc. Auch, dass sie die NPCs in einer beliebigen Umgebung einsetzen können und diese sich so verhalten, wie sie es vor Ort sollen, zählt dazu. Dafür ist es wichtig, dass die NPCs ihre Umgebung erkennen. Hinzu kommt letztendlich die Logik, die bestimmt, wie sich ein NPC verhält. Hier wird von dem großen Ganzen zu den einzelnen Schritten die Aufgabe heruntergebrochen.
- Als nächstes starten sie die Software und, damit der NPC auch die Möglichkeit sich zu orientieren hat, erschaffen sie eine ebene Fläche und fügen noch eine Gravitationsbox um diese Fläche herum, damit der NPC sich ganz normal bewegen kann. Danach wird aus der Datenbank ein weiblicher Charakter auf der Ebene eingefügt. In der Regel sind diese Basis-NPCs mit Standard-Aktivitäten ausgestattet. In diesem Beispiel mit der Ingenieursaktivität. Diese NPCs laufen in der Regel herum und Tippen an manchen Konsolen etwas ein oder reparieren mit ihrem Multitool passende Objekte.
- Um das Verhalten etwas spezifischer zu gestalten, möchte er genauer die verschiedenen Unterkategorien bearbeiten. Das erfolgt über den Punkt Subsumption. Dafür erstellt er einen neuen Ordner auf den der NPC dann Bezug nehmen wird. Dabei wird als erstes immer eine Halt Funktion eingefügt, bei der sich der NPCs im Pausenmodus befindet, wenn nichts anderes gewollt ist.
- Damit der NPC seine Umgebung erkennen und sich daran orientieren kann, wird ein Navigationsgitter über den entsprechenden Ort gelegt. Als nächstes überlegen sie sich, was ein NPC-Ingenieur so machen soll und eine Tätigkeit wäre, Dinge zu reparieren. Dabei betonen sie, dass sie genau darüber diskutieren, was genau für unterschiedliche Tätigkeiten der NPC ausführen soll, um seinem “Beruf” korrekt zu entsprechen.
- Um den Vorgang etwas zu beschleunigen haben sie 3 Objekte erschaffen: einmal ein Wandpaneel, die Komponente darin und das Relais, welches für eine beliebige Komponente stehen kann. Dabei ist es egal, ob es das Objekt eines Raumschiffs, eines Bodenfahrzeugs oder eines Gebäudes ist. Der NPC-Ingenieur kann uneingeschränkt seiner Tätigkeit nachkommen und ist nicht auf einen Typ festgelegt.
- Es ist auch so gedacht, dass man nicht jeden Vorgang programmieren muss, sondern das der NPC immer einer Grundroutine nachgeht, unabhängig davon, ob es eine Schild-, Triebwerks- oder eine Sicherungskomponente ist. Als einfachstes Beispiel nehmen sie den Vorgang, eine Sicherung auszuwechseln. Dazu haben sie eine kleine Kiste mit einem Panel, welches sich schließen und öffnen lässt. Darin befindet sich dann die Komponente – in diesem Fall die Sicherung. Dafür definieren sie die Sicherung als trag- und sammelbares Objekt. In der Regel werden den einzelnen Komponenten automatisch Tags zugeordnet, damit der NPC erkennen kann, ob eine Komponente defekt ist oder nicht. Als Spieler sieht es dann einfach so aus, als ob der NPC das Wandpaneel öffnet sich die Sicherung anschaut und wenn nichts zu reparieren ist, diese wieder einsetzt und das Wandpaneel schließt. Aus der Sicht der NPC prüft das Programm einfach nur, welche Art von Tag die Komponente hat. Zum Schluss wird der Komponenten eine virtuelle Position geben, damit wird klar gestellt, wann der NPC mit der Komponente interagieren kann.
- Danach müssen noch die passenden Animationen aus der Datenbank heraus gesucht und passend eingefügt werden. Dabei sind Animationen in verschiedene Punkte unterteilt. Bei dem Wandpaneel gibt es Animationen für für hoch und niedrig stehende Paneele. Zusätzlich gibt es dann noch die Möglichkeit ob es zentral, links oder rechts angebracht ist und damit eine etwas andere Animation erfordert.
- Für das Wandpaneel geben sie genaue Positionen an, damit klar ist wo genau die perfekte Position für den NPC ist, um auf das Wandpaneel und die dahinter liegende Sicherung zuzugreifen.
- Dann geht es wieder an den Anfang bei dem das Routing für den NPC ansteht. Denn in der Regel bekommt der NPC zwar einen Funktionsaufruf, weiß aber ohne das Routing nicht, wie er an die Sicherung kommt, da er erst die äußere Komponente öffnen muss und dafür muss der NPC das Wandpaneel bedienen.
- Da sie etwas unter Zeitdruck geraten, wird das Routing schnell ganz simpel erledigt, so dass der NPC im Beispiel erst an das obere Wandpaneel heran tritt, dieses öffnet und die Sicherungen entfernt und sich danach um das untere Wandpaneel kümmert und dort die Sicherungen entfernt.
Quelle: RSI
Übersetzung: StarCitizenBase
Social Media: FaceBook | Twitter | Community Hub