thedivergentai/godot-adapt-mobile-to-desktop
Expert patterns for scaling mobile games to desktop including mouse/keyboard controls, increased resolution and graphical fidelity, expanded UI layouts, settings menus, window management, and platform-specific features. Use when creating desktop ports or cross-platform releases. Trigger keywords: mouse_controls, keyboard_shortcuts, resolution_scaling, graphics_settings, fullscreen_toggle, window_modes, Steam_integration, desktop_optimization.
npx skills add https://github.com/thedivergentai/GD-Agentic-Skills --skill godot-adapt-mobile-to-desktop
Expert guidance for scaling mobile games to desktop platforms.
> MANDATORY: Read the appropriate script before implementing the corresponding pattern.
MANDATORY first read for input remap — Bridges mobile actions to keyboard/mouse without rewriting gameplay. Emits mouse_look_bridge_requested when FPS capture is needed — pair with mouse_capture_look.
MANDATORY when UI needs hover — Restores desktop hover/focus affordances mobile never had. Prefer this over ad-hoc mouse_entered dumps.
Captured look via InputEventMouseMotion.relative — use for FPS/orbit when adapter alone is not enough.
MANDATORY — Windowed / exclusive fullscreen / borderless via DisplayServer.
Runtime InputMap remap + ConfigFile persistence.
Hardware cursor show/hide/combat vs menu states.
VSync / Engine.max_fps unlock for 144Hz+.
Native resolution OptionButton from DisplayServer.screen_get_size.
MANDATORY — Shrink thumb-sized mobile Controls for mouse density.
Mouse-wheel zoom replacing pinch.
MANDATORY — set_auto_accept_quit(false) + save prompt on WM close.
Launch/place window on the screen under the cursor.
| Need | Use |
|------|-----|
| Map touch actions → WASD/mouse without rewriting movers | desktop_input_adapter |
| Button/Control hover styles & tooltips | hover_bridge |
| Captured mouselook (FPS/3P orbit) | mouse_capture_look — MANDATORY when aim/Look requires captured relative motion; adapter get_aim_vector() alone is top-down only |
| Rebindable keys | keybinding_remapper |
| Pinch → wheel zoom | scroll_wheel_zoom |
When desktop_input_adapter emits mouse_look_bridge_requested, attach or enable mouse_capture_look.gd on the player/camera rig — do not stop after InputMap injection.
| Goal | Decision |
|------|----------|
| Ship on Steam with cloud/achievements | Add GDExtension bridge (e.g. GodotSteam); keep init behind OS.has_feature("steam") / editor-safe stubs. Do not paste fake Steam.* tutorials into gameplay scripts. |
| Discord Rich Presence only | Prefer a thin GDExtension/plugin; update presence from an Autoload on scene change — never block _ready on network. |
| No store integration this milestone | Cut — omit Steam/Discord code paths entirely; document as future GDExtension spike. |
> MANDATORY when porting beyond the ordered procedure: read desktop-port-deep.md. Do NOT Load it for a first-pass keyboard/mouse remap.
> MANDATORY before declaring the port complete: run desktop-port-testing-checklist.md. Do not inline a partial checklist — use the reference file.
OS.create_process + user://settings.cfg before main pack.user://override.cfg quality suggestions.> 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.
InputEventScreenTouch/ScreenDrag with mouse motion, buttons, and keyboard actions on desktop.Input.set_custom_mouse_cursor).NOTIFICATION_WM_CLOSE_REQUEST / set_auto_accept_quit(false) so the OS close button can prompt save instead of silent exit.pc / mobile / OS tags for branching input, UI scale, and graphics quality without separate projects.ConfigFile persistence.Take thedivergentai/godot-adapt-mobile-to-desktop from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.