Mapping & Hammer

GMod Navmesh und AI-Nodes: Unterschied und Einrichtung

Navmesh oder AI-Nodes? Wann deine GMod-Map eine .nav-Datei für Nextbots braucht, wann info_node für klassische NPCs und wie du beides auslieferst.

Navmesh und AI-Nodes sind zwei getrennte Navigationssysteme der Source Engine. Nextbots bewegen sich über das Navmesh (Datei .nav), klassische NPCs wie npc_combine_s oder npc_zombie über einen Node-Graph aus info_node-Entities (Datei .ain). Soll deine Map mit beiden NPC-Arten funktionieren, braucht sie beides.

MerkmalNavmeshAI-Nodes
Dateimaps/<mapname>.navmaps/graphs/<mapname>.ain
Genutzt vonNextbots, also NPCs auf Basis von base_nextbotklassische NPCs wie npc_citizen, npc_combine_s, npc_zombie
AufbauFlächen, die den begehbaren Boden abdeckeneinzelne Punkte, die die Engine miteinander verbindet
Entstehtim Spiel über nav_generatein Hammer über platzierte info_node
Nachbearbeitungim Spiel mit nav_editin Hammer, danach neu kompilieren

Die beiden Systeme wissen nichts voneinander. Ein Nextbot kann mit einem perfekten Node-Graph nichts anfangen, und ein npc_combine_s ignoriert das Navmesh vollständig.

Wann du was brauchst

  • Nur Spieler, keine NPCs: Technisch ist keines der beiden Systeme nötig. Viele Server setzen später trotzdem NPC-Addons ein, deshalb lohnt sich die Vorbereitung.
  • Kämpfe mit Half-Life-2-NPCs: Du brauchst AI-Nodes. Ohne sie können die NPCs zielen, schießen und kurze Strecken direkt laufen, aber keinen Weg um Hindernisse planen.
  • Nextbot-Addons: Du brauchst ein Navmesh. Nextbots berechnen den Weg zu ihrem Ziel darüber.
  • Maps zum Veröffentlichen oder Verkaufen: Liefere beides mit. Käufer wissen selten vorher, welche Addons sie später nutzen, und fehlende Navigation fällt erst im Betrieb auf.

AI-Nodes in Hammer setzen

  1. Platziere info_node auf begehbarem Boden überall dort, wo NPCs laufen sollen: in Fluren, vor und hinter Türen, an Ecken, am oberen und unteren Ende von Treppen.
  2. Achte auf Sichtverbindung. Die Engine verbindet zwei Nodes nur, wenn der Weg dazwischen frei und begehbar ist und sie nicht zu weit auseinanderliegen; das Valve-Wiki nennt 720 Units als Obergrenze. An engen Stellen setzt du die Nodes dichter, auf offenen Flächen reichen größere Abstände.
  3. Für fliegende NPCs gibt es info_node_air. Mit info_node_hint markierst du besondere Stellen, zum Beispiel Deckung.
  4. Kompiliere die Map und lade sie im Spiel. Beim ersten Laden baut die Engine den Node-Graph und speichert ihn als .ain im Ordner maps/graphs.
  5. Prüfe das Ergebnis mit aktivem sv_cheats 1: Der Konsolenbefehl ai_nodes blendet die Nodes ein, ai_show_connect die Verbindungen dazwischen, sodass du Lücken im Netz siehst.

Setze Nodes gezielt und nicht flächendeckend im Raster. Die Engine verwaltet nur eine begrenzte Zahl an Nodes, und ein überfülltes Netz verlängert das Bauen des Graphen. Mehr zu solchen Obergrenzen steht im Artikel über Map-Limits der Source Engine.

Das Navmesh entsteht nicht in Hammer, sondern im laufenden Spiel.

  1. Lade die fertig kompilierte Map im Einzelspieler und aktiviere sv_cheats 1.
  2. Gib nav_generate ein. Die Engine tastet den begehbaren Boden ausgehend von einem Spawnpunkt ab und lädt die Map danach neu. Auf großen Maps dauert das spürbar lange.
  3. Bereiche, die vom Spawn aus nicht zu Fuß erreichbar sind, bleiben leer. Stelle dich in einen solchen Bereich, ziele auf den Boden, gib nav_mark_walkable ein und starte nav_generate erneut.
  4. Mit nav_edit 1 blendest du das Mesh ein und kannst es bearbeiten. Es gibt eigene Befehle zum Löschen, Teilen, Zusammenfügen und Verbinden von Flächen, etwa nav_delete, nav_split, nav_merge und nav_connect.
  5. Sichere das Ergebnis mit nav_save und beende den Bearbeitungsmodus mit nav_edit 0. Die Datei liegt danach als <mapname>.nav im Ordner maps.

