Unreal 5.3 – Survival Horror Prototype


Designing tension through evasion, environment, and puzzle gating: a survival horror prototype with monster AI and Quixel-powered atmosphere.


This project is a survival horror prototype built entirely in Blueprints with Unreal Engine 5.3, developed following this Udemy course. It explores the design patterns specific to the survival horror genre — where tension comes not from combat ability but from vulnerability, limited information, and environmental pressure — implemented through monster AI, puzzle-based progression, and atmospheric world building with Quixel assets.

You can watch the prototype in action here: YouTube


The Core Design Principle: Evasion Over Combat

The defining characteristic of survival horror as a genre is that the player cannot reliably fight the threat. This is an architectural decision as much as a design one — it shapes every system in the game. The monster is not an enemy to be defeated; it is an obstacle to be evaded. This means the AI doesn’t need to be balanced around fair combat, and the player character doesn’t need a weapon system. What it does need is a monster that feels threatening and unpredictable, and a player that feels genuinely vulnerable.

In practical terms, this means the monster AI is tuned for pursuit and detection rather than for combat difficulty. The player’s interaction with the monster is almost entirely passive — hide, wait, move when safe. The tension comes from the monster’s behavior being just opaque enough that the player can’t fully predict it.


Monster AI: Perception, Patrol, and Pursuit

The monster uses Unreal’s AI framework — Behavior Tree and Blackboard — combined with the AI Perception system for detection. The behavior operates in three broad states:

Patrol: when the monster has no detected stimulus, it follows a predefined patrol path through the environment. The path defines waypoints the monster moves through in sequence, providing background movement that keeps the player aware the threat is always present somewhere in the space.

Investigation: when the AI Perception system registers a stimulus — a sound, a glimpse of the player — the monster transitions to investigation mode. It moves toward the last known location of the stimulus source. If it finds nothing, it returns to patrol. This intermediate state is crucial for tension: the monster reacting to sounds the player made gives the player agency over when they attract attention, and the investigation phase creates a window of uncertainty before the monster either finds the player or loses interest.

Pursuit: when the monster has direct line of sight to the player and the player is within detection range, it transitions to full pursuit. At this point the player’s only option is to break line of sight, hide, or reach a safe zone. The pursuit speed is tuned to be fast enough to be threatening but slow enough that a player who reacts promptly can escape — this balance is what makes the AI feel dangerous without being unfair.

The AI Perception system handles the detection logic cleanly: sight and hearing are configured as separate senses with their own range, angle, and decay parameters. A loud sound the player makes (a door slamming, running on certain floor types) has a larger detection radius than a quiet one. This creates a layered stealth model where player behavior directly influences detection probability.


Puzzle Design as Progression Gating

The puzzles serve a structural role in survival horror: they give the player a goal in each area that requires them to move through the space and interact with the environment, which creates opportunities for monster encounters that feel organic rather than scripted. A player searching for a key or a code has a reason to explore dangerous areas — the puzzle is what puts them in the monster’s path.

The puzzles in this prototype are intentionally simple — find an item, use it in the right place; find a combination, enter it on a lock. The complexity isn’t in the puzzle itself but in executing it while managing the monster’s presence. Having to solve a puzzle while listening for approaching footsteps is a fundamentally different experience from solving the same puzzle in a safe room.

From an implementation perspective, puzzles are interaction chains: interactable actors that check a condition (does the player have the required item? is the code correct?) and fire a consequence (unlock a door, trigger an event). The same Blueprint Interface pattern used across the other projects applies here — the puzzle actor exposes an interaction function, the player calls it, the puzzle handles the result.


Atmosphere with Quixel

Quixel Megascans assets provide photorealistic surface materials and props that are the visual foundation of the horror atmosphere. Concrete walls with water damage, rusted metal surfaces, decayed wood floors — these materials have the physical fidelity that makes abandoned environments read as genuinely unsettling rather than stylized.

The atmospheric quality of a survival horror environment depends heavily on lighting: pools of dim light separated by areas of near-total darkness, flickering sources that introduce uncertainty, and the contrast between what the player can see and what they can only hear. Unreal’s Lumen global illumination handles the light bouncing and indirect illumination that makes these lighting setups feel physically grounded — a flashlight illuminating a corner produces realistic light scatter on the adjacent surfaces, not a flat cone of brightness.

Sound design complements the visual atmosphere: ambient sounds that establish the environment’s baseline, then break that baseline when the monster is near. The player learns to read the soundscape as an information source — certain audio cues signal danger before the monster is visible.


Reflection

Survival horror is one of the most design-constrained genres in games, and that constraint is what makes it technically interesting. Every system — AI, puzzles, lighting, audio — is subordinated to a single goal: producing sustained tension in the player. The decisions that achieve this are often subtractive rather than additive: removing the player’s ability to fight, limiting visibility, obscuring information.

The monster AI in this prototype is relatively simple in its logic — patrol, investigate, pursue — but the perception system gives it enough behavioral nuance to feel unpredictable. This is a good example of how the right architecture (AI Perception with configurable senses) produces emergent behavior that exceeds the complexity of the underlying rules.

In C++, the Behavior Tree and Blackboard integration is identical in structure to the Blueprint version, with UAIPerceptionComponent configured in the constructor and UAISenseConfig_Sight / UAISenseConfig_Hearing registered as perception senses. The performance benefit of C++ matters more here than in some other systems, since AI update loops run frequently and perception queries can be expensive at scale.

Leave a comment

Create a website or blog at WordPress.com

Up ↑