Chuyển tới nội dung chính

The Resident Evil Camera: Fixed vs. Over-the-Shoulder

· 2 phút để đọc
Hoang Nguyen
Creative Director

Resident Evil Camera

The Eye of the Beholder

The Resident Evil franchise has undergone several radical shifts in perspective, from the cinematic fixed cameras of the original trilogy to the revolutionary over-the-shoulder (OTS) view of RE4, and finally the first-person intimacy of RE7 and Village. Each shift wasn't just a technical upgrade; it was a fundamental change in how the game delivers horror.

Fixed Camera: The Director's Control

The fixed camera angles of early RE titles were born out of technical necessity (rendering 3D characters over pre-rendered 2D backgrounds). However, Capcom turned this limitation into a strength. By controlling exactly what the player can and cannot see, the designers acted as film directors.

Fixed angles allow for Off-Screen Horror. You can hear a zombie moaning just around the corner, but the camera refuses to show it to you. This creates a sense of vulnerability and claustrophobia. The "tank controls" further emphasized this, making the player feel slightly clumsy and disconnected from their character, heightening the panic during encounters.

Over-the-Shoulder: The Agency of Action

Resident Evil 4 moved the camera behind Leon S. Kennedy's shoulder, changing the series from survival horror to action horror. This perspective gives the player much more agency. You can aim precisely, look around freely, and feel more "in" the world.

However, the OTS view introduces its own brand of fear: The Blind Spot. Unlike the fixed camera, which might show the whole room, the OTS view restricts your vision to what's directly in front of you. Horror in RE4 and its successors often comes from being flanked or surrounded, forcing the player to constantly scan their environment.

First-Person: The Death of the Avatar

With RE7, the series moved to first-person, removing the "avatar" between the player and the horror. This is the most immersive perspective, but it also feels the most restrictive. You lose the situational awareness of the third-person views, making every creak and shadow feel personally threatening.

In conclusion, there is no "correct" camera for horror. Fixed cameras excel at cinematic dread, OTS at tactical tension, and first-person at pure immersion. As developers, choosing our perspective is our first and most important step in defining the player's relationship with fear.

Subnautica: The Horror of the Unknown Depth

· 2 phút để đọc
Hoang Nguyen
Creative Director

Subnautica Depth

Terror in the Deep Blue

Subnautica is ostensibly a survival-crafting game about exploring a beautiful alien ocean. Yet, ask any player about their experience, and they will likely describe it as one of the most terrifying games they've ever played. This "accidental" horror is a result of a perfect storm of environmental design and Thalassophobia (the fear of the ocean or deep, vast bodies of water).

The Scale of the Void

The brilliance of Subnautica's horror lies in its use of scale. When you swim over the edge of a reef into the "Dead Zone," where the seafloor drops away into infinite darkness, the game triggers a visceral response. The lack of visual landmarks makes the player feel small and exposed. In the open ocean, you are not the apex predator; you are prey.

This is Environmental Vulnerability. Unlike traditional horror games that use tight corridors to create fear, Subnautica uses vast, open spaces where danger could come from any direction—including below.

Sound Design: The Roar in the Dark

The soundscape of Subnautica is doing 90% of the heavy lifting. The game uses distance-based audio and low-frequency rumbles to signal the presence of "Leviathan" class creatures long before you see them. The muffled, watery audio creates a sense of isolation, while the sudden, echoing roar of a Reaper Leviathan is designed to trigger a primal fear response.

From a technical perspective, the audio uses sophisticated Occlusion and Reverb models to simulate how sound travels through water. The way a sound's high frequencies are rolled off over distance perfectly mimics the physical properties of the ocean, adding to the realism and, by extension, the terror.

Lessons for Horror Devs

Subnautica teaches us that you don't need blood, guts, or jump scares to create fear. You just need to place the player in an environment where they are fundamentally out of their element and then use sound and scale to remind them of their own insignificance. For any indie horror dev, studying Subnautica's "Void" is a lesson in the power of atmospheric dread.

