Navigation-Meshes in Left 4 Dead

Die Bots in Left 4 Dead basieren auf denen von bei Turtle Rock entwickelten Counter-Strike:Source Bots. In beiden Spielen werden die selben Waypoints verwendet, und wer sich schon bei Counter-Strike Source mit Botnavigation beschäftigt hat, wird sich hier schnell zurechtfinden, denn von den Arealseigenschaften abgesehen gibt es keine Änderungen.

Im Folgenden wird zuerst erklärt, wie man ein Provisorisches, automatisch generiertes nav-File erstellt, danach, wie man die Feinarbeit erledigt und die Bots individuell an seine Map anpassen kann.

Wer die Konsole im Spiel noch nicht aktiviert hat, muss im Spielefenster Steams auf L4D rechtsklicken, die Properties auswählen und bei „Launch Parameters“ -console reinschreiben. Da die Konsole in Left 4 Dead gerne mal verschwindet (meist bei Aufruf des Hauptmenüs oder Navigation darin) ist es sinnvoll, „showconsole“ auf eine Taste zu binden. Erstellt man unter left4dead/cfg eine autoexec.cfg und trägt die Zeile:

bind „F11“ „showconsole“

darin ein, kann man in einem laufenden Spiel F11 drücken, um die Konsole aufzurufen.

Schnelle Methode

Left 4 Dead mit Konsole starten, Map laden, in Reihenfolge:

  • sv_cheats 1 * nav_edit 1 (zeigt die waypoints des .nav-files an, ihr habt noch keine, deshalb seht ihr nur einen cursor und die mark_walkables)
  • nav_mark_walkable (gibt einen betretbaren bereich an, über die Map verteilen, wenn einige Areale nicht berechnet werden)
  • nav_generate (Map wird berechnet und neugestartet)
  • nav_analyze (Feinheiten der Map werden berechnet, Map neugestartet)
  • sv_cheats 0

→ Neustart

Hier fehlen allerdings noch die speziellen Waypoints für Horden, Spielerstart und Saferoom. Die Map kann zwar provisorisch getestet werden, hat aber Fehler.

Präzise Methode

Um die Map genauer zu editieren, führt man die Schritte der einfachen Methode durch, startet die Map neu und gibt dann Folgendes ein:

  • sv_cheats 1 * director_stop (verhindert, dass neue Zombies gespawnt werden)
  • nb_delete_all (Löscht alle vorhandenen Bots und Zombies)
  • nav_edit 1 (Nav-Mesh in direkter Nähe wird angezeigt, Nav-Cursor erscheint)
  • z_debug 2 (Nav-Mesh des Areals wird angezeigt)

sowie am besten cl_drawhud 0, r_drawviewmodel 0 und crosshair 0, um Hud, Waffe und Fadenkreuz auszublenden.

Nun sieht man etwa sowas:


{BILD}


Das Nav-Mesh besteht aus vielen zweidimensionalen Planes, denen Eigenschaften zugewiesen können. So könnt ihr zum Beispiel festlegen, wo Horden spawnen können, oder ob es Orte geben soll, an denen normale Zombies und/oder SI nicht spawnen. Folgende Befehle sind hier wichtig:

  • Mark X: Der Block auf den man sieht bekommt Eigenschaft X zugewiesen (siehe unten)
  • Nav_Mark: Einzelner Block wird angewählt
  • Nav_Unmark: Einzelner Block wird abgewählt
  • Nav_Toggle_in_Selected_Set: Block wird angewählt/bei erneuter Anwendung des Befehls abgewählt (andere angewählte Blöcke bleiben angewählt!)
  • Nav_Clear_Selected_Set: Alle angewählten Blöcke werden wieder abgewählt


  • Nav_Split: Block auf den man sieht wird zweigeteilt
  • Nav_Merge*: Zwei Blöcke werden zu einem verbunden (nur bei gleicher Seitenlänge)
  • Nav_Connect*: Zwei Blöcke werden als verbunden (Bots können zwischen Block1 und Block2 hin- und hergehen)
  • Nav_Disconnect*: Zwei Blöcke werden als nicht verbunden definiert (Bots benutzen einen anderen Weg)
  • Nav_Delete: Block auf den man sieht wird gelöscht

* Bedeutet, dass man zuerst einen Block mit Nav_Mark anwählen und den Befehl dann auf einen zweiten anwenden muss.

{BILD}



„Mark“-Befehle

Sieht man auf einen Block und gibt in die Konsole „Mark X“ ein, wird dem Block die Eigenschaft X zugewiesen. Jeder Block kann mehrere verschiedene Eigenschaften zugewiesen haben; um sie wieder zu entfernen, weist man ihm die Eigenschaft einfach nochmal zu.
Die in Left 4 Dead am häufigsten gebrauchten Eigenschaften sind folgende:

  • Mark Checkpoint: Für Saferooms (Start und Ende). Hier können keine Zombies oder SI spawnen (auch nicht im Versus).
  • Mark Obscured: Für uneinsichtige Stellen: Hier können immer Zombies spawnen, selbst wenn der Spieler die Stelle ansieht oder schon daran vorbeigelaufen ist.
  • Mark Precise: Bots halten sich, wenn möglich, genau in der Mitte des Blocks (wurde zB bei den Holzbrettern über den Häuserschluchten in Dead Air verwendet)
  • Mark Threat: Hier Spawnen keine SI (Spieler im Versus können es trotzdem)
  • Mark No_Mobs: Hier Spawnen keine regulären Zombies
  • Mark Battlestation: Platz, der in einem Finale oder einem Crescendo von Bots als Deckung benutzt wird
  • Mark Battlefield: Bereich, in dem ein Crescendo stattfindet
  • Mark Finale: Bereich, in dem ein Finale stattfindet




{BILD}


Gibt es irgendwelche Probleme

…gebt „Nav_Trouble_Report All“ in die Konsole ein, um euch alle Fehler im Mesh anzeigen zu lassen.
Damit eine Map spielbar ist, muss:

  • sie zwei Checkpoints beinhalten, die jeweils von einem prop_door_rotating_checkpoint vom restlichen Mesh getrennt werden
  • es einen Weg aus verbundenen Nav-Arealen geben, der vom ersten zum zweiten Checkpoint führt


Falls es trotzdem Probleme gibt, kann man z_debug und z_show_flow_delta 2 eingeben, um den Mapflow sichtbar zu machen.

Die Verwendung aller Dokumente einschließlich der Abbildungen ausschließlich zu nichtkommerziellen Zwecken. Verbreitung des Dokuments auf Speichermedien, (insbesondere auf CD-ROMs als Beilage zu Zeitschriften und Magazinen oder sog. "Mission-Packs" etc.) ist untersagt.
 
left_4_dead/tutorials/generating_nav_file.txt · Zuletzt geändert: 2011/05/24 09:21 von Adrian_Broher