Designing a Suspicion Meter for Stealth AI in Unity
Design a readable suspicion meter for Unity stealth AI using evidence tracks, tier thresholds, decay, memory, hysteresis, threat priority, and player-facing feedback.
Replace can-see-player with accumulated evidence
A boolean detection flag gives the player no room to react and gives designers almost nothing to tune. A suspicion model treats sight, sound, clues, and other stimuli as evidence that builds confidence over time. Strong direct sight can rise quickly, while a faint noise or distant silhouette rises slowly.
The meter should answer a simple question: how certain is this guard that something important is happening? Movement and combat behavior can then react to confidence tiers instead of scattered sensor booleans.
Track evidence per source and per sense
Do not collapse every stimulus into one anonymous number. Track the combination of source and sense independently: sight of the player, sound from the player, a corpse clue, or a squad report. Each track can build, decay, expire, and carry its own last-known position.
This prevents a new low-value sound from replacing a strong current sighting. It also lets the guard forget old evidence without erasing a newer threat and makes the debugger capable of explaining exactly what is driving the state.
Give each tier a clear player-readable meaning
Five tiers are usually enough to create a useful arc: Unaware, Suspicious, Investigating, Alarmed, and Combat. The names can change, but each tier needs a distinct behavior and presentation. If two adjacent tiers look and act the same, they probably do not need to be separate.
- Unaware: patrol or idle with no actionable evidence.
- Suspicious: pause, look, and communicate uncertainty.
- Investigating: travel to the strongest known location.
- Alarmed: conduct an active search and coordinate with allies.
- Combat: engage only when the evidence qualifies for combat.
Use hysteresis and dwell to stop state flicker
If Combat begins at 0.95 and also ends at 0.95, tiny changes around the threshold will repeatedly enter and exit the state. Use a lower exit threshold so the guard remains committed after a confirmed sighting. The same idea can give Alarmed a minimum dwell time before it decays.
Hysteresis makes reactions feel intentional. It also gives animation, voice, search behavior, and squad communication enough time to complete rather than being interrupted by a single weak frame.
Separate alarm level from the target to act on
The most alarming evidence is not always the most useful action target. A guard may be highly alarmed by a discovered body while currently seeing the player. Keep overall suspicion separate from threat priority so the visible player wins the action decision without losing the body evidence.
Also give stimulus types maximum tiers. A smell or second-hand squad report may justify investigation or alarm but should not automatically authorize shooting at an unconfirmed position.
A fair stealth system distinguishes "I know danger exists" from "I know exactly who and where to attack."
Expose suspicion to both the player and the developer
Players need compact signals such as a meter, question mark, exclamation mark, bark, posture change, or last-known-position marker. Developers need the underlying tracks, thresholds, caps, decay, and priority values.
These are two views of the same system. When the player-facing indicator and the debugger read from the same source of truth, tuning becomes faster and the final game becomes more predictable.
Argus already connects these pieces.
Argus packages perception, awareness, memory, suspicion, search, squad coordination, and live debugging into a drop-in Unity 6 system. Use the included guard or subscribe to its events and keep your existing movement, animation, combat, and character art.