Cross-Platform Cooperative Game: Pediatric Healthcare
[08.07.2026]VR + MOBILE • CO-OP EXPERIENCE

Cross-Platform Cooperative Game: Pediatric Healthcare

Unity 6C#Photon Fusion 2XR Interaction ToolkitCross-PlatformPediatric Healthcare

A cross-platform asymmetric two-player co-op puzzle game where a VR player and a Mobile player take on different roles and viewpoints to solve puzzles together. I owned the networking layer and the cross-platform architecture for a 6-person team.

VR × Mobile Walkthrough

Discovery - Puzzle 1

Introduction

This is a cross-platform asymmetric two-player co-op puzzle game pairing a Meta Quest 3 VR player with an Android Mobile player, who take on different roles and viewpoints to solve puzzles together. As Technical Lead, I owned the networking layer and cross-platform architecture for a 6-person team, built on Unity 6 and Photon Fusion 2 (Shared Mode).

The Challenge

Building a real-time cooperative experience across two very different platforms meant the two clients could easily fight over game state. The system needed a single, unambiguous source of truth — without hardcoding an assumption about which device was hosting the session.

Networking Architecture

  • "VR writes / Mobile reads" Defined and enforced this core networking principle: the host always holds StateAuthority and writes `[Networked]` properties, while Mobile only sends RPCs to the host and reads state via ChangeDetector — eliminating state-authority conflicts at the architecture level.
  • Host ≠ VR Platform Established that authority is tied to the host regardless of device, so the system never assumes VR is always the host.
  • Single Source of Truth Drove all networked state through a single `[Networked]` phase enum, with dedicated action RPCs for player input and a two-flag `RPC_SegmentDone` handshake to advance passive phases.
  • Render-Only State Reads Read all networked state in `Render()` via ChangeDetector (never `Update()`) with teardown guards, and used one-shot host-to-all RPCs for transient feedback instead of phase transitions to avoid replayed dialogue and simulation stalls.

Systems & Engineering Practices

  • Decoupled Presentation Layer Decoupled the networking layer from presentation using static `GameEvents` (e.g. `OnSceneReady`, `OnPhaseChanged`) and a per-puzzle, per-platform bridge pattern (`Puzzle0XBridge_VR` / `_Mobile`) that drives dialogue, animation, and UI without touching networked state.
  • Scene & Audio Systems Architected the scene system with an additive loading structure, a persistent `_Main` scene, and transition orchestration, plus a cross-platform audio system (persistent AudioManager singleton, phase-driven SFX/BGM via SfxLibrary and AudioPhaseDriver).
  • Conventions & Documentation Authored and enforced cross-platform naming and code conventions (`_VR` / `_Mobile` suffixes, `Handle` event-handler prefix, `RPC_` prefix, `TBD_` placeholders, `#if UNITY_EDITOR` debug guards) and wrote the technical design doc for handover.
  • Code Review Led code review as tech lead, reviewing VR-content and Mobile-UI PRs and clearly separating blocking from non-blocking items.
  • Testing Tested with a ParrelSync dual-editor setup (main editor as VR/host, clone as Mobile) and validated on real Quest 3 + Android devices.