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

Using any C++ library in Godot

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

GodotはGDScriptで手軽にゲームを作れるが、ネイティブのC++ライブラリを呼ぶにはGDExtensionとgodot-cppが必要になる。本記事では、ConanCenterで利用可能になったgodot-cpp 10を使い、flecsというECSライブラリを組み込んで10万個のパーティクルをシミュレートする実例を紹介。依存関係の管理からビルド、Godotノードとしての登録までを解説する。

GDScriptはネイティブコードを呼び出せないが、GodotはGDExtensionを通じてそれをロードでき、公式のC++バインディングであるgodot-cppを使えば、そのコードを通常のエンジンクラスとして公開できる。
  1. valorzard

    Rustを知っているなら、GDExtension向けのGodot Rustバインディングも本当に優秀で、Godot内で任意のRustライブラリを使える(本気でやるならtokioやasync Rustも含めて)

    https://godot-rust.github.io/

  2. voodooEntity

    最近GodotでRTSを作っていて、GDScriptのパフォーマンス的に自分が扱える限界にぶつかった。

    それで重いロジックの多くをC++シミュレーションに移し始めた。確かに面倒だけど、結果はその価値を証明してくれている。

    基本的に、メニューやダイアログみたいなものにはGodotを使いつつ、本当に重い処理はC++シミュレーションで動かせる。

  3. MeteorMarc

    それで、パフォーマンス上の理由で不必要にC++の面倒に飛び込む前に、自分のGDScriptやC#コードのクリティカルな部分を見つけるには、どんなプロファイリング支援が使えるの?この記事は機能的な理由について扱っていて、それはそれでいいんだけど。

  4. Asmod4n

    私はc++26のリフレクションを使って似たようなものを作っている。そうすればどの言語でも、可能な限りライフタイムとメモリ安全な方法で、数行のボイラープレートだけでC++ライブラリを使える。オブジェクトの安全なライフタイムを推論できない場合には、その関数を安全に使う方法をライブラリに伝える小さな.tomlファイルを用意している。

  5. zerr

    > // Copy the position of every entity into the MultiMesh buffer

    つまり、world(C++とGodot)の境界のせいでゼロコピーは不可能なのか?

この日のほかの記事

2026-09-29