このプロジェクトについて

godot-rust は、オープンソースのゲームエンジンである Godot 4 に Rust 言語を統合するライブラリです。Godot 4 は、生産的で、バッテリー同梱の 2D および 3D エクスペリエンスに焦点を当てています。これは、サードパーティの言語やライブラリをエンジンに統合できる Godot の GDExtension API を使用しています。 哲学 このバインディングは、GDScript の代替として位置付けられており、型安全性、スケーラビリティ、パフォーマンスを重視しています。2 つの言語はプロジェクト内で混在させることができ、カスタム Rust API は GDScript から型安全に呼び出すことができます。表明されている主な目標は、ゲーム開発者に実用的な Rust API を提供することです。繰り返し発生するワークフローはシンプルで、最小限のボイラープレートで済むようにし、API は可能な限り安全で慣用的な Rust になるように設計されています。C++ エンジンとして Godot と相互作用するため、プロジェクトはユーザーエクスペリエンスを向上させるために、型にはまらないアプローチをとることがあります。 README の例で示されている機能 動機付けとなる例では、Sprite2D を継承する Godot クラス Player を登録しています。これは次のことを示しています。 - GodotClass 派生マクロによるクラス宣言。自動初期化と基本クラスを備えています。 - コンポジションによる継承。基本クラスのメソッドへのアクセスを提供します。 - 属性ベースのフィールド初期化。デフォルトのヒットポイント値を含みます。 - OnReady 子ノードアクセス。_ready() が呼び出されたときに自動初期化されます。 - 事前定義されたトレイトによる Godot 仮想メソッドの実装(例:_ready のオーバーライド)。 - 型安全なシグナル接続。ヘルスバーの value_changed シグナルへの接続など。 - #[func] 属性による GDScript に公開されるカスタムメソッド。 - 可変ベースアクセスによる self での Node メソッドの呼び出し。 開発状況 README には、このライブラリは 2023 年以降大幅に進化し、ゲーム、エディタプラグイン、ツール、その他の Godot ベースのアプリケーションなどのプロジェクトで現在使用可能であると記載されています。破壊的な変更が時折導入されることがありますが、通常は軽微で、移行ガイドが付属しています。crates.io のリリースは SemVer に従いますが、master ブランチより遅れています。Godot API の大部分は Rust にマッピングされています。現在の開発焦点は、より自然な Rust エクスペリエンスと、日常のゲーム開発に役立つデザインパターンです。精巧な CI スイートには、clippy、単体テスト、エンジン統合テスト、メモリサニタイザが含まれており、ホットリロードもテストされています。Wasm、Android、iOS の実験的サポートがありますが、ドキュメントとツールはまだ不足しています。 はじめ方とリソース README は、godot-rust ブックを開始するのに最適な場所として指摘しており、API ドキュメントと併用することを推奨しています。実用的な例と小さなゲームは、demo-projects リポジトリで入手できます。ヘルプは、#help チャンネルがある Discord サーバーで提供されています。 ライセンスと貢献 このプロジェクトは、パーミッシブライセンスとコピーレフトライセンスのバランスをとるものとして説明されている Mozilla Public License 2.0 を使用しています。ユーザーはライブラリを商用利用し、独自のコードをクローズドソースに保つことができます。主な条件は、godot-rust 自体への変更を利用可能にしなければならないことです。Contributing.md にポインタがあり、貢献は歓迎されています。