Black Skies development blog · Real-time distributed systems, in public

10,000 players.
No time dilation.

Every record-setting space battle has shipped with an asterisk. This series is a technical argument, with diagrams and a public benchmark plan, that the asterisk is a design choice.

The method: keep strong consistency small, make the seams part of the game, and print the worst case of every component before it runs.

The series map · Black Skies

In plain English: Black Skies is a public systems case study in low-latency coordination for large real-time battles. The game setting is a forcing function. The engineering questions are consistency boundaries, queuing, split-brain handling, latency budgets, simulation ownership, and benchmark design.

PART 01 · 11 MIN

10,000 Players, No Time Dilation

Why consistency versus availability is a design choice, and how game rules become scaling decisions. The hub of the series.

Read The thesis →
PART 02 · 15 MIN

The Life of a Tile

Born by coarse-to-fine H3 lookup and CAS, failing over in one to two ticks, garbage-collecting itself. There is no tile manager.

Read The life of a tile →
PART 03 · 14 MIN

Redis Coordination for Real-Time Tile State

One Redis function per tick, a bridge, and a checkpointer keep commit, delivery, and durability from ever coupling.

Read The commit path →
PART 04 · 12 MIN

Split-Brain Resolution Without a Global Coordinator

Epoch fencing, split-brain resolution, and why the routing read path never touches the database.

Read Ownership →
PART 05 · 9 MIN

Delivering One Battle to 10,000 Clients

One write becomes ten thousand correct screens inside 100 milliseconds, and the 600-byte assumption that carries it all.

Read Delivery →
PART 06 · 21 MIN

Motion Across Boundaries

Authority moving between CP islands in two ticks, combat at the seam, and mass warp as a queue instead of a protocol.

Read Motion →
PART 07 · 10 MIN

The Substrate Tiles Never Think About

Leases instead of scheduling, arithmetic instead of forecasting, three speeds of refill, and Lambda as a bridge.

Read The substrate →
PART 08 · 11 MIN

What Still Needs Load Testing

The full benchmark table, the two SLIs that define correctness, and exactly what would falsify the design.

Read The ledger →

Every mechanism in these posts names the production failure it answers, and the closing ledger lists what has been measured, what has not, and exactly what would falsify the design. When the massive-scale run happens, the results post joins this list, whichever way the numbers go.

Evidence status

Every load-bearing claim on this site, sorted by how proven it is. Design targets are labeled as design targets wherever they appear.

MEASURED 1,000+ test methods and chaos suites passing in the Black Skies repo today. the ledger
SHIPPED Production impact in paid roles: a delivery pipeline adopted by hundreds of engineers, the first backend-led production ML application at CarGurus, a commerce rebuild that ran incident-free at thousands of queries per second, and 90% lower cost per game at Apocoplay. resume · PDF
DESIGN TARGET 10,000 concurrent clients in one battle, no time dilation. A pre-registered load test with published falsifiers, not a measured result. thesis · ledger
PROTOTYPE Ambient Agents: durable orchestration for coding agents, designed in public with a published kill condition. ambientagents.net
Related project

Ambient Agents: the orchestration layer behind the build.

A durable orchestrator for parallel development under rapidly changing specs, designed in public with a published kill condition. It runs the agent workflow that helps build Black Skies. The product spec and the full story live on its own site.

Early design notes archived here: the blocking task · the kernel · the pattern catalog