Case study
OpenRiseOfNations: a native macOS engine reimplementation
Reimplements the Rise of Nations: Extended Edition engine as a native macOS app with a Metal renderer, a deterministic simulation, a computer opponent and a compatible BigHugeScript compiler and virtual machine, loading art, maps, rules and scripts from the user’s own Windows installation. Subsystem specifications written from Ghidra study of the symbol-bearing executable, together with JavaScript reference tools, guided a C++17 implementation built with heavy Claude Code assistance. The alpha plays tutorials and scenarios, and its bit-exactness checks remain project-reported.
Requirements and limitations
- The reviewed pin is version 0.1.1; releases v0.1.0 and v0.1.1 are dated 2026-10-14. README calls the C++17 engine early but playable on macOS 12+ with Metal and AppKit, covering tutorials and stock scenarios, unit control, economy, construction, combat, a computer opponent and the game’s scripts. Random maps and the skirmish setup screen, the Conquer the World campaign, multiplayer, saves and replays, garrisons, heroes and several other systems are not yet implemented.
- Users must own Rise of Nations: Extended Edition and supply the Windows version’s game folder, whose Data and scenario directories provide the art, maps, rules, scripts and audio; README names SteamCMD or a copy from a Windows PC as routes. The repository and the un-notarised DMG ship no game files or original program code, with a fan-adapted main-menu logo as the stated exception. Building from source needs only Apple’s Command Line Tools and build-mac.sh.
- README says the executable ships with full debug symbols, which enabled Ghidra study; about thirty specifications in docs/ describe each subsystem in paraphrase, citing original functions by name and address, and JavaScript reference tools in re/tools read the game data. README credits heavy use of Claude Code, directed and reviewed by the maintainer. STATUS.md says the reverse engineering ran as background agents that each produced a spec, while the author’s reply says he reverse-engineered in Ghidra and wrote the specs himself; the sources do not settle that division of work.
- Verification is project-reported. C++ checkers compare damage on all 169,312 attacker/target pairs, prices, income and interface layouts with the reference tools, rules tables with a recorded game’s memory image and world grids across 156 stock scenarios, and a headless harness checks determinism. The simulation targets bit-identical lockstep behavior but has not yet been compared with recorded games, and rendering was checked by reading snapshots. This collection ran none of these tools.
- The engine is GPL-3.0; the menu logo is excluded, and its rights stay with the original owners. The project states that it is unaffiliated with Microsoft, Big Huge Games and SkyBox Labs. .gitignore keeps decompiler output, symbol dumps and extracted data out of the repository, although two small instruction-search outputs listing original addresses are committed under re/jobs. The reviewed sources establish no REA use.
About this entry
- Type
- Case study
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Targets
- Game
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · ben-wright-1/OpenRiseOfNations · Revision 2a0dfde
- docs/STATUS.md GitHub · ben-wright-1/OpenRiseOfNations · Revision 2a0dfde
- build-mac.sh GitHub · ben-wright-1/OpenRiseOfNations · Revision 2a0dfde
- .gitignore GitHub · ben-wright-1/OpenRiseOfNations · Revision 2a0dfde
- VERSION GitHub · ben-wright-1/OpenRiseOfNations · Revision 2a0dfde
- LICENSE GitHub · ben-wright-1/OpenRiseOfNations · Revision 2a0dfde
- https://x.com/benw_____/status/2111116976168779845
- https://x.com/benw_____/status/2111260204884967933