4个版本

0.1.3 2024年7月22日
0.1.2 2024年7月15日
0.1.1 2024年6月24日
0.0.0 2021年10月17日

#2351 in 游戏开发

Download history • Rust 包仓库 240/week @ 2024-06-21 • Rust 包仓库 149/week @ 2024-06-28 • Rust 包仓库 234/week @ 2024-07-05 • Rust 包仓库 343/week @ 2024-07-12 • Rust 包仓库 350/week @ 2024-07-19 • Rust 包仓库 139/week @ 2024-07-26 • Rust 包仓库 183/week @ 2024-08-02 • Rust 包仓库 70/week @ 2024-08-09 • Rust 包仓库 129/week @ 2024-08-16 • Rust 包仓库

559 每月下载量
5个crate中使用(通过godot

MPL-2.0 许可证

1.5MB
21K SLoC

logo.png

Godot 4的Rust绑定

网站 | 书籍 | API文档 | Discord | Mastodon | Twitter | 赞助

gdext是一个用于将Rust语言与Godot 4集成的库。

Godot是一个开源游戏引擎,专注于提供高效和包含所有功能的2D和3D体验。
它的GDExtension API允许集成第三方语言和库。

如果您正在寻找Godot 3(GDNative API)的Rust绑定,请查看gdnative

哲学

Rust绑定是GDScript的替代品,重点在于类型安全、可扩展性和性能。

gdext的主要目标是提供实用主义Rust API,供游戏开发者使用。

重复的工作流程应该简单,且需要尽可能少的模板代码。API旨在在可能的情况下提供安全的Rust风格。由于与C++引擎Godot交互,我们有时会采取非常规的方法来提供良好的用户体验。

开发状态

gdext库在2023年和2024年发生了很大变化,现在对于小型项目来说已经处于可用的状态。然而,还有一些需要注意的事项。

[!WARNING]
公共API偶尔会引入破坏性更改。其中大部分是由新功能和现有功能的改进动机所驱动的。有关书籍中的API稳定性,请参阅。

功能:虽然大多数Godot功能都是可用的,但一些不太常用的功能仍然缺失。请参阅#24以获取最新概述。目前对AndroidiOS的支持很少,而Wasm是实验性的。欢迎贡献!

错误:与FFI层相关的多数未定义行为已得到解决,但仍可能偶尔出现安全问题。除此之外,库的新增功能通常并非一开始就功能完善,但随着反馈和测试的进行而变得更加稳健。为了应对错误,我们拥有一个包括clippy、单元测试、引擎集成测试和内存清理器的详细CI套件。甚至热重载也得到了测试!

入门

要使用gdext进行Rust开发,请查看godot-rust书籍。该书仍在建设中,但已经涵盖了Hello World设置以及几个更深入的章节。

要查阅API参考,请查看在线的API文档

此外,我们在examples/dodge-the-creeps目录中提供了一个小型示例游戏。
示例examples/hot-reload演示了在Godot编辑器中的热重载。

如果您需要帮助,请加入我们的Discord服务器并在#help-gdext频道中提问!

许可证

我们使用Mozilla公共许可证2.0。MPL试图在宽松(MIT、Apache、Zlib)和版权(GPL、LGPL)许可证之间找到平衡。

该许可证提供了很多自由:您可以商业使用该库并保持您的代码为闭源,即游戏开发不受限制。主要条件是如果您更改gdext本身,则需要公开这些更改(以及仅这些更改,没有周围代码)。

贡献

欢迎贡献!如果您想帮忙,请参阅Contributing.md以获取一些入门指南。


lib.rs:

godot-rust的内部crate

不要直接依赖于此crate,而是使用godot crate。不提供SemVer或其他保证。

依赖项

~3.5–5.5MB
~134K SLoC