【Godot】サンプルをビルドする【GDExtension/C++】
GodotのGDExtensionの公式のサンプルをビルドしたい!
概要
この記事では、GGodotのGDExtensionの公式のサンプルをWindows用にビルドして、プロジェクトに認識させるまでの手順を掲載する。
仕様書
環境
- Godot 4.2.2
手順書
「環境構築編」と「ビルド編」と「テスト編」の3部構成です。
環境構築編
最初にGDExtensionの公式のサンプルのビルドに必要な最低限?(MSYS2じゃなくてMinGWのみをインストールした方が小さい)の環境を構築する。
- Python 3.11.5
- scons 4.8.0
- gcc(MSYS2) 9.2.0
Pythonはpyenvとpipenvを使ってインストールした。インストール手順は下記の記事を参照して下さい。他でPythonのプロジェクトを作ってる場合は、pyenvでバージョン管理、pipenvで仮想環境を利用した方が安全かもしれない。
仮想環境がプロジェクトのフォルダーの中に作られるようにするには下記の記事を参照して下さい。
sconsのインストールは一旦後にして、C++のコンパイラーをインストールする。
今回はWindowsでコンパイルするんだけども、LinuxやMacOSでもスムーズにビルドできるようにMinGWのgccを使う。私の都合であれなんだけども別のプロジェクトでMSYS2に含まれてるMinGWのgccを使ってたので、この記事でもこれを使う。
下記よりMSYS2のインストーラーをダウンロードしてCドライブ直下などにインストールする。
gcc.exeがあるC:\msys64\mingw64\binにパスを通す。
githubからgodot-cpp-4.2.2-stable.zipをダウンロードする。今回は4.2.2のバージョン。
今回はgodot-cpp-4.2.2-stable.zipをC:\gdextensions\godot-cpp-godot-4.2.2-stableに展開したとして話を進める。
godot-cpp-4.2.2-stableの中のフォルダーtestがGDExtensionのサンプルとなってる。このフォルダーをコピー&リネームしてC:\gdextensions\extension-testに配置する。
フォルダー構成は下記のような感じ。
gdextensions
extension-test
godot-cpp-godot-4.2.2-stable
extension-testにPythonの仮想環境を作り、パッケージsconsをインストールする。
pip install
pip install scons
プロジェクトのフォルダーの中に.venvというフォルダーが作られて、この中にPythonやパッケージがインストールされる。
sconsは.venv\Scripts\scons.exeにある。
gdextensions\extension-test\SConstructを編集する。5行目のenv = SConscriptの引数を下記のように修正する。
env = SConscript("../godot-cpp-godot-4.2.2-stable/SConstruct")
次の行に下記を追加。ライブラリーを静的にリンクするオプション。
env.Append(
LINKFLAGS=[
"--static",
"-static-libgcc",
"-static-libstdc++",
]
)
ビルド編
Pythonのパッケージsconsを使って、GDExtensionをビルドする。
.venv\Scripts\scons.exe platform=windows use_mingw=yes custom_api_file=C:/gdextensions/godot-cpp-godot-4.2.2-stable/gdextension/extension_api.json dev_build=yes
オプションdev_build=yesを指定するとデバッグでビルドされる。
ビルドに成功されるとgdextensions\extension-test\project\bin\libgdexample.windows.template_debug.x86_64.dllが出力される。
テスト編
同じバージョンのGodotでプロジェクトを作って、プロジェクトのフォルダーの中にフォルダーbinを作り、その中にgdextensions\extension-test\project\bin\libgdexample.windows.template_debug.x86_64.dllとgdextensions\extension-test\project\example.gdextensionをコピーする。
godot_project
bin
libgdexample.windows.template_debug.x86_64.dll
example.gdextension
エディターでプロジェクトを開く。子ノードの追加でExampleとExampleMinが表示されてれば、先ほどビルドしたGDExtensionが認識されてる。
まとめ(感想文)
重い処理を最適化するのにGDExtensionが使えるらしい。
参考文献・引用
下記の記事を参考にさせていただきました。ありがとうございました。
