Skip to content

Lua toolset

Pre-release
Pre-release

Choose a tag to compare

@tomvita tomvita released this 03 Sep 03:00

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 (1000 finds 1000.4), strings by content, and true/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 false as true about 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