Work HTC VIVERSE

Worlds and games

Eagle was not a one-off. These are solo builds, made on the same four-to-six week cycles, all playable in a browser tab.

Client
HTC VIVERSE
Role
Sole designer and builder
Year
2024–2026
Worlds
5
Team size
1
Install required
None

01 — Game

Infinite Powder

An endless snowboarding game that reads your hands through the webcam. Lean into the turns and the board follows; grabs, spins and flips are gestures rather than button presses. There is no finish line and no peak — the mountain does not stop.

The hard part of a hand-tracked game is not the tracking, it is the forgiveness. Raw hand positions are noisy and people hold their hands differently, so the control curve has to absorb a great deal of variation before it reaches the board, or the game feels broken rather than difficult. It reads as responsive only once it has stopped being literal.

The current build is about a fifth of the weight of the first. Hand tracking is opt-in on a key press rather than a requirement, and the tracking library is fetched only at the moment you ask for it, so it plays on a keyboard without ever touching the camera.

Play on VIVERSE

Control
Keyboard or hands
Engine
Three.js
Weight
2.1 MB
Infinite Powder key art — a rider carving through deep powder

Camera only if you press H

Infinite Powder Open in its own tab

02 — Game

Delirium 88

A solo cyberpunk adventure game, built over six weeks. 3D character design and motion capture, level design, systems and the whole art direction, all of it running in a browser.

A finalist at the HTC Hackathon 2025.

Built in
Six weeks
Engine
PlayCanvas
Team
One
Delirium 88 key art — a cyberpunk character in neon-lit rain
Delirium 88 Play on VIVERSE

03 — Game

Festival Forever

A festival management game. Build a music festival from an empty field: stages, food stalls, fairground rides, toilets, camping and staff. Thousands of tiny toon punters pour in to eat, queue, camp and dance to eighty acts across thirteen genres.

An AI site manager watches the whole thing and throws missions, tips and disasters at you — thugs, tornadoes, mud, even aliens. Keep your reputation up or get shut down.

Genre
Management sim
Acts
80 across 13 genres
Team
One
Festival Forever — a toon festival site seen from above, crowds around stages
Festival Forever Play on VIVERSE

04 — Showroom

VIVE Flagship 3D Virtual Store

An explorable store presenting the full VIVE headset range, built so a visitor can walk up to a product and look at it properly rather than scrolling past a photograph of it. There are quests threaded through the space to give someone a reason to cover it.

The commercial argument for a real-time showroom is that it holds attention for minutes where a product page holds it for seconds.

Purpose
Product showroom
Range
Full VIVE line
Install
None
The VIVE Flagship 3D Virtual Store — headsets displayed in a real-time showroom
VIVE Flagship 3D Virtual Store Open on VIVERSE

05 — Open world

Planet Gen

The open world on the landing page of this site is about a megabyte in total, and almost all of that is the renderer. The terrain, roads, buildings, trees, grass and water do not exist as files. They are generated at load time from a seed, which is why the payload is small and why every visit produces a different landscape.

Quality is detected from the device rather than asked about — grass density, draw distance, terrain level of detail, shadow resolution and pixel ratio all scale down on a phone, so one build serves a laptop and a mid-range handset without a separate mobile version.

There are two movement modes: a flight camera that cruises the terrain on its own, and a walk mode with a rigged avatar.

Payload
~1 MB
Terrain
Generated at load
Modes
Flight and walk
Planet Gen — procedurally generated terrain at sunset
Planet Gen Open in its own tab
06

One constraint, and what I would change

Everything above runs in a browser tab. No install, no store, no download before someone can see the thing working. That single constraint decides most of the engineering: the geometry budget, how assets stream, what can be generated at runtime instead of shipped, and how much has to survive a mid-range phone.

All of them are solo builds, and it shows in the same place each time — the first sixty seconds. I know these worlds, so I under-built the moment where someone who does not know them arrives. The next one gets its opening designed before its systems do.