Godot Mobile Perf Doctor
Static mobile performance diagnostics for Godot 4 projects, with optional parsing of captured adb summary text.
The first release deliberately starts with static checks so it works in CI without an Android device.
Use it before device testing to catch obvious mobile risks: desktop renderer settings, missing or risky stretch configuration, oversized textures, missing safe-area evidence, and suspicious viewport settings.
Install
python -m pip install -e .
From PyPI:
python -m pip install godot-mobile-perf-doctor
Quick Start
godot-mobile-perf-doctor C:\Projects\MyGame --static
godot-mobile-perf-doctor . --profile portrait-2d --format json --output perf-report.json
godot-mobile-perf-doctor . --adb-summary adb-summary.txt --format markdown --output mobile-perf-report.md
godot-mobile-perf-doctor . --mobile-ui-metadata reports\mobile-ui.json --format markdown --output mobile-perf-report.md
List the built-in mobile profiles:
godot-mobile-perf-doctor --list-profiles
Config File
Create .godot-mobile-perf-doctor.toml in the project root:
profile = "portrait-2d"
format = "markdown"
fail_on = "warning"
output = "reports/mobile-perf.md"
max_texture_dimension = 2048
max_viewport_pixels = 2073600
mobile_ui_metadata = "reports/mobile-ui.json"
Profiles provide default texture and viewport budgets. CLI flags override config values, and config values override profile defaults:
godot-mobile-perf-doctor . --static --max-viewport-pixels 921600 --format json
Built-in profiles:
| Profile | Use When |
|---|---|
portrait-2d |
Phone-first 2D projects with a portrait-oriented base viewport. |
balanced-mobile |
General mobile projects that can tolerate a 1080p-style base viewport. |
low-end-mobile |
Older Android devices or battery-sensitive builds need stricter budgets. |
tablet-2d |
Larger-screen 2D projects intentionally use a bigger base viewport. |
Real Workflow: Prepare An Android Test Build
Run a static mobile scan before sending a build to a phone:
godot-mobile-perf-doctor . --static --profile portrait-2d --fail-on warning --format markdown --output reports\mobile-perf.md
Use the report to check:
- whether the renderer choice is suitable for mobile;
- whether viewport and stretch settings are explicit and not likely to distort phone layouts;
- whether expected mobile UI metadata exists for safe-area and touch-layout review;
- which PNG textures carry the largest estimated RGBA memory cost;
- whether a recent adb summary shows janky frames that need follow-up.
If you already captured a short device run, attach the summary:
godot-mobile-perf-doctor . --adb-summary reports\adb-summary.txt --format json --output reports\mobile-perf.json
What It Checks
- Renderer setting and mobile risk.
- Base viewport size against the selected mobile profile.
- Stretch mode presence and
stretch/aspect="ignore"risks. - Optional mobile UI metadata path for safe-area evidence handoff.
- PNG texture dimensions and estimated RGBA memory.
- Optional adb summary text for device model and janky frame counts.
JSON reports include report metadata, active budget limits, and a rules object
with plain-language explanations. Text, Markdown, and SARIF output use the same
rule titles so local and CI reports are easier to compare.
Documentation
- Static checks
- Configuration
- Renderer guidance
- Texture guidance
- ADB summaries
- Rule reference
- CI usage
CI Example
- run: python -m pip install godot-mobile-perf-doctor
- run: godot-mobile-perf-doctor . --static --profile portrait-2d --format markdown --output reports/mobile-perf.md
Development
python -m pip install -e .
python -m unittest discover -s tests -v
godot-mobile-perf-doctor examples\tiny-godot-project --static --fail-on none
Examples are generic and safe to publish.
Metadata
Release files for godot-mobile-perf-doctor 0.1.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| godot_mobile_perf_doctor-0.1.8.tar.gz | 15.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| godot_mobile_perf_doctor-0.1.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.3 kB
Release files / godot_mobile_perf_doctor-0.1.8.tar.gz
| Download URL | godot_mobile_perf_doctor-0.1.8.tar.gz |
|---|---|
| Size | 15.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e4ffc6093d984952df96798af9d8d290e79bf607e871946d261fd6385771249a
|
|
BLAKE2b-256 checksum How to use checksums |
1dfed6edcdef66af9c65d118980205cd67689405252f3503fb7d4268ac4f9b18
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 27, 2026.
Transparency logRelease files / godot_mobile_perf_doctor-0.1.8-py3-none-any.whl
| Download URL | godot_mobile_perf_doctor-0.1.8-py3-none-any.whl |
|---|---|
| Size | 14.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8479109235e38d57bb4177220dac0cf2bbc8affa158002f1c505bafe3b5f4956
|
|
BLAKE2b-256 checksum How to use checksums |
c6ed26c9dc899e351f3fc1e2988c09b08ef53e148caa8a2d18bdf23aae5308ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 27, 2026.
Transparency log