Jeffrey M. Barber

Tombstone

Play Workspace

Oct 2014 – Dec 2014 · age 32

What it was

Server infrastructure meant to make asynchronous multiplayer games easy to build. It had three tiers. A browser page opened a websocket to a Java gateway on Netty; the gateway piped frames to a C++ server on libuv; the server held one JSON document per game channel, with a transaction log, snapshots and subscribers. Moves were a small transaction language of puts, moves, math, sorts, shuffles and tabletop dice rolls. Every frame was eight command letters, a length and a checksum written as lowercase base-26 letters, and a body, and the same encoder existed in C++, Java and JavaScript. The core library was complete and tested by 113 cases; the server stayed a prototype with memory bugs; the gateway served three toy games, including a field of bouncing bunnies.

Wins, for the age

What it taught

Genealogy

Ancestors: Async Serialization: length-prefixed frames pushed down a socket. Evolution eXPeriment: an early client-server game with a long-running server. Zen Net: a game server with games loaded as plugins. Znetfs: framed peer protocols built by hand. Descendants: Adama Core: a document plus deltas and deterministic replay. Career Facebook: pub/sub fan-out of live state, at scale. Lamancha II: per-game documents, logs and server-side randomness.

Epitaph

It framed every move in lowercase letters and settled every shuffle before telling anyone, then freed its players with the wrong allocator. The settling was the idea that lived.