---
generated_by: gdlink-build
generated_at: 2026-06-23T12:34:28Z
do_not_edit: true
title: Servo
brick_type: executor
tier: Plus
generated: true
---
# Servo
**Category:** Executor
**Tier:** Plus
## Purpose
Applies steering behaviors to a 2D or 3D host: Seek, Flee, Pursue, Evade, Arrive, and Wander.
## Visual Reference
```{raw} html
```
## When To Use
- Simple enemy chase/flee logic.
- Predictive pursue/evade without helper scripts.
- Lightweight wander/arrive behavior on CharacterBody or RigidBody hosts.
- 2D enemies that need to respect NavigationRegion2D corridors and corners.
## Runtime Behavior
- Resolves the live target each tick.
- Falls back to Local/Global variable lookup when direct node lookup fails.
- Variable-backed targets may be live node references, paths, or exposed transform vectors such as `{prefix}_position`.
- Computes a desired velocity for the selected behavior.
- In `Direct Steering`, applies steering force or direct velocity depending on `physics_mode`.
- In `NavMesh 2D`, uses `NavigationAgent2D.get_next_path_position()` to drive the next desired movement vector and follow navigable corners/boundaries.
- In 2D, rotates the host to face the desired movement direction so flee/evade turn away immediately instead of visually backpedaling during reversal.
```{raw} html
Move Mode:Direct Steering
Path Dist8.0
v
Goal Dist12.0
v
Wnd Jit1.0
v
Pred Time1.0
v
Expose Facing
Verbose
```
## Properties
| Property | Type | Default | Notes |
|---|---|---|---|
| Behavior | option | Seek | Shared AI surface. Direct steering works in 2D and 3D. NavMesh 2D is an explicit 2D-only movement mode. |
| Move Mode | option | Direct Steering | Direct Steering works in 2D and 3D. NavMesh 2D uses NavigationAgent2D on 2D hosts. |
| Target | string | | Node name/path or variable containing a live node reference, path, or Vector2/Vector3 position to seek/flee/pursue/evade/arrive toward |
| Nav Agent | string | | [NavMesh 2D] Optional NavigationAgent2D node path/name. Leave empty to auto-find a child agent. |
| Path Dist | float | 8.0 | [NavMesh 2D] Distance from the path point before advancing to the next point |
| Goal Dist | float | 12.0 | [NavMesh 2D] Distance from the goal before navigation is considered complete |
| Max Spd | float | 5.0 | Max movement speed (world units/s — for 2D pixel games use ~100–300) |
| Max Frc | float | 2.0 | Max steering force clamp |
| Arr. Rad | float | 2.0 | [Arrive] Full stop within this distance (2D: use 10–50px; 3D: ~0.5–2m) |
| Slow Rad | float | 5.0 | [Arrive] Begin slowing at this distance (2D: use 50–150px; 3D: ~2–10m) |
| Wnd Rad | float | 3.0 | [Wander] Radius of wander circle |
| Wnd Dist | float | 5.0 | [Wander] Distance ahead to project wander circle |
| Wnd Jit | float | 1.0 | [Wander] Random angle displacement per tick |
| Pred Time | float | 1.0 | [Pursue/Evade] Seconds ahead to predict target position |
| Physics Mode | option | Force | Force=apply_central_force (RigidBody only); Velocity=set velocity (RigidBody or CharacterBody) |
| Forward | option | +X | Which local axis points 'forward'. Default +X (legacy). Top-down games typically want -Y. |
| Expose Facing | bool | False | Write 4-way and 8-way cardinal direction (N/NE/E/SE/S/SW/W/NW) plus facing_vector to a variable namespace, for sprite animation swap. |
| Facing Prefix | string | servo | Variable namespace for exposed facing. Writes {prefix}_direction_4way, {prefix}_direction_8way, {prefix}_facing_vector. |
| Facing Scope | option | Local | Where to write the exposed facing variables. |
| Verbose | bool | False | Log steering behavior, target, and velocity each tick (controlled by ladybug button) |