G—P / FMX 430 / Semester / Week 10

Week 10 · Phase 3 — Into Space

VR I: deploying to headsets Project 3 launch

The week your work leaves the monitor. OpenXR, VR project settings, and the unforgiving arithmetic of frame budgets — then packaging to Meta Quest and HTC Vive, and the comfort decisions that determine whether people love your space or take the headset off. Project 3 launches today.

Session Fri Nov 06 · 10:00 am – 1:50 pm · CCB-134 Bring your laptop, a USB-C data cable, your own headset if you have one — lab Quests and Vives are ready
By the end of this session you can

2:00 · Brief The frame budget is the design brief

On a monitor, a dropped frame is a hiccup. In a headset it's a lurch in your inner ear — miss frames in VR and you make people physically ill. That's why everything this week starts with arithmetic: 90 Hz means the entire world in about 11 milliseconds; 72 Hz gives you roughly 13.9. Every artistic choice you make from now on is spending that budget.

One API, two very different machines

We target both course headsets through OpenXR, the Khronos standard runtime API — write once against OpenXR and Quest, Vive, and most of the industry can run it. But the hardware underneath is not equivalent:

The honest mental model: shipping to Quest is shipping to a phone strapped to a face. Megalights demos on the projector do not survive contact with a mobile GPU — the two rendering worlds have different physics, and Project 3 lives in the stricter one.

Comfort: what makes people sick

Simulator sickness comes mostly from vection — your eyes reporting motion your inner ear doesn't feel. The known mitigations are now standard practice: teleport locomotion as the safe default, snap turns over smooth turns, vignettes during any smooth movement, and never, ever taking the camera away from the player. Smooth locomotion is a legitimate artistic choice — but it's a choice you make deliberately, with comfort options, not a default you inherit.

State of the Art · The platform map you're shipping into

Meta holds 58% of the AR/VR headset market (Q1 2026) — Quest-first is justified. But the edges matter: Valve's Steam Frame targets PC-VR streaming, Samsung's Android XR devices are arriving, and Vision Pro takes UE content via streaming paths rather than native OpenXR. Discussion: one build, five ecosystems — what does shipping cross-platform actually cost?

Counterpoint share data · 2026 headset preview

2:45 · Guided lab From viewport to headset

Everyone stands inside their own level today. We go PC-VR first (fast iteration), then package to Quest (the real deployment). Start the Quest packaging early — first Android builds are slow.

  1. Start from the VR Template — then loot it

    Create a new project from the VR Template (Games category) and play it in a headset first: it ships with OpenXR configured, a working VR pawn, and teleport locomotion. This is your reference implementation — study it, then migrate its VR pawn into a copy of your own project rather than rebuilding from zero.

  2. Check the plugin stack

    In your project: Edit > Plugins, confirm OpenXR is enabled (the template enables it; a from-scratch project won't). Add the Meta/Quest support plugin if prompted for Android deployment. While you're there, verify Unreal MCP is still enabled for the 4:00 block.

  3. VR-critical project settings

    In Project Settings, work through the VR checklist: enable Start in VR, and for the Quest target follow Epic's current mobile-VR recommendations (forward shading path, MSAA anti-aliasing, instanced stereo). Menu names shift between point releases — search the settings window rather than memorizing paths, and cross-check against the VR Template's config.

  4. First contact: VR Preview on Vive

    With SteamVR (or your PC OpenXR runtime) running and the Vive connected, use the Play button's dropdown → VR Preview. Stand in your level. First homework of the body: check your door heights and ceiling — 1:1 scale errors that hid on the monitor are suddenly obvious.

  5. Read the frame

    In the console: stat fps, then stat unit — Game, Draw, GPU times against your budget — then stat gpu to see where GPU time actually goes. Write down your three biggest costs; you'll compare them against the agent's claims at 4:00.

  6. Prepare the Quest

    Quest deployment needs the Android toolchain (UE's setup docs walk through the exact SDK/NDK versions — follow them, don't improvise) and a headset in Developer Mode paired to your Meta account. Connect over USB-C, allow the debugging prompt in the headset, and confirm the device appears with adb devices.

  7. Package and deploy

    Set the Android packaging format for Quest per Epic's Quest documentation (ASTC texture compression), then package or use Quick Launch onto the device. The first build is long — shaders and the Android toolchain — so let it run through the break. Launch from the headset's app library (unknown sources).

  8. Profile on the device

    Frame times on your PC are fiction for Quest — profile on the hardware. Use stat unit in the on-device build and note how much of your PC performance survived. That gap is your optimization to-do list, and Project 3's performance budget is graded on-device.

4:00 · AI lab The agent as performance consultant

Performance is where agent overconfidence gets expensive: plausible-sounding optimization advice is cheap to generate and costly to follow. Today the agent proposes, the profiler disposes. You already measured your scene at step 5 — now see if the agent finds the same truth.

Prompt 1 · The audit
This scene needs to run at 72 fps on a Meta Quest. Inspect the level and project settings, and identify the three most expensive things in the scene for a mobile VR target. Rank them and explain your reasoning — do not change anything yet.

Compare its top three against your stat unit / stat gpu numbers from the guided lab. Where the agent's ranking and the profiler disagree, the profiler is right — but check why the agent guessed wrong; the reasoning error is the lesson.

Prompt 2 · One fix, measured
Take your number-one item and propose the single cheapest change that would meaningfully reduce its cost on Quest. Tell me exactly what you'll change, what I should measure before and after, and what improvement you predict.

Make it commit to a prediction before you apply the change. Measure before, apply, measure after. An agent that predicts "significant improvement" and delivers 0.2 ms has taught you something about how much to trust its adjectives.

Prompt 3 · The comfort review
Review the locomotion and camera setup in this project for VR comfort: anything that moves or rotates the player's viewpoint without their input, missing vignettes on smooth motion, or interactions that require looking straight down or spinning in place. List issues with the actor and component responsible for each.

Verify by putting a classmate in the headset for two minutes — the only comfort profiler that exists is a human. Log where the agent's review and the human's experience diverge.

Before you call it shipped

5:15 · Crit / share Headsets on, then declarations

Musical headsets: two minutes in a neighbor's space, one comfort note and one scale note for the author. Then Project 3 launches formally — each person states their declared track (interactive VR piece with three authored interactions, or the LED-wall VP collaboration) and one sentence of concept. Your interaction design spec is due before implementation begins; that's this week's homework.

Homework — due before Week 11

TaskDeliverable
Write the Project 3 interaction design spec before you build anything: the three authored interactions (or the VP collaboration plan), each as plain-English behavior with success criteria.Spec committed to your Project 3 repo — required before implementation, per the project brief.
Get your own project deploying: your Project 3 shell running on target hardware, however empty.Packaged build on a Quest, or a stable Vive setup, demonstrated at Week 11's open.
Establish your performance baseline and budget.A table in AILOG.md: target frame rate, ms budget, current stat unit numbers on-device.

Resources