V2/ue/Tools/check-frame-budget.py enforces the P0 combat frame budget for
Unreal profiling exports. The PR gate runs it after V2 automation tests on the
Win64 reference runner and fails when any combat frame is greater than
16.6 ms.
Run the tool from the repository root:
python3 V2/ue/Tools/check-frame-budget.py --self-test
python3 V2/ue/Tools/check-frame-budget.py V2/ue/Saved/Profiling/FrameBudget --required
The checker accepts .json and .csv files. A row or object is considered a
combat frame when it is under a combat-labeled JSON collection or carries a
combat marker such as phase: Combat, category: Combat, combatFrame: true,
or a scope / stat / name containing V2Combat. It reads millisecond
values from columns or fields such as frameTimeMs, durationMs, totalMs,
gameThreadMs, and combatFrameMs.
The CI workflow also executes --self-test, which verifies that the included
good fixture passes and the included over-budget fixture fails.