# Puttscape: Mixed-Reality Mini-Golf

> Mixed-reality mini-golf on Meta Quest 3 and Android XR from one codebase, with holes generated from the scanned room and a venue client that connects the game to our Spatial Venue server.

- Tags: XR, Immersive, Games, Multiplayer
- Areas: [Interactive & Physical Experiences](https://dreamawakelabs.com/experiences.md), [Multiplayer game development](https://dreamawakelabs.com/multiplayer.md), [Custom engineering](https://dreamawakelabs.com/software.md)

## What it is

Puttscape is mixed-reality mini-golf: players putt a virtual ball across a real floor. The headset scans the room and a generator fits a hole to the floor it finds, so the same game works in rooms of any size and shape.

## What we built

The game’s platform engineering: a move to AR Foundation so one Unity codebase builds for Meta Quest 3 and Android XR, the procedural generator that lays out a hole on the player’s scanned room, and hand tracking, putter physics, and theme packs shared across both platforms. For venue play we built the native client library, shipped as a Unity package, that connects the game to Spatial Venue, our venue server, and the operator tooling around the server: a live status page and a command-line control tool.

## How it is used

A player scans the room, the course is laid out on the real floor, and hand tracking and putter physics do the rest. The venue client gives the game a session on Spatial Venue, which keeps the ball, scores, and course in one place for a floor that staff run from the status page and control tool.

## Evidence

What changed: One Unity codebase builds for Meta Quest 3 and Android XR, lays a hole on the floor the headset scanned, and connects to the Spatial Venue server from a real headset.

- **Two headset platforms**: The AR Foundation port builds for Meta Quest 3 and Android XR from one codebase, with the game checked on both devices.
- **Room-scan course generation**: The procedural generator lays a hole on the scanned room, verified in single-player play on a Quest 3 and covered by editor tests.
- **Shared gameplay systems**: Hand tracking, putter physics, and theme packs are written once and run on both platforms.
- **Venue handshake**: A native client on a Quest 3 completed the session handshake with the Spatial Venue server. ([Spatial Venue](https://dreamawakelabs.com/work/venue-runtime))

Context: Puttscape is named where the work is described. Sessions with several headsets are described on the Spatial Venue study, where they were tested with simulated players.

## Behind the experience

- [Interactive Experiences](https://dreamawakelabs.com/technology#platform-experiences): Games made for the places we play. Systems: [XR foundation](https://dreamawakelabs.com/technology#xr-foundation)
- [Spatial Orchestration](https://dreamawakelabs.com/technology#platform-spatial): The room becomes part of the experience. Systems: [Spatial Venue](https://dreamawakelabs.com/technology#venue-runtime), [DASP](https://dreamawakelabs.com/technology#dasp), [Venue devices](https://dreamawakelabs.com/technology#venue-devices)

## Our technology

- XR foundation: The Unity AR Foundation base supports the game on Quest and Android XR.
- Spatial Venue: The venue client package connects the game to the Spatial Venue server.
- DASP: Automation reaches the venue server through its DASP control socket.
- Venue devices: Headset discovery and telemetry for the venue floor.

## Built with

Unity, C#, AR Foundation, OpenXR, Meta Quest 3, Android XR, Procedural generation, Rust

## Media

- The Puttscape wordmark in white over a glowing blue hexagonal grid.: https://dreamawakelabs.com/work/mixed-reality-mini-golf/puttscape-wordmark.webp
- Puttscape gameplay from the player’s view: a white ball on a green course with wooden rails, a stack of barrels, a character standing at the far end, and the putter in the foreground. (A hole in play: the course is laid out on the floor the headset scanned.): https://dreamawakelabs.com/work/mixed-reality-mini-golf/gameplay.webp
- Diagram in three steps: the headset maps the floor and its edges, a generator lays out a hole that fits the scanned room, and players putt a virtual ball on the real floor. One codebase builds for Meta Quest 3 and Android XR, and a venue client connects the game to the Spatial Venue server. (How the game works. A diagram, not a gameplay capture.): https://dreamawakelabs.com/work/mixed-reality-mini-golf/how-it-works.svg

## Links

- [Puttscape](https://puttscape.com) (Website)
- [Spatial Venue](https://dreamawakelabs.com/work/venue-runtime) (Page)

## Credit

Engineering by Dream Awake Labs on the Puttscape game and the Spatial Venue server.

[All projects](https://dreamawakelabs.com/work.md)