Alien Isolation: Behavioral AI Breakdown

· 2 phút để đọc
Thang Le
Senior Lead Engineer

Alien Isolation AI

The Stalker in the Vents

Alien: Isolation features one of the most sophisticated AI systems in gaming history. Unlike the scripted enemies found in many horror titles, the Xenomorph feels like a sentient, learning hunter. This wasn't achieved through a single complex algorithm, but through a clever "Two-Brain" system that balances gameplay fairness with terrifying unpredictability.

The Macro Brain and the Micro Brain

Creative Assembly designed the Alien's AI using two distinct layers:

  1. The Macro Brain (The Director): This "brain" always knows exactly where the player is. However, it doesn't tell the Alien. Instead, it gives the Alien "hints" or "search areas." If the player has been safe for too long, the Director might tell the Alien to head toward the player's general vicinity to keep the tension high. This ensures the player never feels truly safe without making the AI feel like it's "cheating."
  2. The Micro Brain (The Hunter): This is the AI that actually controls the Alien's body. It perceives the world through a set of sensors: sight, sound, and "touch" (collision). It has no direct knowledge of the player's position unless it hears a noise or catches a glimpse of them.

The Learning Tree

One of the most unsettling features of the Alien is its ability to "learn." The AI features a massive Behavior Tree with over 100 nodes. Many of these nodes are locked at the start of the game. As the player uses certain items—like the flamethrower or noise makers—the AI unlocks nodes that allow it to counter those strategies.

If you use the vents too much, the Alien will start searching them more frequently. If you use the flamethrower, it will learn to back off and wait for you to run out of fuel. This creates a dynamic "arms race" between the player and the AI, preventing the game from becoming predictable.

Technical Implementation

The system is a masterpiece of State Machine and Behavior Tree integration. By using a "Director" to manage the pacing and a "Hunter" to handle the immediate threat, the developers created an enemy that feels terrifyingly intelligent while remaining within the bounds of a playable game. For any developer looking to build a "Stalker" AI, Alien: Isolation is the definitive blueprint.

The Sound of Silent Hill: Akira Yamaoka's Industrial Dread

· 2 phút để đọc
Thang Le
Senior Lead Engineer

Silent Hill Sound

The Music of the Macabre

While many horror games rely on orchestral stings and dissonant strings, the Silent Hill series took a different path. Composer Akira Yamaoka pioneered a soundscape built on Industrial Noise, Trip-Hop, and Ambient Textures. His work isn't just a soundtrack; it's a character in its own right, fundamental to the series' psychological weight.

The Beauty of Noise

Yamaoka's secret weapon is the use of non-musical sounds. In the "Otherworld" of Silent Hill, the music is often replaced by the sound of clanging metal, grinding gears, and static white noise. These sounds are inherently abrasive to the human ear, triggering a sense of "sensory overload" and discomfort.

By mixing these harsh industrial samples with haunting, melancholic melodies, Yamaoka creates a Cognitive Dissonance. The player is simultaneously repulsed by the noise and drawn in by the sadness of the melody. This perfectly mirrors the themes of the series: the intersection of personal guilt and physical decay.

The Radio: A Technical Masterstroke

Perhaps the most iconic audio element in Silent Hill is the radio. When a monster is nearby, the player's radio emits a burst of static. From a design perspective, this is a genius move. It turns a "warning system" into a source of anxiety. The louder the static, the closer the danger, but because the static is so loud and chaotic, it masks the actual sound of the monster, making it harder to pinpoint its location.

Implementation Techniques

To achieve this "Yamaoka style" in modern games:

  1. Bit-Crushing: Apply bit-crushers to ambient loops to give them a "lo-fi," degraded quality.
  2. Layered Ambience: Don't use a single loop. Layer multiple asynchronous loops of industrial noise (steam hisses, metal scrapes) to ensure the soundscape never repeats in a predictable way.
  3. Silence as a Tool: Yamaoka knew when to let the sound drop out entirely. Sudden silence after a period of intense noise is one of the most effective ways to make a player feel exposed.

