#godot #api-bindings

gdextension-api

Godot GDExtension API;由godot-rust使用

2个不稳定版本

4.2.0-rev.0 2024年6月22日
4.1.3-rev.0 2024年6月22日
0.2.0 2024年8月16日
0.1.0 2024年6月23日
0.0.0 2024年6月8日

#1031 in 游戏开发

Download history 165/week @ 2024-06-07 7/week @ 2024-06-14 390/week @ 2024-06-21 145/week @ 2024-06-28 222/week @ 2024-07-05 246/week @ 2024-07-12 221/week @ 2024-07-19 110/week @ 2024-07-26 174/week @ 2024-08-02 73/week @ 2024-08-09

603 每月下载量
10 个Crate中使用(通过godot-bindings

MPL-2.0 许可证

4.5MB
91K SLoC

logo.png

Rust对Godot 4的绑定

网站 | 书籍 | 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的语法。由于与Godot C++引擎交互,我们有时会采取非传统的做法,以提供良好的用户体验。

开发状态

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

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

贡献

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

无运行时依赖