Das automatisch erzeugte Mesh ist selten fehlerfrei. Kontrolliere vor allem Türen, Treppen, schmale Durchgänge, Dächer und Stellen, an denen Flächen in Wände oder ins Leere ragen.

Mit der Map ausliefern

Keine der beiden Dateien entsteht beim Kompilieren, und keine landet von selbst in der BSP. Du musst beide ausdrücklich mitgeben:

  • maps/<mapname>.nav
  • maps/graphs/<mapname>.ain

Der Dateiname muss exakt zum Namen der BSP passen. Benennst du die Map um, musst du beide Dateien ebenfalls umbenennen.

Wichtig ist die Reihenfolge. Die Engine baut den Node-Graph neu, wenn die .ain älter ist als die BSP oder für eine andere Map-Version erzeugt wurde. Wenn du die Map neu kompilierst oder die BSP nachträglich veränderst, etwa beim Packen von Custom Content, lädst du sie danach einmal im Spiel, lässt den Graph neu bauen und lieferst diese frische .ain aus. Das Navmesh musst du nur anpassen, wenn sich die begehbare Geometrie geändert hat.

Wie Dateien auf Server und Clients gelangen, erklärt der Artikel zu FastDL und Workshop. Der Map Scanner prüft Struktur, Entities und Pakfile einer BSP. Die .nav und die .ain sind eigene Dateien und gehören deshalb auf deine eigene Checkliste vor dem Release.

Typische Probleme

SymptomUrsacheLösung
Klassische NPCs bleiben stehen und schießen nurKeine oder unverbundene info_nodeNodes setzen, mit ai_nodes und ai_show_connect kontrollieren
Kein NPC reagiert, auch nicht auf Beschussai_disabled 1 ist aktiv, in der Sandbox die Option „Disable Thinking“Option ausschalten
Nextbot steht still oder läuft gegen WändeKeine .nav vorhanden oder der Bereich ist nicht abgedecktnav_generate, bei Bedarf vorher nav_mark_walkable
Nextbot bleibt an Türen oder Treppen hängenFehler im automatisch erzeugten MeshMit nav_edit 1 nacharbeiten und nav_save
„Node Graph out of Date. Rebuilding...“ bei jedem MapstartDie Engine hält die .ain für veraltet, oder sie fehltMap einmal laden, neue .ain ausliefern, Dateinamen prüfen

Die Meldung „Node Graph out of Date“ ist für sich genommen kein Fehler. Die Engine baut den Graph dann neu, was Ladezeit kostet. Laut Valve-Wiki kann das auch bei einer frisch heruntergeladenen .ain einmal passieren, weil das Spiel sie für veraltet hält. Zum Problem wird die Meldung erst, wenn sie bei jedem Start erscheint.

Häufige Fragen

Braucht jede GMod-Map ein Navmesh?

Nein. Ein Navmesh ist nur nötig, wenn auf der Map Nextbots laufen sollen. Für Maps, die du veröffentlichst, ist es trotzdem sinnvoll, weil viele Server später Nextbot-Addons installieren.

Kann ich das Navmesh in Hammer erstellen?

Nein. Das Navmesh wird im Spiel mit nav_generate berechnet und mit nav_edit nachbearbeitet. In Hammer platzierst du nur die info_node-Entities für den Node-Graph.

Warum erscheint „Node Graph out of Date“ bei jedem Mapstart?

Die Engine hält die gespeicherte .ain für veraltet. Das passiert zum Beispiel, wenn die BSP nach dem Erzeugen des Graphen noch einmal verändert wurde. Lade die endgültige BSP einmal im Spiel und liefere die dabei neu erzeugte Datei aus.

Funktionieren Nextbots auch mit AI-Nodes?

Nein. Nextbots nutzen ausschließlich das Navmesh, klassische NPCs ausschließlich den Node-Graph. Eine Map, die beide NPC-Arten unterstützen soll, braucht beide Dateien.