top of page

Top

Library Hero.png

My Process

Level design 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
Screenshot 2026-03-04 155943.png
Screenshot 2026-03-04 154408.png
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.

A VERY MERRY NIGHTMARE

bottom of page