godot-platform-desktop について
Godot のデスクトップゲームやツールの開発者向けプラットフォームスキルです。ウィンドウ管理、設定の永続化、キー割り当て変更、デスクトップ SDK のラッパーを扱い、DPI、多画面、終了時の保存、CPU 使用量の抑制にも対応します。
主な機能
- 01DPI 対応のマルチモニターウィンドウ管理
- 02ConfigFile による設定の永続化
- 03physical_keycode を使ったキー割り当て変更
- 04Steam・Epic SDK の安全なラッパー
- 05ネイティブダイアログとセカンダリウィンドウ
- 06終了処理と低 CPU 使用モード
活用シーン
- 01ウィンドウモードと位置の保存・復元
- 02異なるキーボード配列向けの再割り当て UI
- 03デスクトップアプリ終了前の設定保存
- 04ランチャーやツールのアイドル時 CPU 使用量の削減
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ thedivergentai/ game-dev-agentic-skills --skill godot-platform-desktopインストール後、Claude Code で/godot-platform-desktopを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/desktop-expert-patterns.mdmigration-notes.mdscripts/desktop_integration_manager.gddesktop_performance_monitor.gddesktop_settings_persistent.gddesktop_window_manager.gdgraceful_shutdown_handler.gdlow_processor_eco_mode.gdnative_dialog_helper.gdnative_shell_executor.gdphysical_input_rebinder.gdplatform_desktop_patterns.gdplatform_sdk_wrapper.gdsecondary_window_spawner.gd詳細
プラットフォーム:デスクトップ
設定の柔軟性、ウィンドウ管理、キーボード/マウスの精密な操作がデスクトップゲームの特徴です。
絶対に避けること(デスクトップ向け上級者ルール)
ウィンドウとディスプレイ
- 解像度やフルスクリーンモードを絶対にハードコードしないでください — 解像度とモードを切り替えられる設定メニューを必ず用意してください。
- DPI スケール係数を絶対に無視しないでください —
DisplayServer.screen_get_scale()/使用可能な矩形を使ってください。 - ボーダーレスウィンドウのオプションを絶対に省略しないでください — 複数モニターでの作業に備え、
WINDOW_MODE_FULLSCREEN(ボーダーレス)を選べるようにしてください。
入力と永続化
- 移動キーの再割り当てに
keycodeを絶対に使わないでください — AZERTY/Dvorak キーボードに対応するにはphysical_keycodeを使ってください。 - 設定やユーザーデータを
res://に絶対に保存しないでください — 必ずuser://を使ってください。 NOTIFICATION_WM_CLOSE_REQUESTを絶対に省略しないでください —get_tree().quit()の前に ConfigFile をフラッシュしてください。
パフォーマンスと統合
- ユーティリティツールを最大フレームレートで絶対に実行しないでください — 静的なツールでは
OS.low_processor_usage_modeを有効にしてください。 - 独自 SDK(Steam/Epic)を絶対に直接呼び出さないでください —
Engine.has_singleton()ガードでラップしてください。 - 大量の I/O でメインスレッドを絶対にブロックしないでください —
WorkerThreadPoolにオフロードしてください。
利用可能なスクリプト
必須:該当するパターンを実装する前に、適切なスクリプトを読んでください。設定/再割り当て/Steam のチュートリアルをインラインで貼り付けないでください — スクリプトを標準的な実装方法としてください。
desktop_window_manager.gd
DisplayServer を使用した、DPI を考慮する複数モニターのウィンドウ配置の上級実装です。
desktop_settings_persistent.gd
永続化される INI データに ConfigFile を使う、本番環境向けの設定永続化です。
physical_input_rebinder.gd
AZERTY/Dvorak 向けに physical_keycode を使用する、上級者向けのキー位置ベースの再割り当てシステムです。
platform_sdk_wrapper.gd
クラッシュガードを備えた、安全な PC SDK シングルトンラッパー(Steamworks/Epic)です。
native_dialog_helper.gd
ネイティブ OS ファイルダイアログとシステムアラートの処理です。
secondary_window_spawner.gd
セカンダリ Viewport/Window 向けの、真のマルチウィンドウ管理です。
graceful_shutdown_handler.gd
データのフラッシュと終了ガードのための、安全な終了リクエストインターセプターです。
low_processor_eco_mode.gd
デスクトップツールとランチャー向けのエコモード最適化です。
desktop_performance_monitor.gd
動的なグラフィックプリセット設定のための、OS レベルのハードウェア検出です。
native_shell_executor.gd
ネイティブシェルコマンドの実行と出力取得の上級実装です。
デスクトップの標準的な実装方法(必須スクリプト)
- 解像度/ストレッチ — 以下のミニツリーを使い、その後、必須の desktop_window_manager.gd を使ってください。
- ウィンドウ/DPI — 複数モニターでの位置、スケール、モードの復元には、必須の desktop_window_manager.gd を使ってください。
- ConfigFile 設定 —
user://にグラフィック/オーディオ/ウィンドウ設定を保存するには、必須の desktop_settings_persistent.gd を使ってください。 - 物理キーの再割り当て —
physical_keycodeのみを使う、必須の physical_input_rebinder.gd を使ってください。 - 終了時のフラッシュ —
NOTIFICATION_WM_CLOSE_REQUEST→ 保存 → 終了の処理には、必須の graceful_shutdown_handler.gd を使ってください。 - ストア SDK — ストアを呼び出す前に、必須の platform_sdk_wrapper.gd を使ってください:
if Engine.has_singleton("Steam")→ Steam API、elif Engine.has_singleton("EOS")→ Epic、それ以外は何もしないスタブ。エクスポート機能タグ(steam/epic)で機能を制御してください。
解像度/ストレッチのミニツリー
| プレイヤーのニーズ | ウィンドウモード | スクリプトフック |
|---|---|---|
| 全画面ゲーム、Alt+Tab に対応 | WINDOW_MODE_FULLSCREEN(ボーダーレス) | desktop_window_manager.gd |
| 排他的全画面(最低レイテンシー) | WINDOW_MODE_EXCLUSIVE_FULLSCREEN | 同上 — 選択内容を ConfigFile に保存 |
| ウィンドウ表示/マルチモニター間のドラッグ | WINDOW_MODE_WINDOWED + 使用可能な矩形領域/DPI スケール | 同上 + desktop_settings_persistent.gd |
CI スモークテスト: マージ前に、user:// で設定の書き込み/読み戻しを行うヘッドレスの --path . --quit-after 1 を実行します(godot-export-builds と組み合わせます)。
エキスパート向け補足(簡潔に — チュートリアル全編にはしない)
1. Alt+Tab による入力固着の防止策
NOTIFICATION_APPLICATION_FOCUS_OUT で一時停止し、押されたままの移動アクションに対して Input.action_release を呼び出すことで、OS がキーを離したイベントを取りこぼしても速度が残らないようにします。
2. デスクトップランチャーに関する注意
軽量なランチャープロジェクトでは、user://settings.cfg の書き込み後に OS.create_process でメインパックを起動できます。メニューでアイドル状態のときは、low_processor_eco_mode.gd と組み合わせてください。
詳細解説(必要に応じて)
- 設定メニュー、キーの再割り当て、Steam、Alt+Tab 対策、ランチャー → desktop-expert-patterns.md
リファレンス
段階的な情報提示:特定の API を調査するときだけ公式ドキュメントのリンクを開きます。 作業を関連領域の担当者に振り分けるときは関連スキルを読み込み、スキルの全体を事前に読み込まないでください。
公式ドキュメント
- DisplayServer — ウィンドウモード、
screen_get_scale/使用可能な矩形領域、マルチモニターおよび HiDPI のデスクトップ設定に関わるネイティブのファイルダイアログ機能。 - 複数の解像度 — ストレッチモード、アスペクト比、コンテンツスケールを設定し、解像度のドロップダウンで 1080p~4K ディスプレイ全体にわたり鮮明さを保つ方法。
- 終了リクエストの処理 —
NOTIFICATION_WM_CLOSE_REQUEST/set_auto_accept_quit(false)を使い、Alt+F4 やウィンドウを閉じる操作の前に ConfigFile をフラッシュする方法。 - ConfigFile —
user://にグラフィックス、オーディオ、ウィンドウの状態を INI 形式で永続化する方法。 - Godot プロジェクトのファイルパス — 設定とセーブに
user://を使う必要がある理由(エクスポートされたres://は読み取り専用です)。 - InputEventKey —
physical_keycodeとkeycodeの違い。WASD のキー割り当てを AZERTY/Dvorak 配列でも維持できます。 - InputMap — デスクトップのキー再割り当て UI で使う、実行時の
action_erase_events/action_add_event。 - InputEvent の使用 — PC で Alt+Tab を切り替える際に、フォーカス喪失でキーが固着する問題(
NOTIFICATION_APPLICATION_FOCUS_OUT)。 - Window — 真のマルチウィンドウ型デスクトップアプリ向けの、セカンダリ/ツールウィンドウとモード/サイズ/位置の復元。
- OS — ランチャーやネイティブシェルフック向けの
low_processor_usage_mode、create_process/execute、alert。 - アプリケーションの作成 — ゲーム専用のループを超えた、デスクトップ風アプリのクローム、ダイアログ、終了時の UX。
- Engine — Steam/Epic の GDExtensions がスタンドアロンビルドでクラッシュしないようにする
has_singleton/get_singletonのガード。
関連スキル
前提条件
- godot-project-foundations — ディスプレイのストレッチ、機能タグ(
windows/linux/macos)、およびデスクトップの各設定メニューで必要となるプロジェクトのデフォルト設定です。 - godot-input-handling —
physical_keycodeの再割り当て UI を実装する前に必要な、InputEvent のバッファリングとアクション設計です。 - godot-ui-containers — 解像度が変わってもレイアウトが崩れない設定画面、ドロップダウン、リマッパーの行です。
補完
- godot-save-load-systems — ConfigFile による設定や、終了要求時の適切なフラッシュ処理と連携するゲームセーブの管理です。
- godot-autoload-architecture — ウィンドウマネージャー、SDK ラッパー、シャットダウンハンドラーのためのシングルトンの配置先です。
- godot-audio-systems — デスクトップのグラフィックス/オーディオ設定メニューで通常まとめて公開される、バス音量の永続化です。
- godot-adapt-desktop-to-mobile — モバイルへ移植した後も同じプロジェクトでデスクトップのキーボード/マウス操作を維持する場合の、タッチ操作/セーフエリアの再割り当てです。
- godot-adapt-mobile-to-desktop — タッチ操作を前提としたタイトルを、ウィンドウモード、キー割り当て、マルチモニターの要件に対応させます。
- godot-composition-apps — エコモード、ネイティブダイアログ、セカンダリウィンドウを活用するツール/ランチャーの構成パターンです。
- godot-performance-optimization — OS レベルのハードウェア検出で「Ultra」と「Balanced」のどちらかを選ぶ際に行う、プロファイリングと品質プリセットの設定です。
下流/利用先
- godot-export-builds — デスクトップの設定と SDK ラッパーが安定した後に使用する、Windows/Linux/macOS のエクスポートプリセット、アイコン、ストア向けパッケージングです。
- godot-platform-mobile — デュアルターゲットのプロジェクトで、スマートフォン上ではデスクトップの終了/ウィンドウ API を前提としないための、関連するプラットフォームスキルです。
- godot-platform-web — 同じ設定一式を HTML5 に提供する際の、ブラウザーの制約(マルチウィンドウ非対応/シェル機能の制限)です。
マスター
- godot-master — ライブラリのルーターであり、関連分野のスキルと並べてこのプラットフォームスキルを見つけるための、対応するモジュールエントリです。