» VR開発メモトップへ

Godotメモ

最終更新日:2026年09月26日
記事作成日:2021年03月10日

オープンソースのゲームエンジンGodotの特徴やTipsをメモしています。

更新履歴

(2026年9月26日)Godot 4.7で「Android」のセットアップを更新、Godot Asset Storeの公開を反映、「ゲームの動画を収録するには」、「.tscnをテキストで編集するときは」を追加、Jolt Physics・Androidエディタ・GDExtension・エンジンビルド・Webエクスポート・C#・ネットワーク・Tipsの記述を最新の状況に更新
(2025年1月3日)Godot 4.4でC#パッケージが.NET 8に更新されたことを追記
(2024年8月28日)「PCKファイルについて」にGodot 4.3のGDScriptのバイナリトークン化・難読化と、PCKの暗号化について追記
(2024年8月26日)Godot 4.3の変更点を反映、「物理シミュレーションについて」、「日本語のコミュニティはある?」を追加、「Godotの名前の由来と読み方について」を拡充、W4 Cloudについて追記
(2024年2月18日)Webエクスポートの対応状況等を更新、C#のサポート状況を反映、「Godot Engineの名前の由来と読み方について」を更新


Godotとは

GodotはオープンソースのC++製2D/3Dゲームエンジンです。

もともとは2007年頃から元アルゼンチン在住のJuan Linietsky氏(現在はスペインに移住)とAriel Manzur氏が開発していたインハウスゲームエンジンですが、2014年にMITライセンスでオープンソース化されました。以後、2015年よりオープンソースソフトウェアのサポートを行う非営利組織Software Freedom Conservancyのメンバープロジェクトとして、Patreonで開発費の支援を募ったり、Mozilla、Microsoft、Epic Games、Facebook等から都度開発資金の支援を受けつつアクティブに開発が進められています。2022年8月にはGodot Foundationが発足してSoftware Freedom Conservancyから独立し、あわせて主だった開発メンバーによりエンタープライズサポートや家庭用ゲーム機対応を行うW4 Games社が設立されました。現在はGodot FoundationがGodot Development Fundで資金の支援を受け付けており、プロジェクトメンバーの雇用や、カンファレンス(GodotCon)の開催等を行っています。

Godotの開発はGitHubのリポジトリ上で行われています。コアとなるエンジンチームの開発者は10数名ですが、累計2000名以上の開発者がGitHub上で開発に参加しています。Godotの開発プロセスとしては、アイデアの提案がGodot Proposalsリポジトリで行われ、まずこちらで議論し合意を得てから実装に進むのが基本的なルールになっています。

GodotはWindows、macOS、Linux、iOS、Android、Webブラウザと主要な一通りのプラットフォームにゲームを出力できます。また、W4 Games社が家庭用ゲーム機(現在Nintendo SwitchとPS5、Xbox Series X/S)への有償エクスポートライセンスを提供しています。

スクリプトは独自言語のGDScriptですが、C#やC++も使用できます。

Godot 4で大型アップデートが行われ、Godot 3系とはほぼ別物になっています。2023年3月にGodot 4.0が安定版としてリリースされました。

Godotは公式サイトからWindows/macOS/Linux版がダウンロードできるほか、Steamでも日本国内向けに配信されています。基本的には公式サイトからダウンロードしてバージョンごとに手元で管理するのがおすすめです。また、Webブラウザ版のエディタや、Google PlayとMeta Horizon Storeで配布されているAndroid版のエディタもあります。Meta Horizon Store版(Meta Quest版)は、2Dのウィンドウでの編集と、XRでのプレビューの両方ができます(2024年9月にearly accessとして公開)。

他のゲームエンジンの使用経験がある方がGodotの全機能を手っ取り早く把握したい場合、List of featuresを一読するのがおすすめです。

デモプロジェクト集がGitHubのGodot demo projectsにあります。ブラウザ上で動作するデモを見ることができます。

Godotの名前の由来と読み方について

公式のプレスキットには、「Godotは戯曲『ゴドーを待ちながら』にちなんで命名され、通常戯曲と同じように発音される。言語によってGodotの発音は異なるが、私達はそれを美しいと考えている」との説明があります。

「ゴドーを待ちながら(En attendant Godot)」はフランス語の戯曲で(なので最後の「t」を発音しない)、いくら待ってもゴドーがやってこないというストーリーなのですが、Wikipediaの項目によればJuan Linietsky氏いわく「『エンジンに新しい機能を追加し、完璧なものへと近づけたい』という永遠の叶わぬ願いをサミュエル・ベケットの劇『ゴドーを待ちながら』になぞらえて取られた」とのことです。

さらに裏話として、Godotはもともとただのコードネームだったのが、逆転裁判にゴドーという同名のキャラクターが登場したことで正式名称に決まったそうで、こちらの由来からも日本語では「ゴドー」読みがよさそうです。

なお、英語話者についても、直近のGodotの公式カンファレンスGodotCon 2023では登壇者はほぼ全員「ゴドー(“Go-Doh”)」と発音しています。ただし、リード開発者のJuan Linietsky氏はアルゼンチン出身なので、スペイン語読みでゴードット(“Go-Dot”)と発音することにこだわっているようです。

W4 Games社について

