Coca-Cola
One codebase, four platforms: training for everyone, not just headset owners
A cross-platform Unity framework delivering the same module to VR, desktop, web and mobile.
// Project Demo Videos
Video summaries
- Chemical Spillage & Evacuation: Shows the safety flow through chemical spillage response, alarms, fire handling, evacuation, and assessment inside the Coca-Cola tank farm digital twin.
- Valve LOTOTO: Demonstrates energy-isolation training with permit handling, locks, tags, valve interaction, and guided process sequencing.
- Mechanical Fan LOTOTO: Shows the procedural failure case where bypassing isolation steps triggers a realistic accident consequence inside the training simulation.
The context
Enterprise safety training in high-risk environments has a quiet failure mode: the content only reaches employees who have VR headsets. For a workforce the size of Coca-Cola's, headset-only training means most people are excluded from day one - or the client has to pay to build everything twice. Developed in Unity 6 (6000.4.10f1) with the Universal Render Pipeline (URP), this application models a high-fidelity digital twin of a Coca-Cola bulk tank farm facility - covering the lobby, PPE room, valve installations, and evacuation assembly point - to train workers in safety-critical procedures regardless of physical headset availability.
The challenge
The application needed to support two distinct products: "Chemical Spillage" and "Lototo", running across multiple platforms from a single codebase. It had to target VR headsets (Meta Quest via Oculus loader, OpenXR, Android XR, Windows MR) while providing an identical interactive training flow for desktop PCs and WebGL browser targets. Standard VR toolkits typically lock interaction logic to controller anchors, making desktop fallback look and feel like a clumsy afterthought. The goal was to build a system where the exact same dials, valves, hasps, and PPE menus could be manipulated naturally in 3D using either VR raycasting or mouse pointers.
Under the hood: interaction & training flow architecture
We solved this by developing two custom, decoupled subsystems that handle interaction and training sequence separately:
- -Dual-Input Interaction Layer - We bypassed standard XR toolkits in favor of a unified mouse-VR interface (located in
Assets/Scripts/XR/Mouse XR Both). By mapping a customUnifiedRayInteractorto anIRayInteractableinterface, objects like valves, grab targets, and snap-drop zones respond seamlessly to either a VR controller pointer or a desktop mouse cursor. This enabled cross-compatibility out-of-the-box. - -Process Sequencing Engine - The training progression is managed via a custom package,
com.virendra531.processmanager. Each phase is aProcesstracked from 0% to 100%, made of individualSubProcesssteps triggered at milestones. It supports a Guided Mode (usingHandPopup.csto show tutorials and play voiceovers) and a locked Unguided Mode (which blocks user access until they pass the guided flow). - -Walkthrough & Navigation Gating - A modular walkthrough step system orchestrates the narrative flow, fading the screen, playing the matching VO clip, and gating the next steps using trigger volume validations and checklist trackers (like the dynamic PPE checklist in
PPE.cs).
The training modules & product split
The project compiles from a single codebase into two separate, self-contained training products, each featuring its own scene progression and safety objectives:
1. Chemical Spillage, Fire Safety & Evacuation Module
This flagship safety suite guides the player through emergency response scenarios at the tank farm facility:
- -Lobby (Reception) Scene - The entry point of the training where the player learns the general facility layout, wears the required PPE, and initiates the training sequence.
- -Chemical Spillage Scene - The primary emergency response sequence featuring walkie-talkie communication, alarm systems, gas-leak VFX, and incident dramatizations.
- -Fire Safety Scene - Hands-on fire extinguisher training using raycast-based extinguishing mechanics and fire particle VFX to contain localized flare-ups.
- -Emergency Evacuation Scene - A structured evacuation drill directing the user along safe egress pathways to the designated tank farm assembly point.
- -Assessment Quiz (End Scene) - An 8-question timed safety assessment (60 seconds per question) loaded dynamically from
quiz.jsonto certify training completion.
2. LOTOTO (Lock Out, Tag Out, Try Out) Safety Module
Focused entirely on energy isolation protocols, this module trains workers in machine and valve maintenance safety:
- -Lobby (Reception) Scene - Re-uses the reception asset to manage permit-to-work handling, initial onboarding, and tool checklist preparation.
- -Electrical LOTOTO Scene - Teaches isolation of main electrical control panels using hasps, padlock locks, and warning tags.
- -Valve LOTOTO Scene - Guides the player through isolation procedures for fluid valves and butterfly locks at the tank installations.
- -Fan (Mechanical) LOTOTO Scene - Focuses on rotating machinery and motor fan removal safety. Crucially, if the trainee fails to follow the strict LOTOTO isolation steps, a realistic finger-cut accident simulation is triggered, visually dramatizing the real-world physical consequences of procedure bypass.
The outcome
The separation of interaction from training logic means that every new module authored automatically compiles to Meta Quest VR, desktop PC standalone, and WebGL browser targets. Coca-Cola's training coordinators can distribute WebGL builds via internal networks to thousands of desktop users immediately, while deploying the high-fidelity VR build to dedicated training centers. Analytics and progress tracking are captured locally and integrated via Unity Analytics telemetry to track performance trends without requiring complex external LMS setups.