Akira Yamaoka's work reminds us that in horror, the goal of audio isn't always to be "heard"—it's to be felt in the pit of the stomach.

Transitioning to Unity 6: Wave0084 Strategy

· 2 phút để đọc
Hoang Nguyen
Creative Director

Unity 6

Embracing the Future of Indie Horror

At Wave0084, we've always been cautious about engine updates mid-production. However, the release of Unity 6 has brought a suite of features that are simply too impactful to ignore for our upcoming title, Lil Sis. This post outlines our technical rationale and the strategy we're employing to ensure a smooth transition.

Performance: The Core Driver

The primary reason for our jump to Unity 6 is the significant improvement in the Universal Render Pipeline (URP). Specifically, the introduction of GPU Resident Drawer and Spatial Temporal Post-Processing (STP) allows us to push much higher visual fidelity on target hardware like the Steam Deck and mid-range laptops.

For Lil Sis, which relies heavily on dense environmental detail and complex lighting, the GPU Resident Drawer significantly reduces our CPU-side draw call overhead. This allows us to allocate more CPU cycles to our advanced AI systems without sacrificing frame rate.

Graphics and Lighting

Unity 6's enhancements to Adaptive Probe Volumes (APV) are a game-changer for horror. Achieving realistic, moody lighting in dynamic environments has always been a struggle. APV allows for much faster iteration times and better light leakage prevention, which is crucial for maintaining the "darkness" that defines our aesthetic.

We are also leveraging the new Render Graph API. This gives our technical artists granular control over the rendering pipeline, allowing us to implement the "Sanity Glitch" effects (discussed in a previous post) more efficiently and with less boilerplate code.

The Migration Strategy

A transition like this is never without risk. Our strategy involves:

  1. Isolated Branching: The engine upgrade is handled in a dedicated Git branch, separate from the main production line.
  2. Asset Audit: Every shader and custom render feature is being audited for compatibility with the new Render Graph.
  3. Automated Testing: We've expanded our suite of smoke tests to verify that lighting and physics remain consistent across the version jump.

Transitioning to Unity 6 is an investment in the longevity and quality of Lil Sis. It allows us to build on a more stable, performant foundation, ensuring that players have the best possible experience when the game launches.

Motion Capture on an Indie Budget

· 2 phút để đọc
Hoang Nguyen
Creative Director

Motion Capture

Bringing Humanity to the Horrific

In the past, high-quality motion capture (mocap) was a luxury reserved for AAA studios with massive optical rigs. For an indie studio like Wave0084, animating complex human movements—especially the jittery, unnatural movements required for horror—by hand is an enormous time sink. Fortunately, the rise of "budget" mocap solutions has leveled the playing field.

The Rokoko Advantage

Our primary tool for Lil Sis has been the Rokoko Smartsuit Pro II. Unlike optical systems that require cameras and specialized spaces, the Rokoko suit uses inertial sensors (IMUs). This allows us to capture animations anywhere—even in our cramped studio office.

The beauty of inertial mocap is the speed of iteration. We can act out a scene, record it, and retarget it to our character model in minutes. This allows our actors to experiment with the "shaky" and "contorted" movements that make our creatures so unsettling.

Augmenting with AI

While IMU suits are great for body movement, they struggle with fine detail like fingers and facial expressions. To fill these gaps, we've integrated AI-based video analysis tools like Radical AI and Move.ai.

By filming a reference video alongside the mocap data, we can use these AI tools to extract finger movements and subtle head tilts that the suit might miss. For facial capture, we use the Apple ARKit via a standard iPhone, which provides surprisingly high-fidelity blendshape data that maps directly onto our characters in Unity.

Post-Processing the Performance