Godotのメイン開発者のJuan Linietsky氏、Rémi Verschelde氏らがGodotのエコシステムを強化するため(エンタープライズサポートやゲーム専用機のサポート等)にW4 Games社を設立し、2022年9月にシードで850万ドルを調達 、2023年12月にシリーズAで1300万ドルを調達しています。ちょうどLinuxに対するRed Hatのような存在をイメージしており、Red Hatの創業者やOSS Capital等が出資しているようです。

2024年3月にはMetaとの戦略パートナーシップが発表されました。GodotのOpenXRサポートの向上、Meta Quest SDKのインテグレーション提供、最適化されたリリース用テンプレートの開発、Godot向けのQuestの高品質なサンプルとドキュメントの作成等を行うとのことです。

マスコットキャラはある?

公式というわけではありませんが、GodetteないしGodot-chanというキャラクターがあります。エイプリルフールのジョークにもなっています。ライセンスはCC-BY 3.0です。

日本語のコミュニティはある?

Saitosさんが2020年にGodot Japan User Communityを設立し、Discordサーバーを開設しています。

また、コミュニティ主催のオフラインイベントとして、Godot Meetup TokyoというLT会・交流会を2023年10月より数ヶ月おきに開催しています。

ビルド(エクスポート)するには

ゲーム等を実行するためのファイル一式を出力する処理を、Godotではエクスポートと呼んでいます。

エクスポートするには、Project > Exportを開いて、Add…でターゲットのプラットフォームを追加します。初回はGodotのバージョンごとに1.3GBほどのテンプレートファイルをダウンロードする必要があります(赤字でメッセージが出ます)。

巨大なテンプレートファイルの正体は、全プラットフォームのビルド済みのGodotエンジンランタイム一式です(Editor > Open Editor Data/Settings Folderを開いてexport_templatesフォルダ(Godot 3ではtemplatesフォルダ)の中を見てみてください)。Godotはこのランタイムにプロジェクトのアーカイブデータ(.pckファイル)を添付して実行ファイル一式を生成するようになっています。エンジン本体に手を入れない限りは重い「ビルド」が必要ないため、イテレーションが非常に高速です。

スクリプト言語について

