GODOT引擎中的一些概念
Server 一个引擎内部代码组织代码概念,主要用途是用来将引擎内部一些比较独立系统组织起来。 只是一个逻辑概念,代码上没有一个框架,都是每个Server按照自己的情况去创建。 嵌入到引擎也是通过Hardcode(例如在main.cpp初始化某些Server) 一般来说每个Server都是有自己一套线程运行,跟主逻辑线程主要依赖CommandQueue(引擎提供),主线程一般只在需要的跟Server做同步(例如物理、渲染) Server本身是一个Object,可以发送信号到场景对象。 Modules和GDExtensions 两者都是C++扩展引擎的方式,主要区别是Modules是以静态方式编译进引擎,GDExtensions是动态库方式。 Modules功能更全,因为和引擎一起编译,可以访问所有的API。不过官方承诺如果发现GDExtensions实现不了的功能,可以提Ticket,尽量保证和Modules功能相近。 GDExtensions编译更快,Modules修改需要重新编译整个引擎(但是我觉得只要依赖正确,基本多不了多少时间) GDExtensions由于是二进制,可以使用其他语言开发(社区有个Rust的)。大概只需要将引擎的API导出到Rust就可以(不过引擎API的二进制兼容性如何?) iOS不支持动态库加载,GDExtensions似乎无法使用,也没法直接将GDExtensions静态连接到ios。 参考: What is GDExtension? Why does Godot use Servers and RIDs?