roblox-npc-ai
Use when creating Roblox NPCs or enemies with pathfinding, state machines, line-of-sight or FOV detection, spawns, or AI update loops.
By tabooharmony · 598 installs
npx skills add tabooharmony/roblox-brain --skill roblox-npc-ai
Source repository · Upstream listing
Roblox NPC & AI
When to Load
Load for NPCs/enemies: pathfinding, state machines, LOS/FOV detection, spawns, AI loops, or physics ownership.
Quick Reference
PathfindingService
Recompute on blocked with a bounded retry or cancellation policy.
In Studio, test Workspace.PathfindingUseImprovedSearch on representative maps before rollout; it is not scriptable.
Avoid long requests and repeated recomputation. Moving collidable geometry can trigger navigation mesh work.
Region modifiers: anchored part + PathfindingModifier Label → Costs
PassThrough = true for doors; PathfindingLink for disconnected navmesh
math.huge cost = non traversable
State Machine
idle → patrol → chase → attack → flee → dead
idle/patrol → chase (player detected) → attack (in range) → idle (lost)
any → flee (health low) → idle (safe); any → dead (health ≤ 0)
Transitions own movement changes, target cleanup, and cancellation
Detection (distance → FOV → LOS)
1. Distance (a b).Magnitude : cheapest, always first
2. FOV forward:Dot(toTarget) cosine; use a configured cone for your game, not a universal angle
3. LOS workspace:Raycast : expensive, last
If the design includes hearing or proximity detection, make it a separate configured signal rather than a universal FOV bypass.
Network Ownership
Classic projects may use SetNetworkOwner(nil) for physics sensitive NPCs, but it is not complete security. In Server Authority projects, configure the authority model instead of treating network ownership as the security boundary.
Update Loop
Throttle and stagger AI based on NPC count, path cost, and profiler evidence, not a universal tick rate. Keep NPC decisions and movement server side; client code may handle presentation.
For spawners, lifecycle cleanup, timeout handling, and performance budgets, load references/full.md .