Transmission from Year 2126

CAPSULES

AR Magic

Step 1
QR: Download TestFlight
Download TestFlight
Step 2
QR: Join Capsules Beta
Join Capsules Beta
Scroll to begin
00
OVERVIEW

System Design

Three layers working together, native Swift AR engine on the IPhone, a React Native orchestration layer, and a remote server managing game state. The user interacts through AR, and data flows seamlessly between all three.

iPHONE
SWIFT
ARKit
ARWorld
SceneKit
Bridge
REACT NATIVE
Logic
UI
HTTP WebSockets
SERVER
GameState Events
Leaderboard
CapsuleData
PlayerState
USER
01
THE SCAN

Mapping the Room

Before anyone plays, we walk through the venue with a phone. The camera studies the walls, tables, corners, edges. It builds a 3D understanding of the space, by generating a point cloud and ultimately memorising thousands of visual features.

Outcome: An ARWorldMap which is a digital representation of the room.

57
Megabytes
17
Capsules placed
3D
Coordinates
GENERATING POINT CLOUD...
02
WAKE UP

Player Joins Game and Establishes Bridge

Think of React Native running the JavaScript as the brain and the Swift the eyes and ears.

Outcome: Bridge established with brain connected to eyes.

JAVASCRIPT
React Native app
UI & game logic
BRIDGE
SWIFT
ARKit camera
3D rendering
03
RELOCALISE

Relocalisation orients the Phone

Now the phone plays a game of spot the difference in reverse. It compares what the camera sees against the stored map, looking for matching features: corners, edges, textures, patterns.

Outcome: IPHone map aligned with original mapping scan

MATCHING FEATURES
0%
SEARCHING...
04
CAPSULES

Capsules are Rendered

JavaScript sends 17 positions across the bridge to Swift. Each position is an XYZ coordinate.

Outcome: Rendered capsules in the room, only visible through phone.

05
DISCOVER

Tap to Reveal

The player taps the capsule. SceneKit 'ray-traces' the tap point into 3D space and identifies which capsule was hit by its UUID.

Outcome: Player tap reveals a scroll which has fun facts, and letter fragment.

Tap
Ray trace
🔑 Find UUID
╭╮ Cross bridge
👤 Reveal profile
SWIFT
capsuleId: “CE6D...”
EVENT
JAVASCRIPT
Look up capsule data
Show profile modal
06
RETRO

Retrospective

What Went Well
  • Smashed out a technically challenging AR App in less than 1 week
  • Strong system focus at the beginning ensure a cohesive team approach
  • Websockets to ensure that all users experience game play together
Optimisation for Next Time
  • Improved GitHub hygiene
  • Periodic task assigment and prioritisation within backlog
  • Technical challenge required a lot of focus