Godotではいろんな言語を使用できますが、Godot Community Poll 2024によれば76.5%のユーザーがGDScriptをメインに使っているようです(次点がC#で17.3%)。

GDScript

GDScriptはGodotの独自言語で、拡張子は.gdです。

コーディング環境はGodotにコードエディタが内蔵されているほか、Visual Studio Codeのgodot-tools拡張があります。Visual Studio Codeのほうが高機能ですが、Godotのコードエディタでは再生中に.gdを保存するとホットリロードされて便利です。

AOTコンパイルやJITコンパイルは現在行われていないため、パフォーマンス的にはC#より一桁遅いようです(optional typingを使用すると若干速くなるようです)。Releaseモードでエクスポートすると実行時のチェックが省略され速くなるようです。

こちらのプルリクエストの簡易ベンチマークより、DebugよりReleaseのほうが4倍程度、typedにすると2倍程度速くなることが推定できます。

C#

静的型付け言語が好みでパフォーマンスが欲しい場合はC#をとされています。

C#のプラットフォームごとの対応状況は、ドキュメントのC# platform supportにまとまっています(経緯はGodot 4.2の解説記事が詳しいです)。2026年9月現在、デスクトップは正式にサポートされています。AndroidとiOSは実験的なサポートのままで、Androidは.NET 7以上(Mono)、iOSは.NET 8以上(NativeAOT)が必要です。WebではC#を使えません(上流の.NET側の対応が必要です)。

Godot 4.4でC#パッケージが.NET 8に更新されています。.NET 9以降をターゲットにする場合は、該当の.NET SDKをインストールした上で、.csprojファイルのTargetFrameworkを変更します。

Editor > Editor Settings > Dotnet > Editor > External Editorで使用するIDEを選択でき、Visual Studio、Visual Studio Code、Rider等に対応しています。

C#のAPIはGDScriptのAPIをそのままPascalCaseにした感じになっています。例えばGDScriptの_physics_processがC#では_PhysicsProcess、get_nodeがGetNodeになります。

パフォーマンスについて、「ベンチマークではC#のほうが最大4倍速かったが、Godot本体とのやり取りに高コストなマーシャリングが必要」という記述があります。

C#を使用すると、依存する.NETのDLL群(System.dll等)とGodotSharp.dllが.pckファイルに含まれ、そのぶんサイズが大きくなります(約30MB)。テンプレートのbcl(Base Class Library)フォルダに事前ビルドされているようです。

プロジェクト内の.csファイルは「プロジェクト名.dll」というファイルにコンパイルされます。

[Export]を変更したときにInspectorに反映させるには、右上のBuildボタンまたはAlt+Bでビルドする必要があります。

GDScriptからC#のコードを呼び出したり、C#からGDScriptのコードを呼び出したりできます(Cross-language scripting)。

GDExtensionについて

C++やその他の言語でエンジンを拡張したい場合、Unityのネイティブプラグインに相当するGDExtensionを使います。エンジンを再ビルドせずに、共有ライブラリ(WindowsならDLL)として新しいノードやリソースを追加できます。Godot 3のGDNativeの後継で(Introducing GDNative’s successor, GDExtension)、Godot 4ではGDNativeは使えません。

Meta Quest向けのOpenXR Vendors pluginもGDExtensionで作られています。

GodotでC++を使用する別の方法としてモジュールがあり、モジュール単位で有効・無効にしてエンジン本体と一緒にビルドします。

グラフィックスについて

座標系について

3D座標系はY-upの右手座標系です。OpenGLの標準に合わせているとのことです。

Godot was born on Linux+OpenGL and it uses the OpenGL standard (like Maya) and it’s proud of it’s roots.

Zマイナスが前方で、Vector3.FORWARDが(0, 0, -1)になっています。

3Dモデルのインポートについて

(Godot 4.3)Godot 4.3はFBXファイルのインポートに対応しました。FBXローダーとしてufbxが使用されています。

(Godot 4.2以前)Godotはさまざまな3Dフォーマットに対応していますが、glTF 2.0(.gltfまたは.glb)の使用が推奨されています。プロジェクトのフォルダにglTFファイルを置くとシーンとしてインポートされ使用できます。

BlenderでglTFを作成する場合、Godotのプロジェクト内のサイズを小さくしたい場合はglTF Binary(.glb)で、テクスチャのインポート設定を調整したい場合はglTF Separate(.gltf+.bin+テクスチャ画像)でエクスポートします。

インポートされた.gltf/.glbをダブルクリックするとAdvanced Import Settings for Sceneのウィンドウが開き、Actions… > Extract Materialsでマテリアルを抽出したり、MeshのLighmap UVをEnableにしてライトマップのUVを生成したりできます。

インポートされたシーンは直接編集できません。編集したい場合は、右クリックしてNew Inherited SceneでGodotのシーンファイル(.tscn)に変換する必要があります。

テクスチャの解像度等を調整するには、glTF Separateでインポートしてテクスチャを選択し、Importパネル(デフォルトのレイアウトではSceneパネルの隣にあります)で設定を調整してReimportボタンを押します。Inspectorでテクスチャの圧縮フォーマットとサイズが確認できます。

コリジョンの生成

3Dソフトでメッシュの名前に-colonly(=collision only)というサフィックスをつけておくと、インポート時にStaticBody3DとCollisionShape3Dが生成されコリジョンメッシュになります。この機能を使うと、レベル制作時に3Dモデルと簡略化したコリジョンメッシュを同時にインポートできます。コリジョン関連では他に-col、-convcol、-convcolonlyのサフィックスがあります。

その他、ナビゲーションメッシュ、物理やアニメーション関連のサフィックスが用意されています(「Importing 3D scenes」を参照)。

インポートしたアセットについて

プロジェクトの.godot/importedフォルダにインポートで変換されたファイルが生成されます。プロジェクトをエクスポートするとこのファイルがそのまま.pckファイルにパッケージされます。

Godotのマテリアル

StandardMaterial3D

さまざまな機能を手軽に使用できるPBMマテリアルです。UnityのStandardシェーダーのマテリアルに相当しますが、リムライト、クリアコート、サブサーフェススキャッタリング、トゥーンシェーディング等の機能も搭載しています。

ORMMaterial3D

アンビエント・ラフネス・メタリックのテクスチャを統合したORMテクスチャを使用するPBRマテリアルです。

ShaderMaterial3D

シェーダーを自分で記述するマテリアルです。

Godotのシェーダー

GodotのシェーダーはGLSLをベースにした独自言語で、拡張子は.gdshaderです。GLSLのシェーダーを利用する方法の解説があります。

また、ノードベースのVisualShaderもあります。

Godotで使用できるシェーダーを集めたGodot Shadersというサイトがあります。

ライトマップを焼くには

Godot 4では新しいGPUベースのライトマッパーが使用できます。

シーンにLightmapGIノードを配置して、ツールバーのBake Lightmapsをクリックするとライトマップのファイル(.lmbake)が生成されます。

CSGShape3DsとPrimitiveMeshesは焼けない、OpenGLバックエンドでは焼けないとのことです。

リアルタイム大域照明

Godot 4ではリアルタイム大域照明のSDFGIが使用できます。シーンにWorldEnvironmentノードを追加して新規のEnvironmentを作成、SDFGI > Enabledをチェックすると有効になります。Project Settings > Rendering > RendererのRendering Methodがforward_plusになっている必要があります。

Linietsky氏がUE5のLumenとの比較ツイートをしています。また、SDFGIの実装の解説が以下にあります。

なお、後継のHDDAGIが開発されています。SDFGIよりも軽量で、カメラが高速移動してもすぐ反映され、ライト漏れも少ないとのことです。2026年9月現在はまだマージされておらず、元のPRはドラフトのままです。リベースしたPR(#119869)で作業が続いています。

また、スクリーンスペースの間接光を付加するSSILが使用できます。同じくWorldEnvironmentノードのSSIL > Enabledをオンにします。SDFGIでカバーできないディテールを埋められるとのことです。

物理シミュレーションについて

Godot 3ではBulletが搭載されていましたが、Godot 4.0では独自エンジンのGodot Physicsに変更されました。

その後、Godot 4.4で3D物理エンジンとしてJolt Physicsがエンジン本体に統合され(#99895)、Godot 4.6からは新規プロジェクトのデフォルトになっています。既存のプロジェクトでは、Project Settings > Physics > 3D > Physics EngineをJolt Physicsに変更して再起動すると切り替えられます(Using Jolt Physics)。

ネットワーク対応について

通信層としてMultiplayerPeerの実装が用意されています。

  • ENetMultiplayerPeer: UDP(ENet)。信頼性・順序保証のある送信もできる、標準的な選択肢
  • WebSocketMultiplayerPeer: WebSocket。Webエクスポートでも使える
  • WebRTCMultiplayerPeer: WebRTC(データチャネル)。P2P接続に使う

その上の高レベルのAPIでは、どのMultiplayerPeerを使っても同じ書き方でシーンを同期できます。単発のイベントは@rpcを付けた関数で送ります。ノードの生成はMultiplayerSpawner、プロパティの同期はMultiplayerSynchronizerで自動化できます(Multiplayer in Godot 4.0: Scene Replication)。

W4 Games社がオンラインゲーム用クラウドサービスW4 Cloudを提供しており、アカウント認証、マッチメイキング、データベース、ゲームサーバーのオートスケーリング等が利用できます。GNU AGPLv3でセルフホストも可能で、SupabaseとAgonesを使っているようです。

VR対応について

「Godot VR開発メモ」を参照してください。

Godot 3からの変更点

Godot 4にはGodot 3からの破壊的変更が多数あります。下記ページに新機能がまとめられています。

Godot 4ではノード名やAPIが多数変更されています。2Dのノードと3Dのノードを区別しやすいように3Dのノードにはサフィックス3Dがつきます。Godot 3のプロジェクトをGodot 4で開くとコンバートが走ります。

Godot 4のグラフィックスAPIはVulkanとGLES3に集約されています。

GDScriptにasync/awaitが追加されています。

Godot 4でProject Settingsの項目が少ない

Project Settingsを開いて右上のAdvanced Settingsを有効にすると表示項目が増えます。

アンチエイリアスを有効にする方法がなかなか分からずはまりました(Advanced Settingsを有効にするとRendering > Anti Aliasingが出てきます)。

プロジェクトをGitでバージョン管理するには

Version Control Systemsのページに.gitignoreするフォルダ・ファイルが書かれています。

Godot 4では新規プロジェクト作成時にそのままCreate & Editすると.gitignoreが生成されるので(.godotフォルダがignoreされています)そのままgit initすればオーケーです。

Android Build Templateをインストールした場合は、/android/も.gitignoreに追加します。テンプレートから再生成でき、エンジンのバージョンにも紐づいているためです。

GDExtensionのアドオン(addons/以下)には、プラットフォームごとのビルド済みバイナリが入っています。例えばOpenXR Vendors pluginは80MB強あります。ただ、1ファイルは数MB程度なので、Git LFSを使わずに普通にコミットしても問題ありませんでした。WindowsではエディタがDLLを~付きの名前でコピーしてから読み込みます。このコピーは、アドオン側の.gitignoreで除外されているのが普通です。

プラットフォームごとのメモ

Web(HTML5)

(2026年9月現在)Godot 4のWebエクスポートにはいくつか制限があり、注意が必要です(Exporting for the Web)。

Compatibilityレンダラーについて

Webエクスポートでは、WebGL 2を使うCompatibility(互換性)レンダラーだけが使用できます。Forward+とMobileは、ブラウザのWebGPUへの対応が前提になるので、まだ使えません(Add WebGPU support)。

CompatibilityレンダラーはGodot 4.3で、MSAA、解像度スケーリング、グロー、リフレクションプローブ、LightmapGI、Adjustments、カラーコレクションなどが実装されました。feature completeと考えられる状態になっているとのことです。VoxelGIは当分実装されない見込みで、SDFGIは実装される見込みがないようです。

Thread SupportとCross-origin Isolation

Godot 4.3以降、Webエクスポートはシングルスレッド(エクスポート設定のThread Supportがオフ)がデフォルトで、推奨されています。シングルスレッドなら、ウェブサーバーに特別な設定をしなくても動きます。

Thread Supportをオンにしてマルチスレッドで動かす場合は、ウェブサーバーの設定でCross-origin Isolationを有効にする必要があります。有効になっていないと、以下のようなエラーが出ます。

Warning!
The following features required to run Godot projects on the Web are missing:
Cross Origin Isolation
SharedArrayBuffer

動作させるには、ウェブサーバーの設定で以下の2つのヘッダを送信します。

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin

たとえばローカルウェブサーバーとしてBrowsersyncを使用する場合、

$ browser-sync init

で設定ファイル(bs-config.js)を生成し、設定ファイルの"middleware"のところを以下のように書き換えます。また、“server"と"https"をtrueにします。

    "middleware": [
        function (req, res, next) {
            res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp');
            res.setHeader('Cross-Origin-Opener-Policy', 'same-origin');
            next();
        }
    ],

    "https": true,
    "server": true,
$ browser-sync start --config bs-config.js

で上記ヘッダが送信されるサーバーが立ち上がります。

C#についての注意

2026年9月現在、Godot 4ではWebエクスポートでC#が使えません(C# platform support)。.NETのWASMがサイドモジュールをロードできないことなどがブロッカーになっています。WebでC#を使う必要がある場合、ドキュメントではGodot 3を使うよう案内されています。

テクスチャフォーマット

WebエクスポートのVRAM Texture Compressionで、対象にするプラットフォームのFor Desktop / For Mobileをオンにします(オンにしていないプラットフォームではテクスチャが表示されません)。

For DesktopはS3TC、For MobileはETC2の圧縮テクスチャを.pckに入れます。両方オンにすればPCとスマートフォンの両方に対応できますが、出力サイズが増えます。

出力サイズ

WebAssemblyのランタイムは数十MBありますが、BrotliやGzipで圧縮して配信するとかなり小さくなります。ウェブサーバーで圧縮配信を設定しておきます。

iOSとmacOSでの動作

Godot 4.3以降でThread SupportをオフにするとWebエクスポートがiOSとmacOSで安定動作するようになります。iOSは16以前でクラッシュが多発するようで、17以降に上げる必要があります。

Windows

rceditがないとエクスポートで警告が出ます。実行ファイルのアイコンを設定するツールです。rceditのリリースページからrcedit-x64.exeをダウンロードしてEditor Settings > Export > Windows > rceditでパスを指定します。

iOS

(Godot 4.2)iOSエクスポートのC#が実験的にサポートしています。.NET 8.0のNativeAOTが使用されます。

エクスポートするには、Exportウィンドウに警告が表示されている通り、App Store Team ID、Identifier、Required Iconsの設定が必要です。少なくとも120x120、76x76、1024x1024の3種類の画像ファイルを用意する必要があります。

“Failed to export the project for platform ‘iOS’“のエラーダイアログが表示される場合は、Godotエディタ本体のOutputウィンドウにエラー詳細が表示されています(上記のアイコンの解像度違い等で発生します)。

Android

(Godot 4.2)AndroidエクスポートのC#が実験的にサポートされています。.NET 7.0のMonoが使用されます。実行速度がNativeAOTより遅いと思われるので要注意です。

(Godot 4.7.2、Windows 11で確認)Androidへエクスポートするには、JDKとAndroid SDKを用意して、GodotのEditor Settingsで参照させる必要があります。Exporting for Androidに必要なものがまとまっています。Godot 4.7で必要なのは以下です。

  • JDK 17(より新しいJDKも使えますが、ドキュメントでは17が推奨されています)
  • Android SDK
    • Platform-Tools 35.0.0以降
    • Build-Tools 35.0.1
    • Platform 35
    • Command-line Tools(latest)
    • CMake 3.10.2.4988404
    • NDK r28b(28.1.13356709)。Gradleビルドに必要です

JDKはwingetで入れるのが手軽です。

winget install --id EclipseAdoptium.Temurin.17.JDK -e

Android SDKはAndroid StudioのSDK Managerで入れてもよいですし、Command-line Toolsだけをダウンロードして、Sdk\cmdline-tools\latestに展開する方法もあります。

Editor > Manage Export Templates…でエクスポートテンプレートをダウンロードしたら、Editor > Editor Settings…のExport > Androidに以下を設定します。

  • Java SDK Path: JDKのフォルダ(例: C:/Program Files/Eclipse Adoptium/jdk-17.0.20.101-hotspot)
  • Android SDK Path: Android SDKのフォルダ(例: %LOCALAPPDATA%\Android\Sdk)

JDKはこのJava SDK Pathで指定するので、以前のように環境変数JAVA_HOMEを設定する必要はありません。デバッグ用のキーストア(%APPDATA%\Godot\keystores\debug.keystore)もGodotが自動で作ります。

また、プロジェクト設定のRendering > Textures > VRAM Compression > Import ETC2 ASTCがオンになっている必要があります。Project ManagerでMobileかCompatibilityのレンダラーを選んでプロジェクトを作れば、自動でオンになっています。オフのままだと「ETC2/ASTC texture compression is required for Android export.」というエラーでエクスポートできません。

開発効率化のための機能

端末をUSBで接続してエディタ右上のRemote Deployボタンを押すと、ビルド・インストール・起動まで行われます。Debug > Deploy with Remote Debugがオンなら、エディタのデバッガーにつながります。シーンドックのRemoteタブで実機のノードを確認・変更したり、プロファイラーを使ったりできます。さらにDebug > Synchronize Scene Changes / Synchronize Script Changesをオンにすると、シーンやスクリプトを保存したときに、再デプロイせずに実機に反映されます。

Debug > Small Deploy with Network Filesystemをオンにすると、実行ボタンでアセットを全部転送せずUSB経由で読み込みが行われるようです(Androidのみ)。アセットが多いプロジェクトのテストに便利なようです。

パフォーマンス最適化について

場所がちょっと分かりにくいですが、コードエディタの下のDebuggerタブを選択して上のProfilerタブを選択するとプロファイラが使用できます。スクリプトや物理シミュレーションの実行時間等を確認できます。

ビューポート左上のPerspective > View Frame TimeをオンにするとフレームレートとCPU・GPUの実行時間が、View Informationをオンにするとドローコールや頂点数等が表示されます。

Godot 4で実行時にパフォーマンス情報を表示するDebug Menuアドオンが公開されています。Asset Store(以前のバージョンではAssetLib)からインストールしてProject Settings > Pluginsで有効にします。F3キーで表示します。

GPUのプロファイリングについて、Windowsエクスポートした実行ファイルについてRenderDocが使用できるのを確認しています。RenderDocのLaunch ApplicationタブのExecutable Pathに実行ファイルのパスを入力してLaunchします。Vulkanの設定をする必要があります。Event Browserの時計のアイコンで実行時間が表示されます。

Godot 3でGLES 2だと下記エラーが出ます。GLES 3、またはGodot 4のVulkanだとRenderDocが使用できます。

OpenGL. Context not created via CreateContextAttribs. Capturing disabled.
Only OpenGL 3.2+ contexts are supported.

PCKファイルについて

.pckファイルはGodot独自のパッケージ形式で、Godotのプロジェクトをエクスポートするとデータファイルとして作成されます。

注意として.pckファイルはgodotdecやGodot RE Toolsを使うと中を見ることができます。

Godot 4.3以降ではGDScriptはデフォルトでバイナリトークン化されて.gdcファイルに変換され、最低限の難読化がされます。依然逆コンパイルはできてしまうので注意が必要です(.NETなども同様ですが)。

.pckファイル自体を暗号化することもできますが(ExportのEncryptionタブを確認)、Godotのテンプレートを自分でコンパイルして実行ファイルに暗号鍵を含める必要があります。こちらも鍵が見つかれば解除できてしまうので注意が必要です(基本的にソフトウェアの解析を完全に防ぐ方法は存在しないと思います)。

.pckファイルを実行時に読み込むこともできます(ProjectSettings.load_resource_pack()を使用)。プロジェクトのファイルを置き換えることができるので、DLCやパッチの配布に使用できます。

Godotで使用できる3Dアセットは?

2026年5月に公式のGodot Asset Storeが公開されました(Introducing the Godot Asset Store)。Godot 4.7ではエディタに統合されていて、Asset Storeタブからアドオンなどを検索・インストールできます。レビューや評価、アセットごとの複数バージョンの配布、変更履歴などに対応しています。2026年9月現在、アセットの販売にはまだ対応していません(対応予定とのことです)。

とはいえ、特に3Dゲームを制作する場合、Godot向けのアセットだけで揃えるのはまだ難しいと思います。入手場所として以下が考えられます。

Fab

Unreal Engine Marketplaceの後継となるEpic Games運営のFabのアセットを使用することが考えられます。

Unity Asset Store

Unity Asset Storeのアセットは基本的に他のゲームエンジンでも使用できます。以下が根拠になります。

  • (日本語)アセットストアのEULAの解釈を変更しました – Unity公式 Asset Portal

    2020年4月13日13時より、Unity AssetStoreの利用規約と使用許諾(EULA)の解釈を現在の需要に合わせて以下の通り変更しました。 アセットの全部または一部は、Unityに限らずゲームエンジンやオーサリングソフトウェアなどに取り込んで、ゲームもしくはインタラクティブメディア、ノンインタラクティブメディアへ組み込むためにお使いいただけます。

  • (英語)Can I download an Asset without opening the Unity Editor? Is it possible to use Unity Assets within another game engine? – Unity

    > I would like to use an Asset in a different game engine
    We cannot provide assistance on how to get Assets working in other engines.

  • (英語)Can free Unity Store assets be used in non-Unity games?

    You can also use free assets in your game for commercial use. Using Unity assets is fine, though please be aware that many developers use Unity to create their games and most are aware of the assets we provide. For an original game they might not be the best fit.

    (訳)また、商用利用であれば、フリーアセットをゲーム内で使用することも可能です。Unityのアセットを使用しても構いませんが、多くの開発者がUnityを使用してゲームを制作しており、ほとんどの開発者は当社が提供するアセットを知っていることをご了承ください。オリジナルのゲームに使用するには、最適ではないかもしれません。

特別なライセンスがあるアセットに注意してください。また、アセットのダウンロードにはUnityのインストールが必要です。

Kenney

Kenney氏がCC0のゲーム用アセットを大量に制作しています。

OpenGameArt.org

Godotのエンジンビルドをするには

Godotのエンジンの設定を変えてビルドする必要がある場合があります。使用しないモジュールを無効にしてサイズを減らしたり、PCKの暗号鍵を埋め込んだテンプレートを作ったりできます。

下記ページに説明があります。

Windowsでは、C++ビルドができるVisual Studio 2019以降(2022推奨)とPython 3.9以上が必要です。ビルドシステムのSCons(4.4以上推奨)をインストールし、GitHubからクローンしたソースをビルドします。

$ git clone https://github.com/godotengine/godot.git
$ python -m pip install scons
$ scons platform=windows

binフォルダに実行ファイル(godot.windows.editor.x86_64.exe)ができます。Godot 3の頃は、うちのRyzen 9 5950X機で3分ほどでした。また、

$ scons platform=windows vsproj=yes

でVisual Studioのソリューションを作成して、Visual Studio上でデバッグ実行できます。

Godot 4では、何をビルドするかをtargetで指定します。

  • target=editor: エディタ(デフォルト)
  • target=template_debug: デバッグ用のエクスポートテンプレート
  • target=template_release: リリース用のエクスポートテンプレート

その他、詳細や各プラットフォームのビルドは公式ドキュメントを参照してください。

Tips

コーディングスタイルについて

Project organizationのページにプロジェクトの構造のガイドラインがあります。

  • フォルダやファイル名はsnake_caseで(C#スクリプトを除く)。models、characters、levelsといった名前のフォルダが例示されています。
  • ノード名はPascalCase

エディタのスクロール速度について

マウスホイールでのエディタのスクロール速度について、Editor SettingsのText Exitor > BehaviourにV Scroll Speedという設定がありますが、現状この設定が効かず3行ずつにハードコードされているようです。Altキーを押しながらホイールを回すと15行ずつになります。

再生中にシーンツリーを見るには

SceneドックでLocalタブからRemoteタブに切り替えます。Editor Settings > DebuggerのAuto Switch To Remote Scene Treeをオンにすると自動的にRemoteになります。

ユーザーの入力を処理するには

Project > Project Settingsを開いて、上のInput MapタブでActionとそれに対応するキーボードやジョイスティック等の操作を登録します。GDScriptで以下の要領で入力を処理できます。

if Input.is_action_pressed("{アクション名}"):

シーンの環境を設定するには

環境光・スカイボックス・ポストエフェクトを使用するには、シーンにWorldEnvironmentノードを追加します。ビューポート左上のPerspectiveメニューのView Environmentをオンにするとビューポートの表示に反映されます。

スカイボックスを設定するには、下記の要領でHDR画像等を設定します。

WorldEnvironmentノードの設定は、Camera3DノードのEnvironmentを設定すると上書きできます。

日本語を表示するには

Godot 4では、フォントに含まれない文字はOSのシステムフォントで表示されるので、何も設定しなくても日本語が表示されます(Androidなど一部のプラットフォームでは制限があります)。

見た目をそろえたい場合や、どの環境でも同じフォントで表示したい場合は、フォントファイル(.ttf/.otf/.woff/.woff2)をプロジェクトに置きます。インポートされたFontFileを、Project Settings > GUI > Theme > Custom Fontに設定すると、プロジェクト全体のデフォルトになります。個別のコントロールでは、InspectorのTheme Overrides > Fontsで設定します。

OSにインストールされているフォントを名前で指定するSystemFontもあります(フォントファイルを同梱しないのでサイズが増えません)。どのフォントもFallbacksにフォントを追加して、足りない文字を補えます(Using Fonts)。

動画を再生するには

VideoStreamPlayerノードでOgg Theora(.ogv)の動画を再生できます(Playing videos)。エンジン本体が対応しているのはOgg Theoraだけです。WebMはGodot 4.0で削除されました。H.264やH.265は特許の権利関係が複雑なため、本体には含められないとのことです。MP4などの動画は、ffmpegで.ogvに変換して使います。

マルチプレイヤーの動作チェックについて

(Godot 4)Debug > Run Multiple Instancesを変更すると最大4つまでのインスタンスを同時に実行できます。

ゲームをポーズしたい

Sceneの階層の特定のNodeのみ動作を停止させることができます(Pausing games)。また、InspectorでPauseのModeを設定すると、親のNodeをポーズしても止まらないようにできます。

プロジェクトを整理するには

Project > Tools > Orphan Resource Explorerでリソースの参照数が確認できるので利用できそう?

CIを構築したい

CLIでコマンドラインからエクスポート等ができます。

mkdir builds
godot project.godot --export "Windows Desktop" builds/game.exe

指定したproject.godotのプロジェクトを開き、“Windows Desktop"プリセットでエクスポートします。出力先にフォルダがない場合は作っておく必要があります。

ゲームの動画を収録するには

Movie Makerモードを使うと、ゲームの映像と音声をフレーム単位でファイルに書き出せます。実時間に縛られないので、重いシーンでもコマ落ちせず、軽ければ実時間より速く収録できます。プレビュー動画やトレーラーの素材づくりに便利です。

エディタでは、右上の再生ボタンの横にあるMovie Makerボタン(フィルムのアイコン)をオンにしてから再生します。出力先はProject Settings > Editor > Movie Writerで設定します。コマンドラインでは--write-movieで指定します。

Godot_v4.7.2-stable_win64_console.exe --path <プロジェクト> --fixed-fps 30 --write-movie movie.avi

拡張子が.aviならMotion JPEG+PCM音声、.pngなら連番画像+WAVで出力されます。AVIはファイルが大きいので、共有するときはffmpegでMP4に変換します。

ffmpeg -i movie.avi -c:v libx264 -crf 20 -pix_fmt yuv420p -c:a aac -b:a 192k -movflags +faststart movie.mp4

収録はゲームが終了するまで続きます。区切りのよいところでget_tree().quit()を呼ぶか、--quit-after <フレーム数>を指定します。

.tscnをテキストで編集するときは

AIエージェントなどで.tscnを直接書くときにハマりやすい点です。

スクリプトの@export var stage: Node3DのようなNode型のプロパティに値を入れるときは、.tscnではノードパスとして保存されます。そのため、ノードのヘッダーにnode_pathsを書いて、どのプロパティがノードパスかを宣言する必要があります。

[node name="Calibration" type="Node" parent="." node_paths=PackedStringArray("stage", "camera")]
script = ExtResource("3_calib")
stage = NodePath("../Stage")
camera = NodePath("../XROrigin3D/XRCamera3D")

node_pathsがないと、エラーも出ずに実行時にnullになります。エディタのインスペクターで設定すれば自動で書かれます。

InspectorのTransformがいつも折りたたまれている

Editor SettingsのInterface > Inspector > Disable Foldingをオンにすると常時展開になります。

テクスチャのインポート設定について

3Dで使うテクスチャは、インポート設定のCompress > ModeをVRAM Compressedにすると、GPUの圧縮フォーマットに変換されます。変換後のファイルは.godot/imported/に.ctexとして保存されます(Importing images)。

プラットフォームごとに使われるフォーマットは以下の通りです。

  • デスクトップ: S3TC(BC1/BC3。UnityのDXT1/DXT5に相当)。High QualityをオンにするとBPTC(BC7、HDRはBC6H)
  • モバイル・Web: ETC2。High QualityをオンにするとASTC

Androidにエクスポートするには、Project SettingsのRendering > Textures > VRAM Compression > Import ETC2 ASTCがオンである必要があります(「Android」参照)。

また、GPUでテクスチャを高速に圧縮するBetsyがGodot 4.4で導入されました(当初はHigh QualityのHDR画像が対象で、順次広げていく方針とのことです)。

カメラアングルを簡単に調整するには

ビューポートでマウスの右ボタンを押しながらWASD/QEキーで視点を調整し、Cameraノードを選択して、ビューポート左上のPerspectiveメニューからAlign Transform with Viewを実行(またはCtrl+Alt+Mキー)すると簡単です。

起動時のGodotロゴを非表示にするには

Project Settings > Application > Boot Splash > Show Imageをオフにします。

プラットフォームの判定をするには

OS.has_feature("Android")

Export(エクスポート)ウィンドウでターゲットごとに有効になっているFeature(機能)を確認できます。

エクスポートサイズを小さくする方法

Export PCK/Zipでzipファイルとして出力して、含まれているファイルおよびファイルサイズを確認すると便利です。

また、エクスポート設定のResourcesタブで使用するシーンだけ選択すると、選択したシーンで使用されているアセットのみパッケージされ省サイズになります。

ウィンドウの背景を透過させるには

Project Settings(Advanced Settingsをオン)で以下を設定します。

  • Display > Window > Per Pixel Transparency > Allowedをオン
  • Display > Window > Size > Transparentをオン

そのうえで、ルートのビューポートの背景を透明にします。

get_tree().get_root().transparent_bg = true

さらにDisplay > Window > Size > Borderlessをオンにすると、ウィンドウ枠を消せます。

コンソールウィンドウについて

Windows版のGodot 4には、通常の.exeとコンソール付きの_console.exeの2つが入っています。通常の.exeではコンソールウィンドウは表示されません。ログをコンソールで見たいときは_console.exeで起動します。Windowsにエクスポートしたゲームにも、同じようにコンソール付きの実行ファイルを付けられます(エクスポート設定のDebug > Export Console Wrapper)。

macOSではデフォルトでコンソールウィンドウが表示されません。表示するには、GodotをShow Package Contentsで開いてContents/MacOS/Godotを実行します。

Unityのあれはどこにあるの?

Godot 3.1のドキュメントにはUnityからの移行ガイドがありましたが、Godot 4のドキュメントにはありません(更新の提案は見送られています)。以下にGodot 4での対応をメモします。

  • GameObjectに相当するものはNodeです。
  • Updateに相当するのが_process、FixedUpdateに相当するのが_physics_processです。Project Settings > Physics > CommonのPhysics Ticks Per Secondで物理シミュレーションのフレームレートを設定できます。描画を補間してなめらかにするには、Project Settings > Physics > Common > Physics Interpolationをオンにします(Physics Interpolation)。Godot 4では2Dが4.3で、3Dが4.4で対応しました。
  • UnityのPrefabの代わりに、GodotではSceneの中にSceneを追加できます。Sceneドックで右クリック > Instantiate Child Sceneです。子シーンのインスタンスに変更を加えるには、子シーンを右クリックしてEditable Childrenをオンにします。ノードを右クリックしてSave Branch as Sceneでツリーからシーンを作れます(Unityのプレハブ化に相当)。
  • Unityの[SerializeField]に相当するものは@export(GDScript)または[Export](C#)になります。
  • Tweenが標準で組み込まれています(Godot 4.0でTweenを試してみる)。
  • DontDestroyOnLoadの代わりに、Project SettingsのAutoLoadタブにSceneまたはスクリプトを登録すると、どのSceneからでもアクセスできます(Singletons)。
  • VR機能がエンジン本体に組み込まれています。UnityのXR Interaction Toolkitに相当するGodot XR Toolsアドオンがあります。
  • Unityのネイティブプラグインに相当するGDExtensionがあります。
  • Terrainはありませんが、HeightMap terrain pluginというアドオンがあります(Godot 3系のみ)。

その他のTips

  • ノード作成ダイアログのFavoritesのノードはプロジェクトのフォルダに保存されます。.godot/editor/favorites.Nodeファイルです。
  • Unityではフォルダ名の後ろに~(チルダ)をつけるとUnityに認識されなくなりますが、Godotではフォルダに.gdignoreを配置すると無視されます。

便利なショートカットキー

  • F5(Macではcmd+B)でメインシーンを、F6(Macではcmd+R)で現在のシーンを再生します。F8(Macではcmd+.)で停止します。
  • Fキーで選択しているオブジェクトにフォーカスします。ビューポートがSelect Modeになっていて、マウスカーソルがビューポートの中にある必要があります。
  • Page Downでオブジェクトを接地させられます(Unreal EngineのEndキーに相当)。
  • Ctrl+F1/F2/F3で2D・3D・Script画面を切り替えます。

GDScriptメモ

connectでエラーが出る

Godot 4でSignalsのconnectメソッドが文字列リテラルを使用しないように変更されています。下記の要領で修正します。

(Godot 3)
$Button.connect("pressed", self, "_on_button_pressed")
(Godot 4)
$Button.pressed.connect(_on_button_pressed)

現在時刻を取得するには

Timeシングルトンに時刻関連のAPIがあります。

var time = Time.get_datetime_dict_from_system()
print(time)
print("%04d/%02d/%02d" % [time.year, time.month, time.day])
{ "year": 2022, "month": 11, "day": 15, "weekday": 2, "hour": 1, "minute": 57, "second": 56, "dst": false }
2022/11/15

以下φ(..)メモメモ中