Pocket Planet Wiki

Mobile Performance

Referenzgeräte, messbare Budgets, adaptive Qualität und Testverfahren.

Konzeptphase. Interne Planungsfassung, Stand 04.11.2026. Pocket Planet ist noch in Entwicklung – Inhalte, Zahlen und Abläufe können sich ändern.

Grundsatz: Budgets zuerst, Inhalte danach. Jedes Ticket mit Grafik- oder Simulationsanteil nennt, welches Budget es berührt, und wird auf dem schwachen Referenzgerät gemessen.

12.1 Referenzgeräte

RolleGerät [Vorschlag]WarumZiel
Schwach (Mindestziel)Samsung Galaxy A13 (4G, Exynos 850, Mali-G52 MP1, 3–4 GB)millionenfach verbreitet, schwache GPU, typisches Einsteigergerät30 fps stabil auf „Niedrig“
MittelGoogle Pixel 6a oder Samsung Galaxy A54verbreitete Mittelklasse30 fps „Mittel“, 60 fps optional
Starkaktuelles Pixel/Galaxy SReferenz für „Hoch“60 fps „Hoch“
iOS (nach MVP)iPhone SE 2/3 oder iPhone XRältestes realistisch unterstütztes Gerät30 fps
EmulatorAndroid-Studio-Emulator x86_64Funktionstests, nicht für Messungen–

[Annahme] Mindest-Android: 8.0 (API 26). Godot erlaubt 7.0, aber Geräte unter 8 mit OpenGL ES 3 sind selten und schwer zu testen. Entscheidung in 17, F6.

12.2 Budgets (messbar)

MessgrößeNiedrig (A13)MittelHoch
Bildrate≥ 30 fps, 1 %-Low ≥ 25≥ 30 (60 opt.)≥ 60
Frametime Ø≤ 25 ms (Reserve gegen Drosselung)≤ 25 / 14 ms≤ 14 ms
Draw Calls≤ 90≤ 130≤ 180
Sichtbare Dreiecke≤ 180 k≤ 300 k≤ 600 k
Requisiten-Instanzen sichtbar≤ 2 500≤ 5 000≤ 9 000
Partikel gleichzeitig≤ 600 (3 Emitter)≤ 1 500 (6)≤ 3 000 (6)
VRAM Texturen≤ 120 MB≤ 180 MB≤ 260 MB
RAM gesamt (PSS)≤ 380 MB≤ 500 MB≤ 700 MB
Zyklus Simulation≤ 4 ms (Worker-Thread)≤ 2 ms≤ 1 ms
Offline 12 h nachrechnen≤ 1,5 s≤ 0,8 s≤ 0,4 s
Kaltstart bis bedienbar≤ 6 s≤ 4 s≤ 3 s
Download-Größe (AAB, arm64-Split)≤ 120 MB
Akku 30 min aktiv≤ 8 %≤ 6 %≤ 6 %
Temperaturkein Drosseln unter 30 fps in 30 min

Draw-Call-Aufteilung (Niedrig): Planet 1 · Ozean 1 · Atmosphäre 1 · Wolken 1 · Requisiten ≈ 40 (Assets × sichtbare LOD) · Effekte ≤ 8 · UI ≤ 30 · Hintergrund 1 · Reserve 7.

12.3 Maßnahmen

BereichMaßnahme
GeometriePlanet = 1 Mesh, Verformung im Vertex-Shader; Requisiten per MultiMesh; LOD1 + Ausblenden nach Zoomstufe; Smart-low-poly-Budgets (08)
TexturenETC2/ASTC, 512²-Standard, Mipmaps, PBR-Kanäle reduziert, UI ohne Rastergrafik (StyleBoxFlat)
Shaderkeine Schleifen über Lichter, keine dynamischen Branches im Fragment-Shader der Requisiten, Noise vorgebacken statt berechnet, Qualitäts-Defines je Stufe
Licht1 Richtungslicht, keine Echtzeitschatten auf Niedrig/Mittel, Emission statt Punktlichter
PartikelCPUParticles3D auf Niedrig, Emitter nur in sichtbarer Zoomstufe, Pool statt Neuerzeugung
SimulationPacked Arrays, dünne Populationen, dirty-Regionen, Worker-Thread, Makroschritte offline
Rendering-TaktEnergiesparmodus: ohne Eingabe für 10 s → 20 fps (Engine.max_fps), Shader-Zeit läuft weiter; bei Eingabe sofort zurück. Im Menü/Chronik ohne Planet 30 fps
AuflösungRenderauflösung 75/90/100 % (3D-Skalierung), UI immer in voller Auflösung
SpeicherMusik/Ambience streamen, Requisiten-Modelle einmal laden, Chronik-Bilder bei Bedarf laden und freigeben
StartShader-Vorwärmung während des Logos (eine unsichtbare Szene mit allen Materialien), keine großen synchronen Ladevorgänge im ersten Frame

12.4 Adaptive Qualität

  1. Erststart: GPU-Name aus RenderingServer.get_video_adapter_name() gegen Liste in data/gpu_tiers.json (Mali-G52/G57, Adreno 5xx, PowerVR → Niedrig). Unbekannt → 5-s-Kurztest (Kamerafahrt über Testplanet) → Stufe nach gemessener Frametime.
  2. Laufend: Liegt die Frametime 5 s lang über 110 % des Budgets, zuerst Renderauflösung −10 % (bis 65 %), dann eine Stufe tiefer. Hoch wird nur über die Einstellungen wieder gewählt (kein Pendeln).
  3. Thermik: Bei OS.get_thermal_state() [Annahme: Verfügbarkeit in 4.7 prüfen] ≥ „schwer“ → 30-fps-Deckel und Partikel halbieren.
  4. Spieler kann die Stufe jederzeit selbst wählen; Anzeige „automatisch (Mittel)“.

12.5 Testverfahren

TestWieWannGrenzwert
Kamerafahrt-Benchmarktests/bench_orbit.gd: fester Seed, Epoche-5-Testplanet mit Stadt, 60 s Pfad über alle Zoomstufenjede Woche + vor jedem Release, auf A13Budgets 12.2
Simulations-Benchmarktests/bench_sim.gd: 1 000 Zyklen + 72 Makroschrittejedes Sim-Ticket≤ 4 ms / ≤ 1,5 s
Dauerlauf30 min Zeitraffer auf A13, Logging von FPS und Temperaturvor Releasekeine Drosselung < 30 fps
Speicheradb shell dumpsys meminfo de.bridgeroyale.app nach 10 minvor ReleasePSS-Budget
Akku30 min, Bildschirm 50 %, Flugmodusvor Release≤ 8 %
ProfilingGodot-Profiler (Remote-Debug), Perfetto (laut Release-Berichten in 4.7 unterstützt), Android GPU Inspector für GPU-Spitzenbei Grenzwertverletzung–

Ergebnisse als JSON nach artifacts/bench/<datum>-<gerät>.json. tools/bench-report.mjs vergleicht mit dem letzten Lauf und markiert Rückschritte > 10 %.