Was ist die beste Methode, um NPC-Feinde in einem FPS-Spiel in Deckung zu bringen?

8

Meine Frage bezieht sich auf die Datenstruktur (und die logische Art, diese Struktur zu verwenden) hinter dieser Art von Verhalten des NPC-Feindes: Wie berechnet er den Ort, an dem er sich verstecken kann, wenn der Spieler auf ihn schießt?

Es kann sich um ein FPS-ähnliches oder ein "Brettspiel" -Ansichtsspiel handeln ...

Pierre Watelet
quelle

Antworten:

9

Sie haben 3 Hauptoptionen:

Option 1: (Robusteste, aber CPU-intensivste)

Berechnen Sie in Echtzeit Eckbereiche, die breit genug sind, damit sich der NPC verstecken kann und die dem Spieler nicht ausgesetzt sind. Wählen Sie die nächstgelegene, die der Spieler ausblenden möchte.

Dies funktioniert auf jeder Ebene, die schön ist, und auf Ebenen mit Geometrie, die sich während des Spiels ändert. Es wird jedoch am längsten dauern, bis die Arbeit konsistent ist, und es werden bis zu den meisten CPU-Ressourcen während des Spiels verbraucht.

Option 2: (Sparen Sie Level-Designer-Zeit, minimale Echtzeit-Treffer)

Erstellen Sie ein Offline-Tool, das den Ecktest durchführt und dann Knoten in Ihrer Ebene für alle potenziellen Abdeckungsbereiche platziert. LDs können diese Knoten dann optimieren oder nicht geeignete entfernen.

Während des Spiels finde einfach den nächsten gültigen Knoten.

Dies ist insofern hilfreich, als Ihr Routing für die Eckensuche nicht 100% genau sein muss, da LDs hier und da einige fehlerhafte Knoten aussortieren können. Sie können jedoch nicht auf Änderungen in der Geometrie reagieren, es sei denn, Sie werden schlau, wenn Sie sie an Objekte anhängen oder Skripte ein- oder ausschalten.

Option 3: (Brute Force, minimaler Echtzeit-Treffer)

Lassen Sie LDs alle Deckungsknoten manuell platzieren und wählen Sie dann während des Spiels einfach den nächstgelegenen gültigen Knoten aus.

Wenn Sie viele oder große Level haben, erwarten Sie, dass sich die LDs beschweren.

wkerslake
quelle
3

Ich denke, der beste Weg, dies zu tun, wäre, manuell Kisten in den Bereichen einzurichten, in denen die NPCs Deckung suchen sollen.

Haben Sie eine Variable für "Angst" oder eine andere Metrik, die Sie möchten. Wenn ein Schwellenwert erreicht ist, sollte sich der NPC zur nächsten Box bewegen, die sich außerhalb der Sichtlinie des Spielers befindet.

Sie könnten einen Weg finden, um Feinde dynamisch hinter jedem Objekt in Deckung zu bringen, aber mehrmals können diese seltsame und unlogische Deckungspositionen erzeugen.

AttackingHobo
quelle
1

Es ist eine Beschreibung, wie die KI von killzone die Position Platz gesucht , um eine gute Position zu bringen hier (PDF). Sie können die Auswertungsfunktion ändern, um den Wert einer Deckungsposition zu erhöhen, wenn auf die KI geschossen oder diese stark beschädigt wird. Daher würde eine KI, auf die nicht geschossen wird, ein etwas höheres Risiko eingehen, um das Ziel zu erreichen.

Sie können auch die Lösung von AttackingHobbo hinzufügen und das Deckungsinteresse abhängig vom Angstfaktor erhöhen (dh 0: Ich bin unbesiegbar / 1: Ich passe auf / 5, bitte lassen Sie es aufhören).

Grüße

PATRY Guillaume
quelle
1

Kommt auf den Spielstil an. Es ist ziemlich üblich, dass Level-Designer Deckungsobjekte platzieren, die entweder ein Volumen, eine Form, die ein Deckungsobjekt darstellt, oder ein Knoten sein können. Dies ist für LDs arbeitsintensiver, bietet jedoch viel mehr Kontrolle, was normalerweise in einem Spiel mit engen Skripten erforderlich ist.

Für Open-World-Spiele benötigen Sie ein automatisches Cover-Erkennungssystem. Wir haben eine verwendet, die zur Laufzeit in Battlefield Deckung entdeckt hat: Bad Company (1 & 2), um die Zerstörung der Umwelt ungültig machen und erneut erkennen zu können.

Limette in Scheiben geschnitten
quelle