The system is built on a simple premise: how fast you move determines how fast you're seen. Every detectable agent reports a normalized speed that observers evaluate against detection curves, so a sprinting target fills an enemy's suspicion meter far faster than one creeping along the edge of its vision cone. Separate curves govern in-sight and out-of-sight detection, and a distance multiplier makes proximity matter, giving designers complete control over detection feel without touching code.
Each agent also carries a detection multiplier, a hook for gameplay events: firing a gun, breaking glass, or knocking over an object can spike an agent's visibility independent of movement, letting noisy actions carry real consequences.
I designed and implemented the system across both engines, including the perception layer (field-of-view, occlusion, and height checks), the suspicion accumulation model, and, in Unity, a jobified sensor manager that batches every observer's spatial queries into a single non-blocking job for scalable performance. The system supports multiple simultaneous detection targets, with a clear optimization path for collapsing to a single-target mode in single-player contexts.
Try it the playable web demo, or dig into the source on GitHub: Unity implementation · Unreal implementation