Pathing des véhicules
L'utilisation des véhicules par les bots nécessite un réseau de navigation adapté à la machine considérée. Il existe pour ce faire 4 actors spécifiques, 3 dédiés aux véhicules terrestres, volants et planants (il s'agit respectivement du RoadPathNode, du FlyingRoadPathNode et du HoverPathNode) et un autre, le SpecialVehicleObjective, permettant de signaler des items aux pilotes. Tous sont des sous-classes du PathNode normal.

Véhicules terrestres
Les véhicules terrestres utilisent un réseau de navigation composé de RoadPathNodes.

Leur utilisation est extrêmement simple et leurs paramètres par défaut sont généralement suffisants. Peu de cas particuliers nécessitent de changer leurs propriétés. Le réseau se construit exactement comme le réseau de PathNodes : il suffit de répartir les RoadPathNodes pour couvrir la zone où les bots doivent pouvoir utiliser les véhicules.
Les véhicules, étant beaucoup plus gros que les joueurs, ne circulent qu'entre les RoadPathNodes, sans prendre en compte les PathNodes, InventorySpots et autres points de navigation destinés aux piétons. Ces derniers peuvent en revanche circuler aussi bien sur le réseau normal des points de navigation que sur le réseau des RoadPathNodes, partant du principe que là où un véhicule peut se déplacer, un fantassin a largement la place de passer. Il n'est donc pas nécessaire de doubler chaque RoadPathNode d'un PathNode.
Le RoadPathNode possède une seule propriété spécifique : MaxRoadDist. Il s'agit de la distance maximale jusqu'à laquelle un RoadPathNode en détecte d'autres et crée un chemin. Dans la plupart des cas, il n'est pas nécessaire de changer cette distance. Il est cependant possible d'utiliser cela pour créer un chemin à sens unique en plaçant dans le rayon d'un RoadPathNode un second RoadPathNode au rayon plus petit : ce dernier sera une destination possible alors que le premier sera trop loin pour qu'une liaison soit établie dans le sens inverse.
Un certain nombre de propriétés de la classe NavigationPoint sont également utilisées par le RoadPathNode pour améliorer le comportement des bots aux commandes des véhicules terrestres.

- bNoSuperSize : Le Leviathan est un véhicule si gros que lorsqu'un bot le pilote, l'IA se comporte comme s'il était plus petit qu'il ne l'est réellement. Autrement, un bot risquerait de considérer comme trop étroits des chemins où il a en réalité la place de passer. Dans certains cas, cette triche sur la taille conduit le bot à emprunter un chemin réellement trop étroit et le véhicule se coince dans la géométrie. Si le cas se présente, régler ce paramètre sur vrai avertit le bot de ne pas tenter d'atteindre ce point aux commandes d'un Leviathan.
- bVehicleDestination : Si ce paramètre est réglé sur vrai dans les propriétés d'un point de navigation, les chemins manuellement ajoutés pour y mener (via le paramètre ForcedPaths) seront considérés comme assez larges pour que les véhicules y passent. Il s'agit en quelque sorte de l'inverse du paramètre précédent : il convainc les bots d'emprunter un chemin qui serait autrement considéré comme trop étroit.
Véhicules planants
Les véhicules planants se déplacent au-dessus du sol. Cela leur permet notamment de planer au-dessus de la surface de l'eau, que les véhicules terrestres ne peuvent pas franchir (ils subissent des dégâts tant qu'ils sont immergés). Pour permettre aux bots d'emprunter ce genre de raccourcis, on utilise le HoverPathNode, une sous-classe du RoadPathNode.

Le HoverPathNode n'a aucun paramètre spécifique. Il est pré-paramétré pour n'être accessible qu'aux véhicules planants, c'est-à-dire par défaut le Manta. Il s'utilise comme le RoadPathNode, mais les véhicules collés au sol et les piétons ne tentent pas d'emprunter les chemins créés par cet actor.
Véhicules volants
Le pathing des véhicules volants est plus complexe car le fonctionnement du FlyingPathNode est assez déroutant comparé aux autres jalons.
Entièrement dépourvu de paramètres spécifiques, le FlyingPathNode dépend de sa collision. Celle-ci est recalculée à chaque rebuild des chemins de l'IA et étendue au maximum, aussi bien son rayon que sa hauteur, jusqu'à entrer en collision avec un static-mesh ou une surface BSP. Le FlyingPathNode crée alors une connexion (matérialisée par une ligne orange lorsque les paths sont affichés) avec tous les autres FlyingPathNodes du moment que leurs collisions se touchent. La nuance est importante car elle ne nécessite pas que l'un des deux jalons soit dans la collision de l'autre, contrairement au MaxRoadDist du RoadPathNode.

