VR Game Tutorial and Training Module Development
Tutorial in VR—fundamentally different from flat games. Can't show text tooltip in corner and wait for reading. Can't freeze time and show overlay hint—breaks immersion. Player looks where they want, can physically turn away from educational element. Tutorial must follow attention, not demand it.
Main problem: player spatial attention
In 2D games, tutorial lives in HUD. In VR no HUD—attaching UI to camera causes motion sickness. Standard approach—world-space UI on Canvas in World Space mode, but requires player looking at UI.
Solution: gaze detection + attention proxy. Tutorial system tracks where player looks (via OVREyeGaze on Quest Pro with eye tracking, or simplified headset direction for Quest 2/3). When player looks right direction—show hint. When turns away—either wait or move hint into view.
For Quest 2/3 without eye tracking: approximation via headset forward direction + Physics.Raycast() from head position. Not perfect, but works for most scenarios.
Second mechanism—directional indicator: if player must look at object for hint, arrow or light beam points correct direction. Implemented via Billboard component maintaining camera orientation + angle calculation between camera forward and target direction.
Step sequence and completion checking
Tutorial is a finite state machine. Each step—state with transition condition to next. In Unity nicely implemented ScriptableObject-oriented: each TutorialStep—SO with fields: description, target object, completion condition (TutorialCondition—abstract class with GrabCondition, TeleportCondition, LookAtCondition, ButtonPressCondition subclasses).
GrabCondition checks if XRGrabInteractable on specific object entered isSelected status. LookAtCondition—angle between head forward and target direction less than 25 degrees for 1.5 seconds. Simulates "intentional looking, not accidental."
Hint persistence: if player stuck on step longer 30 seconds—show additional hint. If longer 60 seconds—more explicit. Don't punish, don't block—just add context.
VR specifics: comfort during learning
New VR users often experience discomfort—tutorial exacerbates if requiring fast moves or nonstandard poses. Several rules:
Tutorial doesn't require teleport and locomotion first 2 minutes. Let player acclimatize standing still with simple hand interactions.
No hard timers. Step completion time—unlimited or very large. Timer anxiety + VR = guaranteed discomfort.
Tutorial objects positioned in comfortable interaction zone: 40–70 cm from player, at shoulder/chest height. Not overhead, not at floor—uncomfortable and unrealistic.
Localization and voice hints
With narrator—audio hints should auto-interrupt if player completes step before text ends. AudioSource.Stop() on OnTutorialStepCompleted—basic requirement, else player hears hint for already-completed action.
Subtitles for accessibility—world-space TextMeshPro with dynamic positioning relative to head position. Distance 1.5–2 meters, lower view area.
| Tutorial scope | Estimated timeline |
|---|---|
| 5–8 steps, basic mechanics | 1–2 weeks |
| Complete tutorial (15–20 steps, branching) | 3–6 weeks |
| Tutorial + learning system with progression | 4–8 weeks |
Cost is determined after analyzing game mechanics and accessibility requirements.





