Description

The Romance of the Three Kingdoms, on your table.

Tabletop Kingdoms is a single-player, turn-based tactics game for Meta Quest, built and tuned on Quest 3, played seated, with your hands alone. Three legendary battles from China's Three Kingdoms era play out as miniature dioramas on the table in front of you:

  • 官渡 Guandu
  • 樊城 Fancheng
  • 赤壁 Red Cliff

There are no controllers and no menus to learn: reach out, pick up your generals, and make history.

Inspiration

I grew up playing a Three Kingdoms strategy game on a black-and-white electronic dictionary: a tiny, low-resolution screen, and endless fun. Tabletop Kingdoms brings that childhood memory to life in mixed reality, built from scratch: the generals I once moved as a few pixels now stand on my own table, close enough to pick up. With VR glasses on the way, a war table you can set down anywhere feels like where this kind of game belongs.

What it does

Three battles, three set pieces.

  • 官渡 Guandu: a tutorial that teaches grab, place, attack and siege. Then the raid: carry a torch to the Wuchao granary, and as it burns, night falls over the battlefield. Storm the gate, and the palace collapses into dust.
  • 樊城 Fancheng: send your ships to breach the dike. Storm clouds gather and the river floods the lowlands, and the city's defenders struggle out of the water to fight on.
  • 赤壁 Red Cliff: escort your fire ships to Cao Cao's chained fleet. As the east wind rises, the fire leaps ship to ship. Then your fleet lands and his camp on the north bank burns.

Each city has its own look and fights back: palace archers loose volleys at your troops, and gates and palaces fall on screen when they break.

Made for hands. Every interaction is hand-tracked, end to end:

  • pinch a general to lift them and see their stats;
  • set them on a glowing tile to move;
  • point and pinch to attack.

The game never asks for a controller.

Made for your room. The battlefield is a 60 cm diorama that the game sets down on a real table in your room, square to its edge, in front of your seat. Passthrough isn't a backdrop: it's the table your war is fought on. Everything stays within arm's reach of your seat.

  • Recenter, and it follows: hold the Meta button and the board comes to the table in front of you, or floats in front of you if there's no table there.
  • No table? Play anyway: with no table, the board floats at desk height in front of you, and the game plays the same.

To play on your table: label it Table in Space Setup. It needs to be at least 62 cm wide and 42 cm deep, within reach of your seat; on a shallow desk the board hangs a little over the near edge.

Made for short sessions.

  • Each battle is designed to finish within ten minutes.
  • Take the headset off and the game pauses.
  • It saves at every turn, so Continue picks up where you left off.

Craft in every detail.

  • Generals: eleven legendary generals, each with English voice lines. The famous ones fall with a short cinematic: hit-stop, a war drum, a blood-red name banner, and the fallen general thrown across the board.
  • A living diorama: look at a general for a moment and he answers your gaze: he turns to you and hops, and the great ones raise their weapons in salute. Each army flies its commander's standard (帅旗), a new day's title rises over the board each turn, and Zhuge Liang holds up the hint scroll.
  • Ink art: briefing scrolls painted as Chinese ink landscapes, each mission with its own mountains, willows or river, and red seal stamps for victory and defeat.
  • Campaign map: an ink-wash map joins the three battles. Each city has a red seal and a miniature, along a dry-brush march from 官渡 to 樊城 to 赤壁.
  • Sound: war drums, fire crackle, rushing water and a victory gong.
  • Languages: all text is in Chinese and English.

How we built it

  • Engine and SDKs:
    • Unity 6.6 (URP) with the Meta XR All-in-One SDK v207 on Unity OpenXR.
    • Interaction SDK for hand grab, pinch and poke.
    • MRUK for table detection and world-locked anchoring; recenter re-places the board on the table in front of the player.
    • Passthrough.
  • Game code: a custom C# turn-based tactics engine, terrain rules, heuristic enemy AI, mission scripting (raid, flood, fire), and a save system.
  • Art: all 3D is procedural, built in code: low-poly miniatures, terrain and buildings on a single vertex-colour material, optimized for Quest.
  • Performance: 72 fps on Quest 3 in every battle, including Red Cliff's fire finale (GPU at most 77%), measured on the headset on Oct 18.
  • Tools: made by Fuyang Liu and published by RavenBridgeTech. A solo developer designed and directed it, building it with AI coding agents (Claude Code, Codex, Muse) and Meta's agentic tooling: Meta VR CLI, Meta XR Operator and Meta XR Simulator.

Challenges

  • Time. I built it on evenings and weekends, as a dad of two with a full-time job: about five weeks of hands-on time from the first line of code to submission.
  • Directing a team of AI agents. Claude Code, Codex and Muse wrote much of the code, sharing one Unity editor and one headset. We set up locks so only one agent drives each at a time, a shared backlog, and a rule that nothing counts as done until it has been checked on the Quest.
  • Testing in the real world. The Simulator can't show how a pinch feels or how a crowded desk changes things; many fixes came only from sessions in the headset, at home:
    • The board on a real table. Real desks are shallow and cluttered. The game measures each table from Space Setup, squares the board to it, lets it hang over a shallow desk's edge, and keeps it in place when the headset comes off.
    • Aiming with bare hands. A head-gaze reticle proved too hard to control on Quest 3, so attacks became point and pinch with a tracked hand.
  • Fire and water at 72 fps. Fire spreading across a whole fleet, a river flooding a city and a burning camp, on a mobile headset. All the art is low-poly and built in code on a single material, and each set piece was profiled on the device.

What's next

  • More battles, such as 长坂坡 Changban and 夷陵 Yiling, joined into a longer campaign.
  • Deeper strategy beyond the battlefield: weapons and equipment for your generals, bigger maps, and decisions between battles.
  • Meta VR Glasses support, so the war table goes wherever you do.
  • A public release on the Meta Horizon Store.

Target launch date: early 2027

Third-party and AI-generated content

  • 3D art: none third-party. All models are built procedurally in code.
  • Fonts: Noto Serif SC, Ma Shan Zheng and Cinzel (SIL Open Font License 1.1). Cinzel is the title lettering in the Store art.
  • Sound effects: CC0 / public domain, from Kenney, OpenGameArt (William Hector, rubberduck) and Wikimedia Commons.
  • Music: CC0, from OpenGameArt (Tozan, William Hector, Spring Spring, 0new4y).
  • Voice lines (English): AI-synthesized for this project with the developer's AI assistant, Muse, using its built-in voice generation; no third-party voice service.
  • Scroll ink paintings and the campaign map panorama: AI-generated for this project.
  • Store art: made from in-game renders, with the game's own fonts; no AI imagery.
  • Historical content: characters and events are from public-domain history and the 14th-century novel Romance of the Three Kingdoms. All designs are original.

Built With

  • c#
  • hand-tracking
  • meta-interaction-sdk
  • meta-mr-utility-kit
  • meta-quest-3
  • meta-vr-cli
  • meta-xr-all-in-one-sdk-(v207)
  • meta-xr-operator
  • meta-xr-simulator
  • openxr
  • passthrough
  • unity
Share this project:

Updates

Submission history