Inspiration

The inspiration for Outlast The Urge came from a universal, primal human experience: the desperate, high-stakes sprint to the bathroom when nature calls. We wanted to gamify that adrenaline rush but twist it into a psychological survival horror experience.

We noticed that many mobile horror games rely on complex combat or visual jump scares that don't translate well to smaller screens. We wanted to strip the genre back to its roots—tension, audio, and navigation—creating a "hide and seek" mechanic that feels intuitive on a touchscreen but terrifying in practice.

What it does

Outlast The Urge is a survival horror game built for Meta Horizon mobile. The premise is simple but stressful: you are trapped in a dark office building and must navigate a procedurally generated gauntlet of up to 25 rooms to find the bathroom.

However, you are not alone. An invisible entity haunts the hallways. Because the monster is invisible, players cannot rely on their eyes; they must use directional audio to detect how close the threat is. If the breathing gets too loud, the player must dive into a locker and wait for the entity to pass.

The game features:

  • Procedural Map Generation: Every run offers a unique path to the bathroom.
  • Audio-First Mechanics: The monster is detected solely through sound, making headphones a survival tool.
  • Social Competition: A global leaderboard tracks "Total Wins" (successful trips to the bathroom), encouraging players to challenge friends.

How we built it

Our primary focus was engineering a procedural world that runs smoothly on mobile hardware without draining memory or battery. We built a custom "engine" within Meta Horizon to handle the map generation:

  1. Room Placement System: We divided space into invisible 10-unit squares. When generating the path, the system searches outward in rings to find empty space. This allows us to place rooms instantly without computationally expensive collision checks.
  2. Object Pooling (The "Teleport" Method): Instantiating new objects causes lag spikes. To solve this, we created a pool where 2 copies of each room type exist hidden in the void. When the map needs a hallway, we don't build a new one; we simply teleport an existing one from the void into the correct position.
  3. Aggressive Memory Management: To maintain high frame rates, only 5 rooms exist in the active world at any time. The game looks 15 units ahead to spawn the path and immediately culls rooms behind the player, returning them to the pool.
  4. Door Connection Logic: Each room stores the exact position and angle of its doors. Our algorithm calculates the precise rotation needed to align a new room's entrance with the previous room's exit, ensuring a seamless maze.

Challenges we ran into

  • Mobile Performance vs. Procedural Generation: Early iterations suffered from frame drops whenever a new room was spawned. We had to completely refactor our code to move from "Creation/Destruction" (generating new rooms) to "Teleportation/Recycling" (Object Pooling) to eliminate these lag spikes.
  • The Invisible Threat: Balancing the difficulty of an invisible monster was tough. If the audio cues weren't precise, players felt cheated when they died. We had to fine-tune the audio attenuation curves to ensure players had just enough warning to reach a locker.
  • Map Continuity: Ensuring that 25 random rooms could connect without overlapping or leading to dead ends required complex math regarding door angles and grid placement.

Accomplishments that we're proud of

  • The "Infinite" Feel on Limited Hardware: We are incredibly proud of the memory management system. We managed to make a game that feels like a massive, sprawling complex, yet it barely consumes more memory than a single room because of how aggressively we recycle assets.
  • Audio Design: We successfully turned audio into a primary gameplay mechanic. The tension created by hearing the monster but not seeing it proved to be far scarier than a visual model ever could be.
  • Ergonomic Controls: We designed the touch interface to be simple and unobtrusive, ensuring that the player fights the monster, not the controls.

What we learned

  • Object Pooling is King: For mobile development, never create what you can recycle. Moving an object is always cheaper than making a new one.
  • Less is More: By removing the visual of the monster, we actually increased the fear factor. The player's imagination, fueled by sound, fills in the gaps more effectively than high-poly graphics.
  • Social Drivers: Even in a single-player horror game, the desire to compete on a leaderboard drives replayability.

What's next for Outlast the Urge

  • Environmental Variety: We plan to add new "biomes" beyond the office, such as a basement or a warehouse, each with unique acoustic properties.
  • Enhanced Social Features: We want to allow players to share replays of their "close calls" or funniest deaths directly to social media.
  • New Entities: We plan to introduce different invisible entities with distinct audio profiles (e.g., one that hums, one that drags chains) to keep players on their toes.

Built With

Share this project:

Updates