top of page

VR GAME 2025

Zhao Zirui  Wen Xiangqi

Location
GDS VR Lab
Ben Pimlott Building
Goldsmiths, University of London

4月29日-封面_edited_edited.png

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.

Returns Policy

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

Payment Methods

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: 

image.png

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

image.png

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

image.png

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

image.png
image.png

2. LoadGameScene

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

image.png

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..

image.png
image.png
image.png
image.png

Damage Handling

image.png
微信图片_20250430034224.png

Healing Mechanism

image.png

Continuous Poisoning Damage

Particle & UI Synchronization

image.png

Cough Feedback

image.png
image.png

Stamina Drain & Regeneration

Visual Post-Processing Feedback

Breathing Audio Feedback

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

Initialization & Event Binding

image.png

Water Surface Update

image.png

Detect the range of players' entry and exit

image.png
image.png

Reduces the smoke meter

image.png
image.png

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.

image.png
image.png
鬼森林

3D Assets

image.png
image.png
image.png
image.png
微信图片_20250430034212.png
微信图片_20250430034204.png
微信图片_20250430034221.png
微信图片_20250430034220.png
微信图片_20250430034217.png
微信图片_20250430034209.png
微信图片_20250428061714.png
微信图片_20250428061238.png

UI

Player status ui and beginner tutorial canvas

image.png
image.png
image.png
image.png
image.png
image.png
image.png
綠色背景

Development Challenges

  1. 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.

  2. 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.

  3. 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.

bottom of page