Please Wait
Loading Providence Studios
Please Wait
Loading Providence Studios
Devblog
The guards are real now. That's the best way to describe what happened this week.
Sorry I haven't kept the devlog updated the last few days — things have been moving fast and the write-up kept getting pushed. Here's a full breakdown of everything that landed since the last entry.
The guards are real now. That's the best way to describe what happened this week.
For several sessions prior, the stealth layer had all the right pieces in isolation — visibility scores ticking, noise events firing, the perception channel open and waiting. But there was nothing listening. No patrol thinking about what it heard. No camera scanning the corridor. No consequence to being seen except an empty alert bus with no handlers.
That changed this week. The patrol AI now runs a full suspicion pipeline in its controller: a live 0–100 score that climbs when the AI senses Ethan through sight or sound and decays when it loses contact. Cross 85 and it hits Alert. It breaks patrol, moves to the last known position, waits, searches. If Ethan hides and the AI doesn't find anything, suspicion bleeds back down and it resumes the route as if nothing happened. That is the core stealth loop — the one where the player goes quiet, holds their breath, and then breathes again when the guard walks away.
The EncounterAlertManager handles zone-level escalation separately. It tracks the zone's memory of a threat and only escalates — never auto-decays. The guard's suspicion is real-time. The zone's memory is persistent. Both are true at the same time and serve different purposes.
Cameras went in as a distinct actor system. ACameraDetectionActor runs a sphere overlap that narrows to a cone via a dot product check, then a line-of-sight trace. Step into the camera's field of view with nothing in the way and it pushes a zone alert. A debug flag draws the detection cone in PIE in real time — yellow when watching, red when the player is detected.
The public action system was the third major piece. When Ethan does something bold and visible — sharing the gospel openly, hijacking a broadcast, organizing a public prayer in a district square — the action now ripples through the world. The boldness level (Quiet / Local / District / City-Wide) drives how much GlobalAuthorityPressure climbs and how aggressively the narrative axes shift. District-wide activity pushes every EncounterAlertManager in the level to Active Response. The channel is now open between Ethan's public witness and the world's response to it. That's one of the theological cores of this game made real in code.
A debug stealth state widget also landed — four states (Hidden / Suspicious / Seen / Danger) driven by the highest active suspicion level across all patrol AIs. Phase 9 polishes it into something the player will actually want to look at. For now it tells us if the system is working.
The dialogue UI also got a significant overhaul this week. Choices no longer live inside a panel box — they float over the world, numbered, at the right side of the screen. The player speech line sits at the center bottom. Number keys 1–9 select responses directly. Gamepad navigation and mouse hover both drive the selection arrow independently. The UI is pulling toward something that gets out of the way of the world it's sitting on top of.
Share This Post
Send this article to your audience or copy the direct link.
X, Facebook, Reddit, LinkedIn, or copy link
Devblog Updates
Get milestone-focused devblog posts by email. This list is separate from the studio blog and can be managed independently.