Native C++ games without reflection data no longer have to show a wall of names like field_0x52. You can label the fields you identify, save those labels, and get them back next launch.
Name fields in the native view
- Open the native C++ field view.
- Highlight the field you worked out.
- Press
Y+ZR(Annotate field). - Enter a label, such as
current_hp, and optionally a type. The existing type is pre-filled, so you can normally accept it unchanged. - Leave the label empty to remove an annotation.
The label is saved and becomes part of the view. Type hints such as int32, s32, u32, f32, qword, and ptr are accepted and converted to the view's standard spelling. The type also controls how wide the field is read, so a 4-byte value does not accidentally stay grouped with a neighbouring 8-byte value.
The view now steps to annotated offsets, so small fields inside a larger slot are not skipped. Naming a field beyond the automatically detected object size also expands the view to include it.
Declare a plain struct
Some records are not objects and have no vtable, so Breeze cannot reliably find their start by itself. It may otherwise anchor the view on a nearby object and show convincing but incorrect offsets.
- Highlight a value at the exact start of the record.
- Press
++ZL(Treat as struct). - Enter a name for the record.
- Breeze opens the view using that address as the exact base, without trying to resolve it as an object.
For a module-based record, the declaration is saved in struct_views.txt. You can also provide an array stride and count. For example, one declaration can describe repeated records such as party-member stats and let you view every element with the same field labels.
Saved files
field_annotations.txtstores native field names and type hints in the game's Breeze folder- Older
ue_field_annotations.txtfiles are still loaded automatically and migrate to the new filename when saved struct_views.txtstores named module-based struct declarations