La collision d'un actor sélectionné peut être affichée, comme sur l'image précédente, avec un clic-droit dans la barre de menu d'une des vues et en choisissant Actor puis Radii View.

La hauteur de la collision est importante car elle permet de connecter des FlyingPathNodes sur plusieurs niveaux de hauteur.

Notez que la collision du FlyingPathNode de gauche ne descend pas jusqu'au sol car elle touche déjà le plafond. Le cylindre de collision étant centré sur la position de l'actor, il ne peut pas être plus étendu d'un côté que de l'autre.
Le réseau des FlyingPathNode doit se relier au réseau de navigation au sol car les bots sont susceptibles de se poser ou de décoller de n'importe où dans la map. Le réseau aérien doit donc être connecté au réseau terrien un peu partout pour permettre d'atterrir ou de redécoller. Pour ce faire, le FlyingPathNode crée une connexion avec tous les jalons (points de navigation, items, etc.) qui se trouvent dans le rayon horizontal de sa collision. La hauteur de cette collision est ignorée. Cela facilite l'ajustement du pathing car on peut déterminer quels points vont être reliés à quels FlyingPathNodes simplement en affichant le rayon de ces derniers dans la vue de dessus et en regardant les jalons qui entrent dans ce rayon (du moment qu'il existe une ligne de vue dégagée entre les deux points, bien sûr).

Lorsqu'il entre dans un véhicule volant, un bot décolle pour rejoindre l'altitude du FlyingPathNode qu'il tente d'atteindre. Il est donc possible de lui imposer une hauteur de vol en déplaçant verticalement les FlyingPathNodes pour passer au-dessus ou au-dessous d'obstacles.
Le LevelInfo permet de définir la hauteur du StallZ, la hauteur maximale de la map. Si un joueur ou un bot dépasse cette altitude à l'aide d'un véhicule volant, il subira une poussée vers le bas pour le ramener sous ce niveau. Il est possible de placer des FlyingPathNodes au-dessus de cette limite (matérialisée par une ligne bleue dans les vues latérales et frontales de l'éditeur), et ils fonctionneront, mais l'éditeur les signalera au rebuild.

SpecialVehicleObjective
Ce dernier actor permet de signaler à bot qu'un objet spécifique nécessite de sortir d'un véhicule spécifique afin de s'en emparer. En effet, un joueur ou un bot qui conduit ne peut pas interagir avec les items du jeu (ramasser une arme ou un drapeau, etc.). L'exemple classique est le rédempteur au sommet de la tour centrale d'ONS-Torlan, qui n'est accessible qu'en Raptor.

Le SpecialVehicleObjective se place là où le bot doit quitter son véhicule. Ses propriétés sont très simples.

- AccessibleVehicleClasses : Ce champ permet d'ajouter les classes de véhicules concernées par le VehicleSpecialObjective. Pour Torlan, par exemple, ce champ contient la classe ONSAttackCraft, c'est-à-dire le Raptor, car il s'agit du seul véhicule volant de la map, donc le seul capable d'atteindre le sommet de la tour. Si l'objet à atteindre est sur une île, par exemple, il est possible d'ajouter également le Manta, ou bien le Scorpion s'il peut se rendre à proximité de l'objectif en sautant depuis un tremplin. On peut ajouter autant de classes que l'on veut.
- AssociatedTagActor : Tag de l'objectif que le bot cherchera à atteindre en quittant son véhicule. Dans le cas de Torlan, il s'agit du rédempteur, mais il pourrait par exemple s'agir d'un drapeau de CTF.
- MaxDist : Distance maximale à laquelle les bots sont intéressés par cet objectif. Ce paramètre permet de définir un "rayon d'attraction" du VehicleSpecialObjective. Si ce rayon est laissé sur 0, il n'y a pas de distance minimale et tout bot capable de l'atteindre (parce qu'il utilise le bon type de véhicule comme défini dans AccessibleVehicleClasses) peut décider d'aller vers l'objectif.