roblox-npcs
Build or debug Roblox NPC navigation and behavior. Use for PathfindingService, modifiers and links, blocked paths, patrol or chase logic, streaming, and scaling NPC counts.
How do I install this agent skill?
npx skills add https://github.com/nonlooped/roblox-suite --skill roblox-npcsIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill provides comprehensive Roblox pathfinding and NPC AI patterns using the official PathfindingService. It includes robust Lua examples for path following and state-driven behavior, adhering to platform best practices for performance and security.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
What does this agent skill do?
roblox-npcs
Official sources:
- https://create.roblox.com/docs/en-us/characters/pathfinding
- https://create.roblox.com/docs/en-us/workspace/streaming
- Engine classes:
PathfindingService,Path,PathWaypoint,PathfindingModifier,PathfindingLink,Humanoid
Use PathfindingService for navigation on Roblox's navigation mesh. Build patrol, chase, and other behavior around its computed paths.
PathfindingService basics
Create a path:
local PathfindingService = game:GetService("PathfindingService")
local path = PathfindingService:CreatePath({
AgentRadius = 2,
AgentHeight = 5,
AgentCanJump = true,
AgentCanClimb = false,
WaypointSpacing = 4,
Costs = {
Water = 20,
DangerZone = math.huge,
}
})
path.CalculationSecondsTimeout = 1
Compute and follow:
local humanoid = character:WaitForChild("Humanoid")
local rootPart = character:WaitForChild("HumanoidRootPart")
local success, err = pcall(function()
path:ComputeAsync(rootPart.Position, endPos)
end)
if success and path.Status == Enum.PathStatus.Success then
local waypoints = path:GetWaypoints()
-- follow waypoints with Humanoid:Move()
end
Agent parameters
| Parameter | Default | Purpose |
|---|---|---|
AgentRadius | 2 studs | Minimum clearance from obstacles |
AgentHeight | 5 studs | Vertical clearance |
AgentCanJump | true | Allows jump waypoints |
AgentCanClimb | false | Allows climbing truss parts |
WaypointSpacing | 4 studs | Distance between intermediate waypoints |
Costs | nil | Material/region/link traversal cost |
Path.CalculationSecondsTimeout limits how long the solver may run per ComputeAsync call. Set it after CreatePath and before computing.
PathWaypoint actions
Each waypoint has a Position and an Action:
Enum.PathWaypointAction.Walk: normal movement.Enum.PathWaypointAction.Jump: trigger jump.- Custom labels like
"Climb"or"UseBoat"from PathfindingModifiers/Links.
Pathfinding modifiers
PathfindingModifier instances on anchored, non-colliding parts let you influence path cost:
Label: key used inCoststable.PassThrough: iftrue, the volume is ignored by the navmesh and treated as traversable empty space (e.g., zombies "hearing" through doors).
Example:
local path = PathfindingService:CreatePath({
Costs = {
Water = 20,
DangerZone = math.huge,
UseBoat = 2,
}
})
Pathfinding links
PathfindingLink connects two Attachments with a custom label and cost, allowing paths across normally untraversable gaps.
Use for:
- Boats across water
- Teleporters
- Ladders
- One-way jumps
Your movement code checks the waypoint label and runs the custom traversal logic.
Movement patterns
Follow
Continuously recompute a path to a moving target. Throttle recomputation (e.g., every 0.5–1 s) and only recompute if the target moved far enough.
Patrol
Cycle through a list of fixed points. Recompute when blocked.
Chase
Like follow, but validate line-of-sight and distance server-side. Don't trust client-reported positions for authoritative AI.
State machine
Common NPC states: Idle, Patrol, Chase, Attack, Return. Each state handles its own path computation and Humanoid control.
Streaming compatibility
- Server-side scripts have full world state and can compute paths to any part.
- Client-side scripts may fail if the destination has streamed out. Use
workspace.PersistentLoadedand persistent models for client path destinations. - Recompute paths when dynamic/streamed obstacles block the way.
Limitations
- Direct line-of-sight distance ≤ 3,000 studs.
- Computation node budget ≈ 20,000 nodes.
- Waypoint Y coordinate must be between -65,536 and +65,536 studs.
- Incompatible parameters (e.g.,
AgentCanJump = falseto a jump-only destination) will fail.
Performance at scale
- Recompute paths on a staggered schedule, not every frame.
- Share target positions across similar NPCs when possible.
- Use
WaypointSpacing = math.hugeto reduce intermediate waypoints for long straight runs. - Consider simplifying agent geometry or using fewer active agents.
- For very large worlds, split into regions or use local patrol paths.
Common mistakes
- Computing paths every frame.
- Ignoring blocked-path events and letting NPCs walk into walls.
- Trusting client position for authoritative AI.
- Forgetting
pcallaroundComputeAsync. - Using material names incorrectly in
Costs(must matchEnum.Materialnames as strings).
Scripts
scripts/NPCPathFollower.lua: Humanoid-based path follower with blocked-path recompute, custom-label support, and connection cleanup.scripts/PatrolBehavior.lua: state-driven patrol/chase behavior with spatial detection and throttled recomputation.scripts/PathfindingUtility.lua: helpers for throttled recomputation and waypoint formatting.
Best practices
- Set
Path.CalculationSecondsTimeoutafterCreatePathto cap solver time. - Always set an explicit
Humanoid:MoveTotimeout and cancel it when the waypoint is reached or the follower is stopped. - Detect targets with spatial queries such as
workspace:GetPartBoundsInRadiusinstead of scanning every player each frame. - Stop path followers and clean up
Heartbeatconnections when theHumanoiddies or the NPC is destroyed. - For respawning NPCs, create a new behavior instance for the new character model and
Destroythe old one. - Use
PathfindingLinklabels to trigger custom traversal logic (boats, teleporters, ladders). The follower invokes a registered handler; if none exists, the waypoint falls back to normal movement. - To enable climbing, set
AgentCanClimb = trueand provideTrussPartsurfaces. Climb waypoints have theLabel"Climb". PathfindingModifierparts must beAnchored = trueandCanCollide = false.
How to proceed
- Define the agent's size and movement abilities.
- Build the world with modifiers/links for special regions.
- Implement a path-follower that handles waypoints, jumps, and blocked events.
- Layer a state machine for complex behaviors.
- Run on the server for authoritative AI; use client only for visual prediction.
- Profile with MicroProfiler and stagger recomputation for many agents.
Reference index
- modifiers-links-and-streaming.md: Route NPCs through special regions or handle streamed geometry.
- npc-behavior-patterns.md: Implement patrol, chase, combat, or state transitions.
- pathfinding-service-details.md: Configure agents, compute paths, or handle blocked waypoints.
- performance-and-scaling.md: Reduce pathfinding and simulation cost as NPC counts grow.
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/nonlooped/roblox-suite/roblox-npcs">View roblox-npcs on skillZs</a>