GodotEngine4 用の自作アドオンを開発するために、利用者が res://adddons フォルダなどに配置するアドオン部分 (ScUtil) と、それを開発するプロジェクト部分 (ScUtilDev) の2つの Git リポジトリを作成し、それらを Git サブモジュールで連携してバージョン管理する構成を作成します。
※基本的に Git 操作は、シェル拡張でエクスプローラ上で操作できる Git クライアントソフト TortoiseGit を用い、一部はコマンドプロンプトで直接 Git コマンドを使用します。
※ Git-2.49.0 (64 bit) を使用します。
※ TortoiseGit-2.17.0.2-64bit を使用します。


パート5では、今まで複数の Git リポジトリを連携して構築してきた GodotEngine4 プロジェクトフォルダに、ユニットテストの公式アドオン Gut を公式ガイドに沿ってサブモジュールとして配置して、 GodotEngine4 エディタでプロジェクトを開いて、テストが正常に実行されることを確認します。
前回の記事
GitHub の Gut アドオンをサブモジュールとして追加
Git ローカルリポジトリを作成した GodotEngine4 プロジェクトフォルダをエクスプローラで開いて、右クリックで表示されるメニュー「TortoiseGit」→「サブモジュールを追加」を選択して、ユニットテストの公式アドオン Gut を thrid_party/Gut フォルダにサブモジュールとして追加します。
1.png)
Gut の公式ガイドに沿って Git サブモジュールとして GodotEngine4 のプロジェクトフォルダに配置する手順については、以下の記事を参照してください。
https://compota-soft.work/wp1/wp-admin/post.php?post=57148&action=edit
third_party/Gut フォルダに、GodotEngine のユニットテストの公式アドオン Gut をサブモジュールとして追加しました。
2.png)
git.exe submodule add -- "https://github.com/bitwes/Gut.git" "third_party/Gut"
Cloning into 'G:/Dev/Godot4GD/SakuraCrowd/ScLibProject/ScUtilDev/third_party/Gut'...
成功 (4766 ms @ 2025/09/08 9:27:35)
.gitmodules ファイルには、Gut の指定したリポジトリのパス (url) と、追加先のフォルダのパス (path) の情報を持つセクションが追加されました。
[submodule "addons/sc-util"]
path = addons/sc-util
url = G:/Dev/Godot4GD/SakuraCrowd/ScLibProject/remote/sc-util.git
[submodule "third_party/Gut"]
path = third_party/Gut
url = https://github.com/bitwes/Gut.git
third_party フォルダに .gdignore という名前の空のファイルを入れて、GodotEngine4 エディタが読み込まないようにします。
3.png)
これをしないと、 third_party 内の Gut の project ファイル(.godot) を読み込み、以下の警告(別のプロジェクトの検知)が発生します。
editor/editor_file_system.cpp:2828 - Detected another project.godot at res://third_party/Gut. The folder will be ignored.
Godot のバージョンにあった Gut プラグインのバージョンに変更
GitHub の Gut リポジトリからサブモジュールとして追加した Gut は、現行の開発中の状態かもしれません。
開発中の状態でも動作はしますが、 Invalid UID の警告が GodotEngine4 エディタを開くと出力される可能性があります。
TODO: 記事
Gut をサブモジュールとして追加した場合は、Git のタグを指定して、任意のバージョンをチェックアウトします。
Gut サブモジュールを追加したフォルダ(例:third_party/Gut/ )をエクスプローラで開いて、右クリックで表示されるメニュー「TortoiseGit」→「切り替え / チェックアウト」を選択します。
4-1024x611.png)
「切り替え / チェックアウト」ダイアログで、「切り替え先」枠の「タグ」ラジオボタンを選択して、右側のリストから使用するバージョン(例:v9.4.0)を選択します。
※バージョンで GodotEngine の対応バージョンが変わります。 v9.4.0 は GodotEngine 4.3 に対応しています。
5.png)
変更しないで使用するので「オプション」枠の「新しいブランチを作成」のチェックははずして、 OK ボタンを押ます。
6.png)
サブモジュールとして GodotEngine4 プロジェクトのサブフォルダに追加した Gut の状態を指定したバージョン(例:v9.4.0 )に置き換えました。
7.png)
git.exe checkout --end-of-options v9.4.0 --
Note: switching to 'v9.4.0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at ca6cf20 9.4.0 documentation changes (#720)
成功 (719 ms @ 2025/09/08 15:55:06)
シンボリックリンクの作成
Gut のインストールガイドにあるように、プロジェクトの addons/ フォルダに、サブモジュールのアドオンのフォルダ(例:third_party/Gut/addons/gut/) へのディレクトリ用のシンボリックリンク gut を作成します。
third_party フォルダにサブモジュールとして配置した Gut の Gut/addons/gut/ のシンボリックリンク(ディレクトリ)を addons/gut に作成する手順については、以下の記事を参照してください。
https://compota-soft.work/wp1/wp-admin/post.php?post=58338&action=edit
8.png)
G:\Dev\Godot4GD\SakuraCrowd\ScLibProject\ScUtilDev\addons>mklink /d gut ..\third_party\Gut\addons\gut
gut <<===>> ..\third_party\Gut\addons\gut のシンボリック リンクが作成されました
G:\Dev\Godot4GD\SakuraCrowd\ScLibProject\ScUtilDev\addons>dir
ドライブ G のボリューム ラベルは ボリューム です
ボリューム シリアル番号は 9691-AE5E です
G:\Dev\Godot4GD\SakuraCrowd\ScLibProject\ScUtilDev\addons のディレクトリ
2025/09/08 11:26 <DIR> .
2025/09/08 11:26 <DIR> ..
2025/09/08 11:26 <SYMLINKD> gut [..\third_party\Gut\addons\gut]
2025/09/07 16:10 <DIR> sc-util
0 個のファイル 0 バイト
4 個のディレクトリ 2,380,344,578,048 バイトの空き領域
G:\Dev\Godot4GD\SakuraCrowd\ScLibProject\ScUtilDev\addons>
GodotEngine エディタでプロジェクトを開いて動作確認
テストを実行して動作を確認するため、テストコードなどの gd スクリプトファイルの入ったフォルダを追加します。
9.png)
GodotEngine4 を起動して、「プロジェクトマネージャー」ウィンドウの「インポート」ボタンを押して、プロジェクトを選択します。
10-1024x631.png)
「インポートして編集」ボタンを押して、プロジェクトを開きます。
11.png)
起動時に、出力ボトムパネルにエラー・警告は表示されませんでした。
ファイルシステムドックの gut シンボリックリンクも、 thrid_party/Gut/addons/gut ディレクトリとリンクしています。
12-1024x603.png)
メニュー「プロジェクト」→「プロジェクト設定」を選択して表示されるダイアログの「プラグイン」タブを選択して、Gut プラグインの「有効」のチェックボックスにチェックを入れます。
13.png)
以上でユニットテスト用の公式アドオン Gut プラグインが有効になりました。
Gut によるユニットテストの実行
プロジェクト内の、自作アドオンの .gd ファイル内の関数を、プロジェクト内に追加したテストコードでテストして、複数のリポジトリをサブモジュールで連携したプロジェクトが正常に動作することを確認します。
ボトムパネルに追加された GUT タブを選択します。
14-1024x603.png)
Gut ボトムパネルの右側の Include Subdirs の 0 番目に、テストコードを記述した gd ファイルのあるフォルダ(例:res://test/unit )を指定して、チェックボタンを有効にします。
その後、Gut ボトムパネルの左上の Run All ボタンで、全てのテストコードを実行します。
15-1024x587.png)
テストの結果がウィンドウに表示され全てのテストに合格しました。
これにより、プロジェクトのファイル群が正常に配置されていることが確認できました。
16-1024x603.png)
17-1024x618.png)
まとめ
- GodotEngine4 プロジェクトに Gut を Git の サブモジュールとして追加しました。
- サブモジュールとして追加した Gut を、使用するバージョンのタグを指定して TortoiseGit でチェックアウトして、指定したバージョンのリリースの状態に置き換えました。
- GodotEngine4エディタでプロジェクトを開いて、プロジェクト設定で Gut を有効にして、テストを実行して正常に動作することを確認しました。
参照サイト Thank You!
- Git
- Git – git-submodule Documentation
- Git – サブモジュール
- TortoiseGit – Windows Shell Interface to Git
- Godot Engine – 無料でオープンソースの2D・3Dゲームエンジン
- GUT – Godot Unit Testing (Godot 4) – Godot Asset Library
- Install — GUT 9.4.0 documentation
- GitHub Japan | GitHub
- bitwes/Gut: Godot Unit Test. Unit testing tool for Godot Game Engine.
記事一覧 → Compota-Soft-Press
コメント