top of page

In the Event of a Crash

CMU ETC · Building Virtual Worlds

A seated VR experience where a routine flight escalates into an emergency landing. Players clear and stow trays, refasten their seatbelt, and secure an oxygen mask while turbulence repeatedly disrupts the cabin.

Role: Primary Programmer · Tutorial Flow Design & Implementation

Tools: Unity · C# · Meta XR · OpenXR

Live Playthrough

Live demonstration of the post-fix build, showing the failure outcome.

My Contribution

As the primary programmer, I built the gameplay framework and led the tutorial flow's design and implementation.

Working from playtest feedback, I implemented selected changes, coordinated supporting features with another programmer, and integrated the resulting systems. I then extended teammate-developed features and refined interaction timing, progression, and audiovisual feedback.
 

Focus: player onboarding · gameplay flow · systems integration.

Teaching Through Interaction

I designed and implemented a staged tutorial: clear and stow the player's tray, recover the seatbelt, restore a neighbor's tray, then practice across all three trays.

Environmental cues and red-to-green lighting communicate progress. Each step waits for the action to finish before introducing the next challenge.
 

Experience flow: Learn → Practice → False Calm → Emergency → Touchdown.

Reliable Physical Interactions

Clearing clutter and stowing a tray require separate touches. I refined the interaction gate to track all hand colliders and accept a new action only after cleanup finishes and the hand fully leaves the trigger. This prevents one continuous contact from triggering both actions.

When integrating the player-float feature, I extended independent player and seatbelt movement so the buckle remains reachable. The tutorial continues only after both return to position.

Outcomes That Match Player Actions

Players reported completing safety actions but still receiving a failure outcome. I traced the issue to early result locking and moved evaluation to touchdown in safety-condition mode.

The system captures mask, seatbelt, and tray states together, using shared safety criteria for lighting and the final outcome. State logging makes unexpected results easier to investigate.

The change aligns the decision point with the player's final opportunity to act.

Iteration & Faculty Feedback

Between Interim and Final, our team refined pacing, environmental cues, and escalation through playtesting. I implemented the tutorial and flow revisions, coordinated supporting features, and refined their transitions.

Following the naive-guest playthrough, faculty feedback was positive about the experience's interest curve. I led the tutorial flow's design and implementation, introducing and combining interactions before the main emergency.

The integrated build was demonstrated live on VR hardware.

Reflection & Team Process

Leading the tutorial flow taught me to consider what players understood, what they could physically reach, and when they were ready for another demand. I translated those decisions into progression rules, system connections, and interaction refinements.

I integrated and extended teammate-developed systems, including Annie’s blackout, neighbor-tray, and player-float features. Feature requirements and handoff notes supported clear responsibilities and integration points.

Read the team retrospective →

bottom of page