Servo

Category: Executor Tier: Plus

Purpose

Applies steering behaviors to a 2D or 3D host: Seek, Flee, Pursue, Evade, Arrive, and Wander.

Visual Reference

As added to your scene
Servo brick as it appears in the GDLink editor

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 when rotate_to_movement is enabled so flee/evade turn away immediately instead of visually backpedaling during reversal. Disabling it keeps Servo as location-only movement without changing object orientation.

Generated UI Mockup — showing expanded properties
Servo
-
x
Name:
Label this brick...
Behavior Type:
v
Movement Mode:
v
Target Object:
v
Rotate To Movement:
v
Forward Axis:
v
Expose Facing:
v
Facing Prefix:
v
Facing Scope:
v
Navigation Agent:
v
Max Speed:
v
Max Force:
v
Arrival Radius:
v
Slow Radius:
v
Wander Radius:
v
Wander Distance:
v
Wander Jitter:
v
Prediction Time:
v
Path Desired Distance:
v
Target Desired Distance:
v
Physics Mode:
v
Verbose:
v

Properties

Property

Type

Default

Notes

behavior_type

option, Seek

Steering behavior.

movement_mode

option, Direct Steering

Direct Steering or NavMesh 2D.

target_object

string, “”

Target node name/path, or a Local/Global variable that resolves to a node/path or a live Vector2/Vector3 world position.

rotate_to_movement

bool, true

When true, 2D hosts rotate to face movement direction. Turn off for location-only movement that preserves the host/sprite orientation.

forward_axis

option, +X

+X | -X | +Y | -Y — which local axis is “forward” for facing rotation. Default +X matches legacy behavior; top-down 2D games typically want -Y. (dev7-F H1)

expose_facing

bool, false

When true, writes cardinal facing direction into a variable namespace each tick. Sprite executor can read these to swap directional frames. (dev7-F H2)

facing_prefix

string, “servo”

Variable namespace for exposed facing. Writes {prefix}_direction_4way (N|E|S|W), {prefix}_direction_8way (N|NE|E|SE|S|SW|W|NW), {prefix}_facing_vector (Vector2).

facing_scope

option, Local

Where exposed facing variables are written.

navigation_agent

string, “”

Optional NavigationAgent2D node path/name. Empty auto-finds a child agent in NavMesh 2D mode.

max_speed

float, 5.0

Maximum movement speed.

max_force

float, 2.0

Steering-force clamp.

arrival_radius

float, 2.0

[Arrive] stop radius.

slow_radius

float, 5.0

[Arrive] slowdown radius.

wander_radius

float, 3.0

[Wander] wander circle radius.

wander_distance

float, 5.0

[Wander] forward wander projection.

wander_jitter

float, 1.0

[Wander] random angle change per tick.

prediction_time

float, 1.0

[Pursue/Evade] target look-ahead time.

path_desired_distance

float, 8.0

[NavMesh 2D] path-point handoff distance.

target_desired_distance

float, 12.0

[NavMesh 2D] goal completion distance.

physics_mode

option, Force

Force or Velocity.

verbose

bool, false

Throttled debug logging via the ladybug button.