RACTR ONLINE

Yesterday New Earth was a single-player world. Today it has a server, accounts, netcode, character select, NPC merchants and bankers, a quest chain, four chat channels — and multiple players standing on the same planet watching the same AI build it. Every feature verified end-to-end by bots before this post was written.

One codebase, both sides of the wire

The new dfd-server binary is not a separate stack — it links the same engine crate the client renders with. When the server needs to place an NPC's feet on the ground, it queries the same density-field scene function the player walks on. When it replays the world's terrain-edit log, it pushes edits through the same CSG pipeline as the player's brush. The client and server literally cannot disagree about the shape of the planet, because there is only one definition of the planet: ρ.

The architecture is deliberately boring: an authoritative 10 Hz simulation thread, one thread per WebSocket connection, SQLite for persistence, argon2 for passwords. Accounts, characters, inventories, bank vaults, quest states, and every terrain edit ever made survive restarts. No async labyrinth, no message queue, no Kubernetes — a single binary you can run on a laptop or a $5 VPS, that a debugger can single-step.

What's live on the wire

Accounts and characters: register, log in, create up to nine races and three classes, pick your character, enter the world where you last logged out. Chat: /say carries 30 meters, /shout fills your zone, /world reaches everyone, /tell finds a name. NPCs: Foreman Duri hands out a two-quest chain, Meridia the Provisioner buys and sells, Vault-Keeper Bramm guards your coins and goods, and villagers wander the spawn valley. Combat is server-authoritative — the server rolls the crits, credits the quests, pays the coin, and respawns the fallen 45 seconds later. The Shaper now lives on the server: when it raises a watchtower, every player on the planet watches the same tower rise, and it's still there next week.

Proven, not promised

Alongside the server ships dfd-nettest: a headless two-bot client that runs the entire feature surface against a live server and asserts every reply — account creation (including duplicate-name and wrong-password rejection), character creation, world entry with the full NPC and creature roster, all four chat channels, quest accept and kill credit, merchant purchases with price verification, bank deposits and withdrawals of both coins and items, a full fight to the death with XP and loot, item use, cross-client visibility (bot B watches bot A move and receives A's tell), terrain-edit replication, and the departure broadcast when someone logs out.

Thirteen stages, all green — while the real game client sat in the same world: the bots counted its character among the entities, and its chat panel recorded their conversation and the blow-by-blow of a troll fight it was standing next to.

This is a first-generation MMO backend, and we'll say so plainly: one zone, one shard, small-scale netcode with client-authoritative movement inside server sanity bounds. What it is not is a mock-up. Every listed feature round-trips a real socket into a real database.

Engine v0.12.0. All four physics gates green; 28/28 tests. The public build stays gated until the game earns its release — follow the devlog.