Measure a scene's frame times
godot_perfRuns a Godot scene headless and measures frame-time p50/p95/p99, physics steps and slow frames against a budget, then flags regressions from the last run to verify performance changes.
Instructions
Run a scene in Godot 4.7 headless and measure it the way a player feels it: frame-time p50, p95, p99 and max against a budget (default 16.6 ms), the physics step apart from the rest of the frame, the slowest frames with what changed on them (nodes made or freed in one frame, a heavy physics step, script work), node and orphan counts, and the change since the last run of the same scene (kept in .godot/godotwright/perf/). Headless measures the CPU side (scripts, physics, scene work), not the GPU. input plays a timeline as godot_play does, to measure while something happens. An error result when p95 is over budget or more than 10% worse than last time. Lessons that fit the numbers are named. Measure before and after every performance change.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | The project folder, or any file or folder inside it (Godotwright walks up to project.godot). Relative paths start at the server's folder. Default: the current project. | |
| input | No | input while measuring: "10 hold right 300" | |
| scene | No | the res:// scene to measure (default: the main scene) | |
| frames | No | frames to measure (default 600) | |
| warmup | No | frames to run first without measuring (default 60) | |
| baseline | No | compare with and save the last run of this scene (default true) | |
| budget_ms | No | frame budget in ms (default 16.6) | |
| timeout_seconds | No | timeout of the run (default 300) |