Skip to content

Project vision#

Mission#

Build an open behavioral specification for Lords of the Realm 2 — grounded in decompiled evidence — sufficient for a clean-room, open-source-compatible reimplementation.

What we are building#

A specification, not a game engine. The spec describes:

  • Gameplay rules, state machines, and turn flow
  • Combat and siege mechanics
  • Map and province behavior
  • UI flows and screen modes
  • Data formats (configs, assets, tables)
  • Save and load semantics
  • Multiplayer session and message behavior

Implementations may live in separate repositories. This repo holds the spec and the evidence that supports it.

Compatibility bar#

Behavioral#

Document rules, state machines, formulas, and edge cases with evidence levels (confirmed, likely, speculative). Normative spec text must not rest on speculative evidence.

Interoperability#

Where parity with the original matters — multiplayer, shared saves, asset pipelines — flag wire and format constraints explicitly in spec pages and protocol docs.

Decompiled code and documentation exist for interoperability research and preservation. This project is not a drop-in replacement for the commercial game. Users must obtain the original game and assets through legitimate means.

Evidence levels#

Reuse the struct-recovery confidence scale across all spec pages:

Level Meaning
confirmed Verified by multiple code paths, capture, or size/offset proof
likely Strong pattern in decompiled code; not fully verified
speculative Hypothesis only; do not write normative spec rules from this

Protocol docs additionally use observed on wire, inferred from client code, and unverified for packet-level claims.

In scope#

  • Behavioral specification under docs/spec/
  • Ghidra annotation in src/ as evidence
  • Architecture, struct, and protocol documentation
  • Ghidra scripts under tools/ghidra/

Out of scope#

  • Game engine or client implementation
  • Modern application (Electron or otherwise)
  • Cross-platform port planning
  • Large refactors of decompiled C for readability

Authoring#

Use spec/_template.md for new spec pages. Follow the workflow in AGENTS.md.