In this update7
Full notes
Full Nightwatch at the Hopkins' Cliffside update
Read the full published notes in a cleaner layout. The original post stays linked below.
What changed
- Gameplay
- Maps
- Performance
Nightwatch at the Hopkins' Cliffside changes
Welcome knowledge seeker.
It's been a while. In this update, I’ll cover the design and implementation of the hostile entities — their behavior, their AI systems, and how they interact with the environment and the player. None of this is directly explained in the game, because it's a part of the experience. That's why I advise you not to read this if you haven't played the game yet. It can, and probably will, remove a big part of the first time experience, which unfortunately you can't live through twice.
I am also getting a bit into some technical stuff, so I'm writing this for people who already played the game, want to get some idea of how enemies work or will forget what is in here anyway.
The Strider
The Strider is a mobile, highly reactive threat that navigates both indoor and outdoor areas. It operates on three primary behavioral states:
Roaming – passive navigation through zones using player-relative pathfinding
Hunting – triggered when the player is spotted resulting in direct pursuit
Enlightened – activated when struck with an overcharged flashlight
Although the AI is built with Unreal Engine’s Behavior Trees, the perception and player detection system is entirely custom due to unreliability in the engine’s default implementation. The Strider’s target location selection is heavily influenced by:
The player’s location on the map
Whether they are in a hiding spot
The layout and active lighting points (toggleable lamps)
Active light sources near windows will block Strider from entering through them. After the player hides, the Strider is more likely to path away from their zone and eventually disengage — though not instantly. On the other hand, every second spent hiding increases the chances of new anomalies appearing elsewhere.
On the very, VERY early stages of development there were lots of bugs regarding walking through windows ability of the Strider. Here is a fun one: https://www.youtube.com/watch?v=D7Ms_GeOKw0
The Observer
The Observer is a static but high-threat entity that appears unpredictably in interior spaces. It is designed to apply psychological pressure through visual disruption rather than mobility.
Observers are spawned in house rooms using logic that ensures their line of sight can be obstructed — for example, by furniture, doors, or level geometry. Their behavior is defined by proximity and line of sight rules:
When directly looked at, the Observer begins charging a kill trigger, typically taking between 1.5 and 2 seconds to activate.
If within the player’s view frustum but not being directly observed, they manipulate camera movement creating a gradual pull toward them, significantly disrupting the player's ability to focus on anything.
Unlike other enemies, the Observer doesn't move or chase. Instead, it quietly turns safe spaces into traps. It forces attention management and spatial awareness, especially during multitasking moments when you are dashing through the house looking outside for anomalies and accidentally bump into him.
The Wanderer
The Wanderer is an outdoor-exclusive creature. It gradually escalates its aggression, physically emerging from underground as time passes. Its approach is governed by an offset system — it always moves around the player, but at increasing proximity over time.
Once the irritation threshold is crossed, the Wanderer attacks directly. A regular flashlight beam can slowly reverse this progression, while the overcharge mechanic will immediately force it to retreat.
I used navigation mesh modifiers to exclude indoor areas entirely. Its presence is less constant than the Strider’s, but it makes the player less eager to walk around the outside areas freely.
The animation of the Wanderer is procedural and based on the previous location of every segment of his body, which makes him move like a worm. However, this wasn't always the case. Here is a gif from really early stages when I messed with his movement animations:
When I started making the final writhing animation I generated a few bugs and failed attempts that I find very funny:
The Light Feeder
Light Feeders are ambient hazards with indirect impact. These floating entities are spawned by a central manager program whenever a new light source is activated. Once spawned, they attach to a lamp and begin draining its fuel reserve, which shortens the effective lifespan of that light.
Their interaction is based on blueprint interfaces that monitor fuel values. Once the fuel reaches zero, the feeder vanishes. The player can also overfeed it by shining the flashlight at it.
Currently, feeders are assigned to active lights randomly, but I am planning a more intelligent priority system depending on how players adapt their strategies.
Light and Tools
The flashlight plays a central role in countering nearly every entity:
Normal beam – slowly builds up Striders' enlightenment, feeds Light Feeders to dispel them
Overcharge – consumes one full battery to emit a powerful flash that immediately repels the Strider, the Wanderer, and disperses the Feeder
Fuel-powered light sources (lamps) must be manually activated and refueled. Lamps on most tables create looping zones by deterring the Strider’s movement and entry, making him go around the light. If no other path will be available, the Strider will enter the light zone anyway though. All light depletion and drain logic is handled through modular blueprint interfaces for consistency and flexibility.
Behind the Systems
Behavior Trees form the backbone of enemy AI, but player tracking and visibility logic is custom-written. It is mostly based on tracing and checking the view cones of the enemy and the player.
Zones are defined by volumes, allowing enemies to know where the player is (forest, house, seashore, etc.).
Pathfinding is augmented with navigation mesh modifiers, limiting movement or making them less likely to go through some areas for specific enemies depending mostly on light exposure.
Spawn logic and entity behavior change over time and depend on player location and dynamic difficulty phase.
Thanks for Reading!
That’s it for this devlog. The AI behavior, especially when it needs to feel a bit scary and unpredictable without being unfair, has been a solid chunk of work. As always, there’s a lot to tweak under the hood, but getting these systems to actually work is a big milestone.
Right now, I’m bouncing between working on animations and creating more anomalies.
As always, thanks for reading! Until next time.
Source
Changelog.gg summarizes and formats this update. How we read updates.
