Technical assessment
Platform inventory, risk map, package and service constraints, target budgets, and a staged porting plan.
Cross-platform Unity
Moving a Unity application between WebGL and VR changes how users enter, interact, authenticate, navigate, hear, save and leave the experience. I design the platform boundary and implement the port without turning the shared runtime into conditional code everywhere.
The real differences
The reusable part is the product model. The platform-dependent part must be made deliberate, observable and testable.
| Concern | WebGL reality | VR/XR reality | Shared design goal |
|---|---|---|---|
| Input | Mouse, keyboard, touch, browser focus | Tracked hands/controllers, poses, haptics | Intent-level actions above device bindings |
| UI | Screen layout and browser viewport | World-space panels, depth, reach and comfort | Shared information model, platform presentation |
| Lifecycle | Browser launch, focus, refresh and tab closure | Headset pause, recenter, device removal and resume | Explicit application states and recovery paths |
| Services | JavaScript bridge, cookies/tokens, CORS constraints | Native SDKs, device identity and platform stores | Stable interfaces around platform implementations |
| Performance | Heap, download size, browser and device variability | Frame-time budget, stereo rendering, thermal limits | Budgets measured on each real target |
Porting approach
The goal is not one giant abstraction. It is a small set of honest boundaries around the platform behaviors that actually differ.
Find direct SDK calls, static state, input reads, scene dependencies, browser bridges and device-specific UI decisions.
Express what the product needs—authenticate, point, select, pause, persist, play audio—without leaking the platform mechanism.
Keep implementations small, injectable and observable. Share data and business rules; specialize device behavior and presentation.
Profile real builds early. Web download and heap constraints are different from VR frame-time and thermal constraints.
Launch, authentication, focus loss, device resume, scene changes, network interruptions and platform switching expose the integration failures.
Delivery scope
A port can be a defined delivery or the entry point to a longer embedded engagement.
Platform inventory, risk map, package and service constraints, target budgets, and a staged porting plan.
Input, UI, lifecycle, authentication, persistence, audio, networking and platform strategy implementation.
Build validation, profiling, memory and asset work, diagnostics, edge-case recovery and maintainable handover.
WebGL ↔ VR
Tell me the current target, the new target and the part that feels least predictable.