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.
Legal#
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.