Lua toolset
Pre-release
Pre-release
This release adds a Lua toolset, for games built on Lua (Victor Vran is the tested title). Normal memory search barely works on these games — values land on odd, unaligned addresses that shift every launch — so instead of searching memory, Breeze now reads the game's own Lua data directly.
The Lua toolset — how to use it
- Setup is automatic: Breeze finds the Lua state by fingerprint and measures the game's actual memory layout from the running game — nothing is assumed. If the sanity checks fail, it tells you instead of guessing
- Dump all values writes every reachable Lua value into the familiar candidate list — narrowing, grouping, freezing, and labels all work as usual, and it's the route for unknown-value hunts (dump, make the thing happen, narrow on changed/unchanged)
- Find value covers everything in one query: integers exactly, floats approximately (
1000finds1000.4), strings by content, andtrue/false - Find name searches key names at every level
- Add field label and Class field understand Lua and now also appear on the bookmark list — Class field on a row opens the Lua table that owns that value
- The map is cached, so re-entering Breeze while the game keeps running is instant
Cheats and bookmarks that survive a restart
- No Lua address survives a game restart, so bookmarks store the path — like
PlayerControlObjects/[1]/health— and resolve it fresh each session - Toggling a bookmark on prompts for the value and name, both pre-filled — the bookmark list doubles as the list of cheats to build
- A generated cheat finds its target at run time by matching key names (the one thing that never moves), and if the target isn't there it safely does nothing
- Make Lua master cheat lets many Lua cheats share one resolver. This matters more than it sounds: all enabled cheats share one fixed-size program, and about five standalone Lua cheats overflow it — at which point no cheats run at all. With a master, the budget stretches from ~7 cheats to ~18
Three Lua gotchas
- A stat that was never assigned doesn't exist — Lua keeps no slot for it. Bookmarks show
<not set yet>, and a cheat for it is still built: it finds the value the moment the game creates it. This is why something like an overdrive meter looks unresolvable until it first fills - Booleans used to read
falseastrueabout half the time (leftover bytes in the slot) — reads and writes are now done correctly - Some tables are keyed by raw pointers that change every run — no durable path can pass through them. The walker now prefers a nameable route, which is the difference between a value you can turn into a cheat and one you can only look at