Godotで任意のC++ライブラリを使う方法
Using any C++ library in Godot

GodotはGDScriptで手軽にゲームを作れるが、ネイティブのC++ライブラリを呼ぶにはGDExtensionとgodot-cppが必要になる。本記事では、ConanCenterで利用可能になったgodot-cpp 10を使い、flecsというECSライブラリを組み込んで10万個のパーティクルをシミュレートする実例を紹介。依存関係の管理からビルド、Godotノードとしての登録までを解説する。
GDScriptはネイティブコードを呼び出せないが、GodotはGDExtensionを通じてそれをロードでき、公式のC++バインディングであるgodot-cppを使えば、そのコードを通常のエンジンクラスとして公開できる。
HNでの議論
52- valorzard
Rustを知っているなら、GDExtension向けのGodot Rustバインディングも本当に優秀で、Godot内で任意のRustライブラリを使える(本気でやるならtokioやasync Rustも含めて)
- voodooEntity
最近GodotでRTSを作っていて、GDScriptのパフォーマンス的に自分が扱える限界にぶつかった。
それで重いロジックの多くをC++シミュレーションに移し始めた。確かに面倒だけど、結果はその価値を証明してくれている。
基本的に、メニューやダイアログみたいなものにはGodotを使いつつ、本当に重い処理はC++シミュレーションで動かせる。
- MeteorMarc
それで、パフォーマンス上の理由で不必要にC++の面倒に飛び込む前に、自分のGDScriptやC#コードのクリティカルな部分を見つけるには、どんなプロファイリング支援が使えるの?この記事は機能的な理由について扱っていて、それはそれでいいんだけど。
- Asmod4n
私はc++26のリフレクションを使って似たようなものを作っている。そうすればどの言語でも、可能な限りライフタイムとメモリ安全な方法で、数行のボイラープレートだけでC++ライブラリを使える。オブジェクトの安全なライフタイムを推論できない場合には、その関数を安全に使う方法をライブラリに伝える小さな.tomlファイルを用意している。
- zerr
> // Copy the position of every entity into the MultiMesh buffer
つまり、world(C++とGodot)の境界のせいでゼロコピーは不可能なのか?