gdextension - これは、Rust言語をGodot4にバインドするための初期段階のライブラリです。

()

Created at: 2022-07-07 06:34:36
Language: Rust
License: MPL-2.0

ロゴ.png

GDExtensionのための錆びたバインディング

これは、Rust言語をGodot4にバインドするための初期段階のライブラリです。

Godotはオープンソースのゲームエンジンであり、その次のバージョン4.0ではいくつかの改善がもたらされます。 そのGDExtensionAPIは、サードパーティの言語とライブラリを統合することを可能にします。

:GDNative(Godot 3)用のRustバインディングを探している場合は、gdnativeをチェックアウトしてください。

警告:このライブラリは実験的であり、急速に進化しています。特に、これは次のことを意味します。

  • たくさんのバグ。足場の多くはまだアイロンがけされています。 既知の安全性の問題、未定義の動作の可能性、およびその他の潜在的な問題があります。
  • 欠けている機能がたくさんあります。優先事項は、基本的なインタラクションを機能させることです。 そのため、この段階ではエッジケースAPIは意図的に無視されています。
  • 安定性の保証はありません。APIは頻繁に壊れます(リリースでは、SemVerを真剣に受け止めようとします)。 上記の2つの点を解決することは、現在、安定したAPIよりも重要です。

したがって、GDExtension-Rustでより大きなプロジェクトを構築することはお勧めしません。 ただし、ライブラリは実験の遊び場として機能します。

はじめ

ツールチェーン

使用するにはLLVMをインストールする必要があります、手順については本を参照してください

bindgen

Godot 4のバージョンを見つけるために、ライブラリはPATH内のnameの実行可能ファイル、または実行可能ファイルへのパス(ファイル名を含む)を含む環境変数のいずれかを期待しています。

godot4
GODOT4_BIN

プロジェクトのセットアップ

現在、GitHubバージョンしかありません crates.io、基盤の準備が整ったらリリースが計画されています。
Cargo.tomlに以下を追加します。

[dependencies]
godot = { git = "https://github.com/godot-rust/gdextension", branch = "master" }

最新の変更を取得するには、定期的に(おそらく破損)を実行できます。あなたのファイルをバージョン管理下に置いて、更新を簡単に元に戻すことができるようにします。

cargo update
Cargo.lock

GDExtensionライブラリをGodotに登録するには、Godotプロジェクトフォルダーに対して2つのファイルを作成する必要があります。

  1. まず、GDNativeに相当する追加を行います。

    res://MyExt.gdextension
    .gdnlib

    このセクションはそのままコピーする必要があります。
    このセクションは、動的Rustライブラリのパスと一致するように更新する必要があります。

    [configuration]
    [libraries]

    [configuration]
    entry_symbol = "gdextension_rust_init"
    
    [libraries]
    linux.64 = "res://../rust/target/debug/lib{my_ext}.so"
    windows.64 = "res://../rust/target/debug/{my_ext}.dll"
  2. 2番目のファイルは、最初のファイルへのパスを一覧表示するだけです。

    res://.godot/extension_list.cfg

    res://MyExt.gdextension
    

で実際の例を見ることを強くお勧めしますディレクトリ。 これにより、小さなゲームがGodotと統合され、必要なすべての手順が設定されます。

examples/dodge-the-creeps

APIドキュメントは、を使用してローカルで生成できます。

cargo doc -p godot --no-deps --open

macOSのサポートはまだ進行中であり、現在、Android、iOS、またはWASMのサポートはありません。 この点での貢献は大歓迎です!

ヘルプが必要な場合は、Discordサーバーに参加して、チャンネル!

#help

ライセンス

私たちはMozilla パブリックライセンス 2.0 を使用しています。MPLは、寛容なライセンス(MIT、Apache、Zlib)とコピーレフトライセンス(GPL、LGPL)のバランスを見つけようとします。

ライセンスは多くの自由を提供します:あなたはライブラリを商業的に使用し、あなた自身のコードをクローズドソースに保つことができます、 つまり、ゲーム開発は制限されていません。主な条件は、ゴドットさび自体を変更する場合は、 これらの変更は利用可能です(そしてそれらだけ、周囲のコードはありません)。

貢献

この段階では、ユーザーがライブラリを試したり、小さなプロジェクトで使用したり、発生した問題やバグを報告したりしていただければ幸いです。

より大きな貢献をする予定がある場合は、最初にGitHubの問題でそれらについて話し合うようにしてください。ライブラリは急速に進化しているので、これは 複数の人が同じ作業に取り組んだり、他の部分では機能しない方法で機能を実装したりすることを回避します。また、躊躇しないでください の開発者と話すために不のチャンネル!

#gdext-dev