Mocap is rarely "plug and play." The data often requires cleaning to remove foot sliding or jitters. We use Autodesk MotionBuilder and Unity's Animation Rigging package to:

  1. IK Pass: Ensure feet stay firmly planted on the ground.
  2. Layered Animation: Add hand-keyed flourishes on top of the mocap data to emphasize specific "scary" movements.

By combining these budget-friendly tools, we've been able to achieve a level of animation fidelity that previously would have cost hundreds of thousands of dollars. It's a testament to the "indie-fication" of high-end tech.

Optimizing Ray-Traced Shadows for Low-End GPUs

· 2 phút để đọc
Thang Le
Senior Lead Engineer

Ray Tracing

The Shadow of the Next Gen

Ray tracing (RT) offers unparalleled realism, especially in horror where shadows are a primary narrative tool. However, the performance cost is often prohibitive for players without high-end RTX hardware. At Wave0084, we've developed a Hybrid Shadow System that brings the benefits of ray-traced shadows to a wider audience.

The Hybrid Approach

The core idea is simple: only use ray tracing where it matters most. For distant objects or subtle secondary shadows, we stick with traditional shadow maps. For hero objects and close-range shadows, we enable RT.

In Unity's High Definition Render Pipeline (HDRP), we use Ray Tracing Quality Levels.

  1. Denoising: The most expensive part of RT is often the denoising pass. By using a more aggressive, lower-resolution denoiser, we can significantly reduce the GPU load while maintaining the "soft" look of ray-traced shadows.
  2. Max Ray Length: By capping the distance a ray can travel, we prevent the GPU from calculating shadows for objects far outside the player's immediate focus.

Resolution Scaling and STP

We also leverage Spatial Temporal Post-Processing (STP). By rendering the ray-traced shadow pass at half the native resolution and then using STP to upsample and sharpen the result, we can achieve nearly identical visual quality at a fraction of the cost.

Dynamic LOD for RT

Not every object needs ray-traced shadows all the time. We implemented a C# system that dynamically toggles the Ray Tracing flag on mesh renderers based on:

  • Distance from Camera: Only objects within 10 meters receive RT shadows.
  • Light Intensity: If a light source is too dim for shadows to be clearly visible, we fall back to shadow maps.

These optimizations allow us to support ray tracing as an "Ultra" setting that is actually playable on mid-range hardware (like an RTX 3060), rather than it being a feature only accessible to a tiny fraction of our player base.

Wave0084 Studio: Year in Review 2025

· 2 phút để đọc
Hoang Nguyen
Creative Director

Year in Review

A Year of Shadows and Light

As 2025 comes to a close, we at Wave0084 find ourselves looking back on a year of incredible growth, technical challenges, and significant milestones. It has been a year defined by the development of our flagship horror title, Lil Sis, and our commitment to pushing the boundaries of indie horror.

Major Milestones

  • The Vertical Slice: In June, we completed the "Vertical Slice" of Lil Sis. This was a 15-minute playable segment that featured all our core systems: the Sanity-driven rendering, the Binaural audio, and the "Stalker" AI. This demo was instrumental in securing our latest round of funding.
  • Engine Transition: As discussed in our previous log, we made the bold decision to migrate to Unity 6. While it was a month of "technical debt" hell, the performance gains and new lighting features have already paid for themselves.
  • Community Growth: Our developer blog has seen a 300% increase in readership this year. Engaging with other developers and horror fans has provided us with invaluable feedback and motivation.

Lessons Learned (The Hard Way)

No year is without its failures. Our initial attempt at a procedural level generation system for the "Dreamscape" sequences proved to be too "gamey" and broke the atmosphere. We had to scrap three months of work and pivot back to a hand-crafted, modular approach. It was a painful lesson in Pacing vs. Replayability.

The Path to 2026

Our goals for the coming year are clear:

  1. Full Content Production: Moving from "systems" to "content." 2026 is about building out the remaining five chapters of Lil Sis.
  2. Voice and Motion Capture: Finalizing our performances using the budget-mocap pipeline we've refined this year.
  3. Public Beta: We aim to have a playable demo available for the public by late 2026.

