Skip to content

A multiplayer 3D game

Contract · May 2026 - Oct 2026 · part-time

A team of 3 app developers built a real-time multiplayer 3D dice game. It ran on their laptops only. They needed it live on a $0 database budget, for players on slow networks.

I owned the production platform, infra, reliability, and the architecture across services. The team kept building game features. I worked inside their repos and their weekly cadence, with a written report every week.

Measured results

Start Game latency
965 ms
from 3,921 ms median (4x)
Database awake time
1.6 h/day
from 24 h, still on a $0 plan
First view on 3.6 Mbps
4.3 s
from 10.9 s
Download after click
990 KB
from 3,922 KB

What I built

Local-only to production

  • Deploy pipelines for all 6 services: CI/CD, boot smoke test, deploy by version tag, missing-secret guards.
  • Blue-green deploy for the client and always-warm machines, which removed cold-start 502 errors.
  • A 3-region game server that picks its home region from the countries of its players.

A $0 database that stays up

  • The free database quota ran out on day 16 of each month and blocked production.
  • I redesigned the access pattern. The database is now awake about 1.6 h a day against a 12.4 h budget.

Faster for slow networks

  • Start Game: game-server round trips 7 to 2, database queries 12 to 2.
  • Compressed textures, tree-shaking, and an earlier scene start cut the first download by about 75%.
  • Moved public assets to a CDN.

Data pipeline

  • A Postgres message queue on a host that does not allow the extension, checked on a database branch at PR time.
  • A background worker built from zero: dead-letter queue, idempotent finalize (safe to run twice), retries.

Reliability and security

  • One JWT contract with dual-key secret rotation, timeouts and retries on every service call.
  • An origin that accepts CDN traffic only, with mTLS and firewall rules.
  • Handled production incidents: a dead-region rebuild, a quota block, a stuck queue message.

Handover

  • A one-command local stack for all services and an end-to-end local match test.
  • 11 decision records, 22 weekly reports, runbooks, and a shared AI coding setup for the team.

The system

  • API backend
  • Lobby service
  • Game server
  • 3D web client
  • Background worker
  • Shared TypeScript contracts

Container hosting in 3 regions, serverless Postgres, object storage, CDN with a firewall

About 6 months, part-time. 261 commits across 6 service repos.

Have a product that needs to go live, or a live product that costs too much or runs too slow?

Message me on LinkedIn
↑↓ navigate ↵ open esc close