Here's what I've been working on for several months now: GitHub - Zannick/logic-graph: Tools for video game logic representation and analysis, particularly routing and beatability checks for speedruns and randomizers.
The idea is to have the engine search the defined graph of a video game for the fastest route to complete a given objective.
I've structured this into two parts: the analyzer crate, which contains the engine code and trait definitions; and the game-specific crate which implements the analyzer traits for a given game. All that game-specific code is auto-generated based on game-specific yaml files, with the jinja2 templates in
Parts of the project are optimized for speed. The per-game Context object is also optimized for space, hence the heavy use of bitflags.
Current problems I am running into are difficulty compiling and testing in dev mode. My tests in dev mode blow away their stack, which in the past I attributed to enum-map creating a large array (I fixed it before by moving into a Box but I may have more work to do there). Compiling in dev mode creates large spikes of RAM that I think have to do with the Context object having lots of bitflags and large enums.
I would welcome any feedback, but I'm particularly looking for feedback on: the analyzer; the organization/structure of the generated code, which is going to grow significantly as I add game details; and anything performance-related.