DEMO · GAMES / NPC

NPC That Can't See Through Walls

A guard NPC, checked against one deterministic spatial world. The player is in the view cone but behind cover — so the guard does not see through the wall. Five agent queries, five exact answers in milliseconds.
Agent queries
5
Shared level
1 world
'Sees through walls' bug
caught
Determinism
all identical
All 5 queries
2.7 ms
cover wall crate crate table ✗ blocked by cover torch ✓ stable guard player (left of guard) clear LOS blocked LOS view cone guard path
Top-down level. Yellow = guard + heading and view cone · blue = player · green dashed = clear line of sight · red dashed = line of sight blocked by cover · blue polyline = the guard's collision-free path around the wall.
Perceptioncheck_visibility (line of sight)
"Can the guard see the player?"
↳ NO — the player is hidden; line of sight is blocked by cover_wall. The guard does NOT see through the wall
0.014 ms71,531 ops/sdet ✓
Facingperspective
"From the guard's viewpoint, is the player to its left or right?"
↳ the player is to the guard's LEFT (ahead, 9.0 m forward, 5.0 m to the left)
0.045 ms22,283 ops/sdet ✓
Pathingnavigation_plan
"How does the guard get to the player?"
↳ reachable — 12.3 m path that routes AROUND the cover wall (45 waypoints)
2.537 ms394 ops/sdet ✓
Placementcheck_stability
"Put the torch on the table — does it rest stably?"
↳ stable — the torch rests on the table; its center of mass sits 0.10 m inside the support edge
0.045 ms22,034 ops/sdet ✓
Awarenesscheck_visibility (in_fov)
"Is the player in the guard's field of view at all?"
↳ in the cone, NOT visible — the player IS inside the guard's view cone, but cover blocks the actual line of sight. 'in FOV' ≠ 'can see'
0.013 ms77,454 ops/sdet ✓
What this shows. A stealth-game level where a guard NPC's AI is checked against one Universtato world instead of being eyeballed by an LLM. The classic check_visibility result is exact: the player sits inside the guard's view cone (in_fov = true) yet the cover wall blocks the actual line of sight (visible = false) — so the guard does not 'see through the wall', the bug that plagues hand-rolled NPC perception. perspective resolves left/right from the guard's own heading, navigation_plan routes a collision-free path around the cover, and check_stability confirms the torch rests on the table by center-of-mass — not vibes. Maps to research items #19 (line-of-sight / sees-through-walls), #20 (NPC perception cones), #21 (NPC navigation around cover). Latency/determinism measured on this machine.