Small diff
Each run changes one variable: query budget, graph update strategy, clearance cache, or flow-field reuse.
Benchmark Lab
The first public result is intentionally narrow: a Godot 4.6.2 diagnostics micro-benchmark for empty-path failure checks. Larger benchmark scenes stay labeled as targets until reproducible captures exist.
| Case | Grid | Iterations | Average |
|---|---|---|---|
| Reject GOAL_SOLID before search Validate start/goal and return a named failure reason before AStarGrid2D search. | 64x64 | 10,000 | 7.31 usec |
| Raw allow_partial_path solid-goal query Call AStarGrid2D.get_id_path(start, solid_goal, allow_partial_path=true). | 64x64 | 1,000 | 381.34 usec |
| Diagnose disconnected region Validate the request, run AStarGrid2D once, and classify the empty path. | 64x64 | 1,000 | 161.02 usec |
| NavigationServer sync guard Check NavigationServer2D.map_get_iteration_id(map) before path queries. | 64x64 | 10,000 | 3.94 usec |
| Scenario | Grid | Agents | Frequency | Target |
|---|---|---|---|---|
| Tactical map | 64x64 | 100 | 30 queries/sec | <1ms pathfinding budget |
| RTS skirmish | 256x256 | 500 | 100 queries/sec | <4ms pathfinding budget |
| Flow-field stress | 512x512 | 1,000 | continuous flow | <3ms flow-field update |
| Large-world hierarchical | 1024x1024 | 50 long-range | 10 queries/sec | <8ms long-path budget |
measurement-gap: these larger scenarios are engineering targets. Public result columns, profiler captures, and downloadable benchmark scenes stay unpublished until a reproducible run exists.
Each run changes one variable: query budget, graph update strategy, clearance cache, or flow-field reuse.
The scene, Godot version, PathForge version, hardware class, and run settings must be visible next to the result.
Fast, scalable, and production-ready only mean something when the page carries a measured capture.
Raw JSON for the current Godot 4.6.2 diagnostics micro-benchmark.
Runnable development diagnostics scene used by the first public diagnostics article.
The taxonomy these numbers measure: every named reason a Godot path comes back empty.
Try the same reason-code vocabulary without loading a heavy benchmark scene.