- The ground is Esri World Imagery: ~1 m/pixel tiles around the city
zone, the factory and 300 m either side of the drive between them,
coarser tiles for the whole region. Tiles are hosted with the game
(public/imagery, scripts/fetch-imagery.mjs), stream in near the camera,
are cached by the service worker as visited, and replace the drawn
roads and land areas
- ~141,500 Microsoft building footprints (ODbL) join OSM's ~4,000 in a
compact delta-encoded file (public/data/buildings.bin, built by
scripts/build-buildings.mjs). Heights are estimated from footprint
area and land use, with industrial halls outside the ring road.
Buildings are built in 500 m blocks as the camera approaches
- Caddy compresses the buildings file and caches map data for a week;
the build targets ES2022 for top-level await
- Tests for decoding, factory clearance, machine reachability and tile
placement
Imagery attribution: Esri, Maxar, Earthstar Geographics, and the GIS
User Community. Commercial use requires a suitable Esri licence.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A two-stage image runs the tests and builds the game with Node, then
serves dist/ with Caddy, which obtains and renews Let's Encrypt
certificates for robotmarkets.ir (configurable via SITE_ADDRESS).
HTTPS is required for installing the PWA and for GPS mode.
- Caddyfile: gzip/zstd, long-lived caching for hashed assets, no-cache
for the page, service worker and manifest, SPA fallback, permissions
policy for location and motion sensors
- docker-compose.yml: ports 80/443, persistent certificate volumes
- README: server setup, updates, running behind an existing proxy, and
workarounds when Docker Hub is unreachable from servers in Iran
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>