VR GAME 2025
Zhao Zirui Wen Xiangqi
Location
GDS VR Lab
Ben Pimlott Building
Goldsmiths, University of London

Project concept introduction
Platform: Unity 2021 + URP + OpenXR → Oculus Quest 3 device
Genre: Survival / Escape / Training Simulation
Core Mechanics: Locomotion, stamina management, smoke inhalation, fire damage, scene transitions, item interactions
Tech Stack:
-
XR Interaction Toolkit (2.6.4)
-
New Input System + XRI Default Input Actions
-
URP Volume & VFX Graph
-
Modular C# scripting
FireEscapeVR is a VR escape simulation experience based on Oculus Quest 3. Players are placed in a realistic natural scene, facing the threat of forest fires, and get started with the operation through step-by-step tutorials on the beginning interface. Players need to manage their stamina and smoke status in real time, avoid fallen branches and use the safe zone of the well to restore their status, make reasonable use of props, and finally escape.
Precise spatial sound effects can effectively trigger the "escape instinct", guiding players to distinguish the correct sounds and make decisions in a tense environment. It simulates the real escape process and has potential value in fire safety training and safety drills. It can be used as a core demonstration module in the VR training system.
Multi-dimensional Immersion
Core Mechanics & Systems
Visuals:
-
URP post-processing dynamically adjusts the view as you approach flames;
-
Custom Voronoi flame shader for realistic flickering and heat distortion.
Audio:
-
Spatialized audio for a 360° sound field;
-
Ambient soundscape (wind, insects, thunder) and crisis cues (crackling flames, falling trees, coughs);
-
Interaction feedback (drinking, picking up items
Haptics:
-
Quest 3 controller vibrations synced with audio cues deliver physical feedback during flame burns and smoke damage.
Locomotion:
-
Left-hand for movement (forward, back, strafe), right-hand for turning;
-
Stamina system (PlayerStamina.cs) controls sprinting and speed, below 50% triggers screen blur and vignette.
Smoke & Damage:
-
Inhale smoke to accumulate poisoning (PlayerSmoke.cs);
-
Ambient smoke particles (SmokeZone.cs) and well-clearing effect (WellSmokeController.cs);
-
Proximity to flames triggers damage and post-processing fire effects
Item Interactions:
-
Trigger to grab water bottle (XRGrabInteractable), side trigger to drink, dynamic water surface height changes (WaterLevelController.cs);
-
Drinking restores health and clears smoke

Narrative Synopsis
Tutorial (MenuScene)
-
Use StepManager to page through controls via left/right trigger
-
Last page triggers SceneSwitcher.LoadGameScene() to load the escape scenario
Escape Scenario (GameScene)
-
PersistXROrigin preserves the XR Origin, XROriginRelocator positions at spawn point
-
PlayerStamina handles endurance; FireEffectTrigger applies visual effects near fire
-
PlayerSmoke & SmokeZone manage smoke inhalation; WellSmokeController clears smoke
-
WaterLevelController manages water bottle interactions and restores health/smoke levels
-
HUD Canvas (Screen Space – Camera / World Space) shows stamina and smoke bars
Contribution details
Zhao Zirui:
-
Project Planning & Design
-
Engine Development
-
Interaction System
-
Ambient Sound Design
-
UI design
Wen Xiangqi:
-
Content Production
-
Visual Effects
-
Particle System
-
Lighting & Shading
Timetable:

Key Code Snippets & Impact
UI
Bind trigger actions from both controllers to manage UI page flow without requiring button pointing or clicking.
Transitions to the game scene if the final tutorial page is reached, or displays the next tutorial step otherwise.
Player
1. PlayerHealth
This script manages the player's health system in the game. It handles damage intake, healing, and death detection, while updating the player's current health in real-time using a UI slider.
Health Initialization

Smoke Accumulation & Decay csharp
3. PlayerStamina
Manages the player’s stamina system in VR: drains stamina while moving, regenerates when idle, applies slow-down and damage on exhaustion, and synchronizes audio (breathing), visual post-processing (FOV reduction, vignette, depth-of-field), and a UI slider.
Exhaustion Effects
Zone
2. FireDamageZone
When the player stays within the fire zone (triggered by the FireDamageZone collider), the script inflicts continuous fire damage at a specified rate per second.
3. TreeFallTrigger
When the player enters the tree’s trigger zone, the script switches the tree’s Rigidbody to physics mode, applies torque to topple it, and plays a falling sound effect.
Prop
1. WaterLevelController
Handles the drinkable water bottle interaction: players grab and drink with triggers to clear smoke, restore health, decrement uses, update the water surface, and play drinking sound effects.
Drinking Logic

2. WaterWell
When the player enters the well’s trigger zone, the script continuously reduces the player’s smoke meter at a defined rate per second and optionally plays or stops a water splash VFX.
PlayWaterEffect


2. LoadGameScene
Load the next scene in Single mode, automatically unloading the previous one.

3. XROriginRelocator
Relocates the persistent XR Origin to a predefined spawn point in the newly loaded scene.Guarantees that upon loading the game scene, the player’s rig always appears at the intended spawn location, avoiding misplacement or clipping.
4. StepManager
This script manages a multi-step tutorial interface in VR. It allows users to navigate forward and backward through tutorial pages using the left and right controller triggers. When the final page is reached, the script automatically transitions to the main game scene..



Damage Handling


Healing Mechanism

Continuous Poisoning Damage
Particle & UI Synchronization
Cough Feedback


Stamina Drain & Regeneration
Visual Post-Processing Feedback
Breathing Audio Feedback









Initialization & Event Binding

Water Surface Update

Detect the range of players' entry and exit


Reduces the smoke meter


1. SmokeZone
When the player stays within the smoke zone (triggered by the SmokeZone collider), the script continuously accumulates “smoke” at a defined rate, simulating inhalation of hazardous fumes.
1. PersistXROrigin
Ensure the XR Origin (camera + controllers + interaction manager) is not destroyed during scene transitions.
2. PlayerSmoke
Manages the player’s “smoke poisoning” system in hazy environments, including smoke accumulation, natural decay, poisoning damage, cough feedback, and synchronized UI/particle effects.



3D Assets












UI
Player status ui and beginner tutorial canvas








Development Challenges
-
Unstable Controller Input Mapping: When using the new Input System on Quest 3, initializing and registering actions for triggers and joysticks proved unstable, causing inconsistent behaviors in movement, paging, and object interactions across platforms.
-
Multi-Camera Post-Processing & Performance: URP Volumes and post-processing effects (Vignette, DOF, flame shaders) dramatically impacted frame rates in stereoscopic rendering, requiring careful tuning of sampling quality and update frequency to balance visuals with Quest 3 performance.
-
Canvas Visibility in XR: Screen Space–Overlay canvases don’t render to the HMD by default, while World Space or Screen Space–Camera canvases require precise positioning, scaling, and culling layer setup, leading to high debugging overhead and misconfigurations.

Project Summary
Due to communication issues with our initial teammate in the early stages of the FireEscapeVR project—and their refusal to share project files—Wen xiangqi and I restarted the development from March 27. I was responsible for engine development, interaction systems, and UI design, while Wenxiangqi handled 3D asset creation, audio design, and particle effects. By April 24, we had completed the core functionalities.
In addition to the forest fire environment, we also experimented with indoor fire escape scenarios. These two environments allowed us to explore the roles of sound and emergency signage during fires, completing a full cycle from tutorial, scene transition, and multi-system interaction to training feedback.
In the future, we plan to include more diverse scenarios and sound sources, aiming to further enhance immersion and make a greater impact in the fields of VR education and safety training.