ue-ai-and-navigation

Implement Unreal Engine AI with Behavior Trees, NavMesh pathfinding, EQS, Perception, and StateTree.

55|5|Updated Mar 26, 2026
One-click install
npx skills add https://github.com/kevinpbuckley/unreal-engine-skills --skill ue-ai-and-navigation-kevinpbuckley
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ue-ai-and-navigation
Source: https://github.com/kevinpbuckley/unreal-engine-skills/tree/main/skills/core/ue-ai-and-navigation
Command: npx skills add https://github.com/kevinpbuckley/unreal-engine-skills --skill ue-ai-and-navigation-kevinpbuckley

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Building believable enemy and NPC behavior in Unreal Engine requires coordinating many subsystems — AIController possession, Behavior Trees and Blackboards, NavMesh pathfinding, EQS spatial queries, AI Perception senses, and StateTree — and getting the exact C++ APIs, module dependencies, and setup order right is error-prone without deep engine knowledge. ## Core Features & Use Cases - Behavior Tree & Blackboard authoring: Create custom tasks, decorators, and services in C++, manage Blackboard keys, and handle node instancing and NodeMemory correctly. - Navigation & movement: Set up NavMeshBoundsVolume, issue MoveToActor/MoveToLocation calls, handle path-following results, configure nav areas, avoidance (RVO/Detour Crowd), and Navigation Invokers for open worlds. - EQS, Perception & StateTree: Run FEnvQueryRequest queries for cover/flanking positions, configure sight/hearing/damage senses with OnTargetPerceptionUpdated, and adopt UStateTreeAIComponent as a modern BT alternative. - Use Case: You need an enemy that patrols, sees the player via sight perception, queries EQS for the best cover position, and chases with real pathfinding — this Skill provides the exact controller setup, sense configuration, and Blackboard wiring to build it. ## Quick Start Ask the agent to create an AIController with a Behavior Tree, sight perception, and NavMesh-based movement for an enemy character in your Unreal project.

Frequently Asked Questions about ue-ai-and-navigation

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I make an AI character move to a target in Unreal Engine?

Call MoveToActor or MoveToLocation on the AIController, which uses the NavMesh for pathfinding and UPathFollowingComponent for movement. You must place a NavMeshBoundsVolume in the level, give the pawn a movement component, and set AutoPossessAI so the controller possesses the pawn.

How do I set up AI Perception sight sense in Unreal C++?

Create a UAIPerceptionComponent on the AIController, add a UAISenseConfig_Sight with SightRadius and PeripheralVisionAngleDegrees, then call ConfigureSense. Bind OnTargetPerceptionUpdated to react to stimuli, and add UAIPerceptionStimuliSourceComponent to target actors so they can be detected.

Should I use Behavior Trees or StateTree for Unreal AI?

StateTree is the current direction for new Epic AI work and suits explicit state transitions and UE 5.4+ projects via UStateTreeAIComponent. Behavior Trees remain better for existing large codebases and many simple AI sharing tree assets; the two systems can coexist in one project.

Why does MoveTo fail silently in Unreal Engine?

MoveTo fails silently when there is no NavMeshBoundsVolume in the level, the navmesh was not rebuilt after geometry changes, or the pawn lacks a movement component. Press P in the editor viewport to visualize nav coverage and verify the mesh exists where the AI needs to walk.

How do I run an EQS query from C++ in Unreal?

Create an FEnvQueryRequest with your UEnvQuery asset and call Execute with a run mode like SingleResult and a callback receiving TSharedPtr<FEnvQueryResult>. EQS must be enabled in Project Settings under AI, and results can be written to Blackboard keys for Behavior Tree tasks.

Why does my custom Behavior Tree task share state between AI agents?

BT nodes are not instanced by default, so one UObject is shared across every AI using the same tree asset. Store per-AI runtime data in NodeMemory via GetInstanceMemorySize and CastInstanceNodeMemory, or set bCreateNodeInstance to true in the node constructor.