← Server architecture · all tasks

Server runtime/engine options memo

done priority 2 estimate M

server-architecture/002 · created 2026-08-05 · updated 2026-08-03

Resolution (2026-08-02)

Decided, not written as originally scoped. A direct architecture conversation settled this without the comparison memo ever getting written: world servers run Godot 4 headless, one OS process per world instance, over WebSocketMultiplayerPeer — chosen specifically because sharing simulation code between server and predicting client eliminates prediction-divergence bugs, the dominant risk in client-side prediction generally. A separate director service (world registry, membership, instance lifecycle, portal routing, accounts) runs alongside it.

Update 2026-08-03: the director’s own runtime — this task’s one surviving open question — is now also closed: Node/TypeScript, confirmed directly by Kris and implemented in server-architecture/005 (Stage 1, land-of-lor/pocs/multiplayer-poc/director/). Nothing about this task remains open.

Full decision recorded in server-architecture/overview.md’s “Runtime” section — read that, not this note, for the actual architecture and reasoning.

What to do

Nothing is chosen yet for the server’s runtime/language (overview.md’s open questions). Write a short options memo — not a decision — covering realistic candidates for a server that must: hold authoritative field/grid state, run the changing-line transmutation clock, match recipes, and tick Complex Item formulas (ports/stocks/rules) for potentially many simultaneous objects. Consider at least: a Godot-native server (if the client ends up in Godot, avoids a second stack), a general-purpose backend language/framework, and any actor-model or ECS-style runtime suited to many independently-ticking objects.

Definition of done

A memo comparing 2-4 real candidates on: fit with the tick/formula model (§8), fit with the field-simulation approach chosen in task 001, hosting/ops simplicity (relevant to server-instance), and Kris’s/agents’ familiarity. End with a recommendation, not a final decision — this becomes a Question once the memo exists and Kris needs to actually choose.

Where the work lands

land-of-lor repo.

Docs to read first

land-of-lor/docs/README.md §8 (recipes & formulas — the tick engine this runtime must support), and this epic’s own task 001 once it exists (the scaling approach may favor one runtime over another).

View source in repository · also available as raw markdown.