Top

My Process
Pre-Production
Jira
Jira
Jira
Jira
Production
Jira
Jira
Jira
Jira
Post-Production
Jira
Jira
Jira
Jira
RESEARCH
Spatial & Atmospheric Planning
-
Structural Pacing: I researched and incorporated a two story structure featuring a double living room. This layout was chosen specifically to create varied pacing and offer the player a non-linear traversal paths through the environment.
-
Referenced both older and more modern homes as the first home was the modern one but needed to be able to transition to the older home cleanly.
SKETCH


BLOCKOUT
Spatial Logic
-
I used simple geometry to establish the blockout of the level. This allowed for rapid iteration with accurate scale and layout before any high-fidelity art was committed.
-
The layout was designed to facilitate a smooth flow between rooms, ensuring a modern feel that was more grounded and realistic. ​
Navigation & Scale:
-
I verified that the proportions of hallways and crawlspaces felt realistic and tight while remaining fully navigable for the player character.
Iterative Design:
-
Looping the testing of the greybox state to ensure the accuracy of the level and the feel and flow matched the indented goals.




SCRIPTING & FUNCTIONALITY
Interactive Systems
-
I added an interaction system that allows players to seamlessly open doors, pull out drawers, search cabinets, and interact with objects. Building these reliable systems was a priority to ensure the environment felt fully playable especially during iteration.
-
I built the functionality for collecting keys and critical path items, alongside a player-controlled light source essential for exploration and building atmospheric tension.
Player Mechanics
-
Stamina & Movement: To match the intended pacing, I implemented a limited stamina system for running and a crouch mechanic designed specifically for navigating tight spaces.




ASSET PLACEMENT
Narrative Anchoring through Modern Assets
-
I selected modern 3D assets specifically to ground the player in a recognizable, present-day setting. This environmental storytelling ensures that the player immediately understands the protagonist's "normal" world before the horror elements begin to bleed in.
-
Designing the initial space to feel perfectly normal and functional serves an important narrative purpose as it represents the calm before the storm.
-
The more modern house also has sparce decorations to again show a contrast between the more modern, colder reality and a warmer magical "false" sense of security environment made in the second older home.
Spatial Design & Set Dressing
-
Intentional Clutter: I focused on placing assets that suggest a lived-in, contemporary life—utilizing modern electronics, current furniture styles, and everyday household items. This detail encourages the player to inspect their surroundings, rewarding exploration with a deeper understanding of the character's background.
-
Visual Transitions: The layout was designed to facilitate a smooth flow between rooms while maintaining a logical architectural footprint. This realism makes the eventual "impossibility" of the vintage house's layout feel more threatening, as it breaks the rules established in the modern section.




LIGHTING
Narrative Navigation:
-
I utilized strings of low-intensity Christmas lights to subtly "breadcrumb" the player through the initial rooms keeping the player moving forward.
-
To drive the player toward key objectives, I implemented a high-intensity red "beacon" at the living room opening. This created a visual landmark that stood out against the darker environment. It served as an unspoken objective marker, ensuring the player stayed on track without the need for immersion-breaking UI prompts.
Emotional Contrast & Pacing
-
I used a "Warm vs. Cold" palette to define safe zones. Warm, golden light was used in areas meant to feel "safe," while harsher, desaturated light was reserved for the "unsafe" zones.
-
Beyond just lighting the path, I focused on what remained in the dark. By carefully controlling the falloff of each light source, I ensured that corners and doorways remained obscured, utilizing the player’s own fear of the unknown to build tension throughout the exploration phase.




OPTIMIZATION
Level Streaming & Memory Management
The foundation of the project’s performance is a Persistent Level architecture.
-
I utilized strategic trigger volumes to automate the loading and unloading of House 1 and House 2.
-
By ensuring only one major environment exists in memory at any given time, I minimized the GPU footprint, preventing frame drops during the transition between the two contrasting spaces.
Lighting & Rendering Efficiency
-
I strictly limited the number of shadow-casting lights per room. Secondary "ambience" lights (such as flickering candles or Christmas tree glows) had Cast Shadows disabled to reduce the GPU's calculation load.
-
I prioritized Spot Lights over expensive Point Lights to better control light attenuation and reduce unnecessary overlap.
-
Because the game is intentionally dark, I was able to disable dynamic shadows on the majority of the minor light sources.
-
I manually tuned the Attenuation Radius for every point and spot light in the houses. By ensuring light radii didn't overlap unnecessarily, I prevented "light leaking" and reduced the GPU's work in calculating pixel illumination for hidden surfaces.
Draw Call & Geometry Reduction
To optimize the CPU-to-GPU communication, I implemented several batching techniques.
-
I utilized the Merge Actors tool to combine static props—such as bookshelves, kitchen sets, and vintage clutteinto single meshes. This significantly reduced total draw calls.
-
Leveraging Unreal Engine 5’s Nanite system, I achieved high-detail geometry for architectural elements and furniture without the performance overhead of traditional LOD (Level of Detail) setups.
Texture & Material Budgeting
Efficient memory usage was enforced through bulk asset management.
-
I used the Property Matrix to audit and cap Maximum Texture Sizes. Large 4K textures were downscaled to 2048 or 1024 for objects that did not require extreme close-up detail, drastically reducing the VRAM overhead.
-
I built a master material system, utilizing Material Instances for all world objects. This allowed the engine to batch similar materials together, further streamlining the rendering pipeline.