Expert blueprint for mobile platforms (Android/iOS) covering touch controls, virtual joysticks, responsive UI, safe areas (notches), battery optimization, and app store guidelines.
Expert blueprint for mobile platforms (Android/iOS) covering touch controls, virtual joysticks, responsive UI, safe areas (notches), battery optimization, and app store guidelines.
Use when targeting mobile releases or implementing touch input.
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
Claude CodeNot declared
CursorNot declared
CodexNot declared
GitHub CopilotNot declared
WindsurfNot declared
Gemini CLINot declared
ClineNot declared
OpenCodeNot declared
Repository health
Stars678
LicenseLICENSE
Default branchmain
Open issues0
Status
Active
Package contents
Files included with this skill beyond the listing page.
skill mdSKILL.md13,095 B
docsSUMMARY.md3,991 B
History
First seen on skills.sh
First recorded snapshot · 297 installs
SKILL.md
Platform: Mobile
Touch-first input, safe area handling, and battery optimization define mobile development.
NEVER Do (Expert Mobile Rules)
Input & Display
NEVER use mouse events for touch interaction — Relying on InputEventMouseButton on mobile is unreliable. Always use InputEventScreenTouch and InputEventScreenDrag for high-fidelity multi-touch support.
NEVER ignore display safe areas (notches/cutouts) — UI placed behind a camera notch is unusable. Query DisplayServer.getdisplaysafe_area() and offset critical UI accordingly.
NEVER assume fixed orientation — Locking a landscape game without handling the size_changed signal leads to broken layouts on foldable devices or tablet orientation shifts.
Battery & Performance
NEVER maintain high framerate when backgrounded — Keeping an app at 60 FPS in the background drains battery. Use NOTIFICATIONAPPLICATIONPAUSED to drop Engine.max_fps to 1.
NEVER use the Forward+ renderer for mobile — Most mobile GPUs are not optimized for Forward+. Use the dedicated Mobile or Compatibility renderers for optimal fill-rate.
NEVER leave 'ETC2/ASTC' texture compression disabled — Uncompressed desktop textures will crash mobile devices due to VRAM exhaustion.
Permissions & OS Integration
NEVER assume Android permissions are automatically granted — You MUST explicitly call OS.requestpermission() and verify with OS.getgranted_permissions().
NEVER call handheld vibration without permission — On Android, vibration calls are ignored unless the VIBRATE permission is enabled in the export preset.
NEVER block the main thread for I/O — Large file saves on mobile can trigger ANR (Application Not Responding) errors. Use background threads.
Available Scripts
MANDATORY: Pick the golden-path branch, then load only the matching scripts.
Golden path
Run the decision tree below (control × orientation × renderer).
Touch / stick → mobilegesturerecognizer.gd (+ input skill for action maps). Built-in virtual joystick when sufficient.
ANR I/O — Large saves/loads on the main thread trip Android ANR. WHY: OS kills unresponsive apps. Gate: background threads / WorkerThreadPool for disk I/O.
Pause FPS — Backgrounded apps left at 60 FPS drain battery and heat the SoC. WHY: NOTIFICATIONAPPLICATIONPAUSED must drop Engine.maxfps (see thermalthrottle_monitor.gd).
Permission timing — Request Android permissions at the feature moment (mic, photos), not on cold boot. WHY: Play policy + user trust; verify with OS.getgrantedpermissions() via androidruntimepermissions.gd.
Expert notes (script-first)
Android Back: disable quitongoback, handle NOTIFICATIONWMGOBACKREQUEST in [mobilenavigationmanager.gd](scripts/mobilenavigation_manager.gd).
Haptics: [hapticpatterngenerator.gd](scripts/hapticpatterngenerator.gd) / [mobilehaptics.gd](scripts/mobilehaptics.gd) + export VIBRATE permission.
Shader hitch: [mobileshaderprecompiler.gd](scripts/mobileshaderprecompiler.gd); prefer godot-shaders-basics for deep precompile recipes.
Progressive disclosure: open Official Documentation links only when researching a specific API; load Related Skills when routing work to a peer domain — do not preload the whole lattice.
Official Documentation
Using InputEvent — Event pipeline that makes InputEventScreenTouch / InputEventScreenDrag the correct mobile path instead of mouse-button emulation.
Input examples — Multi-touch, drag, and gesture patterns behind virtual joysticks, pinch/rotate, and swipe HUDs.
Handling quit requests — NOTIFICATIONAPPLICATIONPAUSED / resume and Android back (WMGOBACK_REQUEST) lifecycle that replaces desktop quit assumptions.
DisplayServer — getdisplaysafearea(), orientation, and virtual keyboard APIs for notches, foldables, and OSK occlusion.
OS — requestpermission() / getgrantedpermissions(), feature tags, and memory queries used by Android runtime gates and VRAM watchdogs.
Input — vibratehandheld(), accelerometer/gravity/gyroscope fusion, and touch↔mouse emulation toggles.
Exporting for Android — Permissions (including VIBRATE), APK/AAB, and store packaging constraints after platform code is ready.
Exporting for iOS — Xcode export, capabilities, and App Store gates that catch missing privacy/plugin setup late.
Android in-app purchases — Official Play Billing flow that the IAP boilerplate script abstracts with iOS store plugins.