【Godot】サンプルをビルドする【GDExtension/C++】

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【Godot】サンプルをビルドする【GDExtension/C++】

2024-8-8 | , ,

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はpyenvpipenvを使ってインストールした。インストール手順は下記の記事を参照して下さい。他で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.zipC:\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.dllgdextensions\extension-test\project\example.gdextensionをコピーする。

godot_project
    bin
        libgdexample.windows.template_debug.x86_64.dll
        example.gdextension

エディターでプロジェクトを開く。子ノードの追加でExampleExampleMinが表示されてれば、先ほどビルドしたGDExtensionが認識されてる。

まとめ(感想文)

重い処理を最適化するのにGDExtensionが使えるらしい。

参考文献・引用

下記の記事を参考にさせていただきました。ありがとうございました。