We want to thank our community and our fellow developers for being part of this journey. The indie horror scene is more vibrant than ever, and we're proud to be a part of it. See you in the fog!

The Psychology of Jump Scares: Timing & Frequency

· 2 phút để đọc
Hoang Nguyen
Creative Director

Jump Scares

Beyond the Cheap Thrill

The jump scare is often criticized as a "cheap" way to elicit a reaction. However, when used correctly, it is a vital tool in the horror developer's arsenal. The difference between a "cheap" scare and a "masterful" one lies in Psychological Conditioning and the "Goldilocks" zone of player arousal.

The Anatomy of a Scare

A jump scare consists of three phases:

  1. The Wind-up: A period of rising tension or, conversely, a period of forced calm.
  2. The Trigger: The sudden visual or auditory stimulus.
  3. The Release: The immediate aftermath where the player's adrenaline spikes.

The mistake many devs make is focusing only on the Trigger. In reality, the Wind-up is what determines the effectiveness of the scare. If the player is constantly bombarded with scares, they become desensitized—a phenomenon known as Habituation.

Biometric Feedback in Playtesting

At Wave0084, we use heart rate monitors and skin conductance sensors during playtests to measure player "Fear levels." What we've found is that the most effective scares occur when the player's heart rate has just started to plateau after a period of tension. If the player's heart rate is already at its peak, a jump scare often results in frustration rather than fear.

The "False Scare" Technique

One of the most effective ways to manage the "Goldilocks" zone is the False Scare. This is when the game builds tension (a slamming door, a sudden shadow) but with no immediate threat. This resets the player's "threat detection" and makes them even more vulnerable to the actual scare that follows a few moments later.

By varying the frequency and timing—sometimes delaying the scare by several seconds longer than the player expects—you break their internal "fear rhythm." This unpredictability is the key to moving beyond the cheap jump scare and into the realm of true, lasting psychological impact.

Creating 'Organic' Inventory Systems in C#

· 2 phút để đọc
Thang Le
Senior Lead Engineer

Inventory System

Breaking the Fourth Wall

In horror, immersion is everything. The moment a player opens a flat, 2D menu that pauses the game, the tension is broken. They are reminded that they are playing a game. To solve this, many modern horror titles (most famously Dead Space) use Diegetic User Interfaces—UIs that exist within the world of the game.

Architecting a Diegetic Inventory

Building an "organic" inventory system in C# requires a different approach than a standard HUD. Instead of a Canvas-based UI, we use 3D objects and World-Space Canvases attached to the player's character or a handheld device.

public class DiegeticInventory : MonoBehaviour {
[SerializeField] private Transform _uiHologramAnchor;
[SerializeField] private InventoryData _data;

public void ToggleInventory() {
// Logic to animate the hologram in/out
// Ensure the game does NOT pause!
}
}

The Challenge of Real-Time Interaction

When the game doesn't pause, the inventory becomes a source of tension. The player must manage their items while potentially being hunted. This requires:

  1. Streamlined UX: Actions like "Quick Heal" or "Reload" must be intuitive so the player doesn't fumble while panicked.
  2. Physical Presence: The inventory "screen" should cast light on the player's face and the environment, reinforcing its place in the world.
  3. Animation Integration: The player character should look down at their device or backpack, creating a visual cue for the player's vulnerability.

C# Best Practices: The Data-Driven Approach

To keep the system performant, we use ScriptableObjects for item data and a Messenger/Observer pattern to update the UI. When an item is added to the InventoryData ScriptableObject, it fires an event that the DiegeticInventory listens for, updating the 3D representation without needing to poll every frame.

By removing the "safety" of a paused menu and integrating the inventory into the game world, you force the player to stay engaged with the horror even when they are just trying to manage their resources. It's a small change that has a massive impact on the overall feel of the game.