Skip to content

Roadmap

This is the project’s working roadmap. It tracks the big reverse-engineering and tooling milestones — not every commit.

Status key: Shipped done and verified · In progress partially working · Blocked waiting on a hard dependency · Planned designed, not started.

Milestone What landed
Uncooked asset mirror data/uncooked/ extract pipeline — textures decoded (BC1/BC3/BC5/RGBA8 → PNG, 4,776 PNGs) plus 15,431 raw .gen + 15,362 structural sidecars. See Uncooked assets.
Pack guard rsmm pack refuses files byte-identical to the original (--allow-vanilla for personal backups), preventing accidental redistribution of copyrighted assets.
Mass decompile 46,963 functions decompiled; symbols + strings exported to JSON. See RE pipeline.
Pattern resolver + rsmm.call ~50k byte-pattern signatures in data/function_patterns.json, every one resolving to its recorded address by the loader’s own scan (see the pipeline; the DB published before 2026-10-03 needs a republish to get there). Lua mods can call any of ~53k game functions by name, plus memory read/write. See Calling game functions.
Seed surface mapped The built-in Forced seed option (oe::UIntGameOption, id 0x1949b098) located with its enable bool. ExampleSeedPin pins a run’s RNG for speedruns. See Seed + mapgen.

In-game “Mods” UI Abandoned

Section titled “In-game “Mods” UI ”

Giving the mod manager a presence inside Ravenswatch’s own menus (a Social-book tab, a title-menu button, a book-page mod list) was dropped. Mods are managed from the desktop app and the CLI. The tooling (rsmm menu, rsmm intents, rsmm url, rsmm social-tab, rsmm menu-button, rsmm mods-list) has been removed; what was learned about the game’s UI is kept in UI & the book menu.

Hook API (rsmm.hook) Shipped

Section titled “Hook API (rsmm.hook) ”

The loader intercepts game functions: rsmm.hook for mods, and the loader’s own detours (damage meter, lobby parser, event bus, skins, talents) go through hook_util.h, which checks every target is a real function entry before it installs. The earlier belief that an anti-tamper integrity check crashed every hookpoint was wrong: the two hooks that failed had unrelated causes. See Anti-tamper protector.

Hooks are observation-first and gated by symbol status in data/symbols.json; a hook on an address that is not a function entry is refused or warned, not installed silently.

Pattern-DB rebuild on game update Shipped

Section titled “Pattern-DB rebuild on game update ”

When Steam updates Ravenswatch, the signatures in function_patterns.json must be regenerated against the new exe.

  • ./rsmm doctor hashes the installed exe and warns when the pattern DB is stale.
  • ./rsmm rebuild-fn-patterns regenerates the DB in about 2–3 minutes, adds the stable named entries, and checks that every mapped symbol lands on a function boundary and every entry resolves to its address. The old DB is put back if a step fails. --ghidra re-runs the symbol dump first.
  • rsmm symbols remaps data/symbols.json after a patch. That step, rebuilding the loader and publishing are still run by hand (see the pipeline).