gdextension - 这是一个将Rust语言绑定到Godot 4的早期库

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

徽标.png

用于 GDExtension的防锈绑定

这是一个将 Rust 语言绑定到 Godot 4 的早期库。

Godot是一个开源游戏引擎,其即将推出的4.0版本带来了一些改进。它的GDExtensionAPI允许集成第三方语言和库。

注意:如果你正在寻找GDNative(Godot 3)的Rust绑定,请查看gdnative

警告:此库是实验性的,并且正在快速发展。具体而言,这意味着:

  • 很多错误。许多脚手架仍在熨平中。存在已知的安全问题、可能的未定义行为以及其他潜在问题。
  • 很多缺少的功能。优先事项是使基本交互正常工作;因此,在此阶段有意忽略边缘情况 API。
  • 没有稳定性保证。API 会经常中断(对于版本,我们尝试认真对待 SemVer)。解决上述两点目前比稳定的 API 更重要。

所以我们不建议在GDExtension-Rust中构建一个更大的项目。但是,图书馆可以作为实验的游乐场。

开始

工具链

你需要安装 LLVM 才能使用 ,有关说明,请参阅本书

bindgen

要查找 Godot 4 的版本,该库需要 PATH 中名称的可执行文件,或者包含可执行文件路径的环境变量(包括文件名)。

godot4
GODOT4_BIN

项目设置

我们目前只有一个 GitHub 版本,crates.io 一旦基础准备就绪,就计划发布。
在你的 Cargo.toml 中,添加:

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

若要获取最新更改,可以定期运行(可能中断)。将文件置于版本控制之下,以便轻松还原更新。

cargo update
Cargo.lock

若要向 Godot 注册 GDExtension库,需要创建两个相对于 Godot 项目文件夹的文件:

  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. 第二个文件仅列出第一个文件的路径:

    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 Public License 2.0。MPL想在宽松许可证(MIT,Apache,Zlib)和copyleft许可证(GPL,LGPL)之间找到平衡。

许可证提供了很大的自由:你可以在商业上使用该库并保持自己的代码闭源,即游戏开发不受限制。主要条件是,如果你改变 godot-rust 本身,你需要使这些更改可用(并且只有那些,没有周围的代码)。

贡献

在此阶段,如果用户尝试该库,在小型项目中使用它并报告他们遇到的问题和错误,我们将不胜感激。

如果你打算做出更大的贡献,请务必先在 GitHub 问题中讨论它们。由于库正在快速发展,这避免了多个人处理同一件事或以不适用于其他部分的方式实现功能。也不要犹豫,与 Discord 频道中的开发人员交谈!

#gdext-dev