Max MorrishBack to projects

Overland

A fog-of-war driving game I planned, with a v0 drive recorder built for the web and iOS.

Prototype. The recorder runs on the web and in the iOS Simulator; the game is planned, not built.

151 new cells counted from 1,439 location fixes on a generated 22.7 km loop

The web recorder replaying a generated 22.7 km loop at 60 times speed. The grid on the right draws the cells it counted; the v0 recorder itself shows only the count. Not a recorded drive.
Where
Personal project
Role
Design and build
Built with
SwiftUI, Core Location, JavaScript, Python

What I made

I planned the game in 8 design documents: the map starts dark, only ground you have never driven scores, and nothing rewards speed.

Then I built the v0 recorder twice: a 159-line web page with no network calls, and a SwiftUI app on Core Location. Both bin fixes into cells of about 200 m, count new ground live and export the drive as GPX.

  1. Location fixbrowser geolocation or Core Location
  2. Accuracy filterfixes worse than 100 m dropped
  3. Grid celleach fix binned to a cell of about 200 m
  4. New grounda cell counts once, the first time
  5. ExportGPX and JSON lines
  6. Planned: shared mapH3 hexes, derived records via CloudKit
The v0 recorder from fix to export. The last step is designed, not built.

2v0 recorders: web (demoed) and native iOS (runs in the Simulator)

8design documents behind the build

0network calls in the web recorder

What came out of it

A generated loop

The route is generated, with GPS noise from a fixed seed; nobody drove it. The recorder counted each new cell live and ended ready to export.

The Overland web recorder on a phone, mid-traverse: 93 cells of new ground, 8.9 miles, 14 minutes 52 seconds, 893 location fixes, and a red End traverse button.
The web recorder mid-traverse, on demo data from a generated route.
The web recorder after the traverse: 151 cells of new ground, 14.4 miles, 1,439 fixes, with buttons to export the traverse as JSON and GPX or begin another.
End of the generated loop, ready to export.

The native recorder

The native SwiftUI recorder in the iOS Simulator, ready to record: zero new ground and a Begin traverse button.
The native recorder, built and run in the iOS Simulator.

Where it's going

The full version is an iPhone game that records drives on its own: the map starts dark, each drive lights the ground it covers on one shared map, roads are named as they are surveyed, and nothing rewards speed.

  1. Nowv0 recorderWeb and native recorders count new ground and export each drive.
  2. Hex mapA hex grid on a real map lights up where you have driven.
  3. Post-drive revealThe route burns in after each drive, then its roads are named.
  4. Hands-free recordingDrives start and stop on their own, with nothing to touch.
  5. Shared mapRaw GPS stays on the phone; only derived records sync to one map.