beta124.04
Guide: watch fields, watch methods, break on one object
Update the gen2 fork first: Settings > Install gen2 fork, then reboot. This Breeze needs gen2 v0.18; with an older fork every gen2 action says "Version mismatch".
Watch methods: is this code ever called?
A class lists many methods, and a promising name such as get_Health is often never called at all. Hooking it then does nothing, and it can take a long time to find out why.
- Open a class's field view and press Methods (ZR+R).
- Press Watch methods (ZL + left stick click).
- Go back to the game and play. A box at the top left lists methods as they are first called.
- Open the gen2 menu to see the full list: each method is
calledor-, with the code that called it and the object it was called on.
Each live method pauses the game once, for a moment, and never again. Methods that are never called cost nothing.
To find the code behind one action -- taking a hit, firing a shot -- press Clear (Minus), do only that in the game, and look at which methods are now called.
| Button | Key | What it does |
|---|---|---|
| Start / Stop | R | run or end the watch |
| Clear | Minus | start again with every method waiting |
| View | ZL+Y | all, called (newest first), or not called |
| ASM Explorer | X | the method's code |
| Go to caller | ZL+X | the code that first called it |
| Field view of object | Y | the object it was called on |
| Break on object | ZL+R | stop the game when this method runs for that object |
| Expand screen | ZR+R | the list over the whole screen |
A live object for free. Each called line shows the object the method was called on. Field view of object opens it: a live instance of the class, found without any search.
Break on one object
A method such as "receive damage" runs for the hero and for every enemy. To watch it work on the hero only:
- Open the field view with the hero's object pinned.
- Press Methods (ZR+R) and put the cursor on the method.
- Press Break on pinned object (ZL+X).
- Go back to the game. It stops when that method is called on the hero, and the Break and Trace view opens.
Calls on any other object pass without stopping.
Your watches are kept
- A field watch or a method watch is saved when you stop it. On either screen Pre results and Next results (ZL + right stick left / right) step through the saved ones. Going past the newest returns to the current watch.
- The gen2 menu has two new buttons, Field watch and Method watch, which open those screens again with their results.
- The gen2 menu button on Main opens a watch's screen only while that watch is running. After Stop it opens the gen2 menu as usual.
Fixed
- Sweep unseen, pressed before anything had been found, stopped the running field watch. It now leaves it running.
Good to know
- Stop a method watch when you are done. While it runs, Breeze has changed the game's code at each method that has not been called yet.
-means "not called while watching", not "unused data". Small getters are often built into their callers; Watch fields tells you whether the data is used.- A break on a method that runs thousands of times a second slows the game, even when it only stops for your object.
- Tried on a Unity game. The Unreal and native paths have not been tried yet.
For PC connect users
New commands start and read all of the above from the PC, run an engine's preparation work (prep), list a game's files with what each is for (files), and sample values while pressing a game button (probe). A new file, breeze_unity.py, lets a script work on a Unity game by class and field name. See docs/pcconnect.md.