Shardbreaker
A mixed reality arcade game for Meta Quest 3. The headset scans your room, then crystals appear on your actual walls. Every one you break adds three seconds to a countdown that never stops.
- Role
- Solo developer, technical artist
- Engine
- Unreal Engine 5 (Blueprints, HLSL)
- Platform
- Meta Quest 3, passthrough MR
- Context
- SCAD, ARVR 440
- Year
- 2024
4 problems, 4 answers.
Spawn crystals procedurally on the real walls of whatever room the player is in.
ApproachThe room comes in through Meta's scene anchors. A MixedRealityAnchorActor lets me spawn a custom actor on any detected surface: wall, floor, table.
All spawning lives in a BPC_GameManager component on the VR pawn. Its Spawn Crystals event calls Get Random Wall, which picks from a WallAndLocation map (wall reference to location), then Random Location Switcher picks a point on that wall.
When a crystal is destroyed, the same spawn event is bound to fire again, and the score updater runs. Spawning and scoring stay in one manager, so the game logic reads as one graph.
Build a shield with a highly customizable pattern that dissolves along the pattern itself.
ApproachThe pattern is written in HLSL inside a Custom node: for loops, branches and trig functions give me a pattern I can tune far beyond what a texture would allow.
The dissolve noise is its own material function so the outer shield material can reuse it. A noise texture drives the dissolve, and the dissolve flows along the pattern rather than across it.
A radial gradient controls the fill direction, so the shield closes inward from the rim.
Put a UI on the player's palm that shows everything needed to play.
ApproachA widget blueprint shows best score, current score and time. The timer updates each second and writes the countdown to the widget.
The radial timer is a user interface material with a single completion parameter. The remaining seconds are normalized from the 0 to 60 range into that parameter, so the ring and the number always agree.
Add a smoke effect for the moment a crystal spawns in.
ApproachThe emitter bursts a handful of spheres outward with a smoke material. The dust material is world aligned so the texture never reads as repeating across cards.
UV distortion is panned and rotated to give the dust a natural dispersal, and world position offset adds subtle bumps to each sphere so no two cards look alike.
