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。

参考:

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注