Tombstone
Evolution_eXPeriment
May 2002 โ Dec 2003 ยท age 20โ21
What it was
A multiplayer space trading economy written in two weeks of June 2002 in C# on the first release of .NET. A server owned the world: a galaxy of star systems, jump gates and trade depots laid out as a tree of polar coordinates, so moving a star dragged its children. Each depot had eight cultural factors, and each commodity had production, consumption and worth formulas written as strings a game master could edit without recompiling. Players logged in with a WinForms client, bought trade ships, and gave them looping routes of waypoints with buy and sell orders, market or limit priced. Prices moved every 100 ms heartbeat, and the server sent a change only when it moved past a threshold. The whole world was one serialized object, saved on shutdown. That server was still being started and stopped cleanly a year and a half after the last line of code.
Wins, for the age
- At twenty, Jeff priced a trade as the integral of an exponential scarcity curve across the volume bought, so buying out a depot cost more per unit than nibbling it. Uniswap and the bonding-curve AMMs made that shape famous in 2018, sixteen years later.
- Prototyped the economy in a spreadsheet first and kept the original formula in a comment. The math came before the code.
- Sent deltas, not state, with per-field thresholds, the difference between playable and not on a 2002 modem.
- Built server, game client and chat client in one solution on asynchronous sockets, all in a fortnight, as a mammal who still needed sleep.
What it taught
- An economy needs curves with integrals, not lookup tables.
- Framing messages with a sentinel works until a message contains the delimiter; a colon in a chat line or a password broke both.
- Serializing the whole object graph is a shortcut that holds exactly until the class layout changes.
- Stubs are promises. Corporations, portfolios and weapons became classes with a constructor and nothing else, and the tax formula came out at effectively zero, dead on arrival.
Genealogy
Ancestors: Async Serialization: length-prefixed serialized objects pushed down asynchronous sockets. Descendants: HUROX JS: a 100 ms heartbeat pushing batched changes. Play Workspace: one server-owned document per game. Adama Core: server-owned state that broadcasts deltas.
Epitaph
Here lies Evolution_eXPeriment: a galaxy of orbits, prices that curved with scarcity, and a server that outlived its author's interest by a year and a half.