继续讲逻辑框架。首先,你的编辑器在开发过程中必须要有一套可视化的操作,这样用户就可以编写脚本,拖上去运行。比如 UE4 的逻辑是由 Actor 和 Component 组成的。每个 Actor 可以包含多个 Component,Actor 表示一个载体(并且可以执行逻辑),而 Component 代表多个功能类。 Unity3D与UE4大体相似,只不过Unity被称为GameObject和Component,而Unity的GameObject是纯载体而非可编程。
其实这个通用框架大部分情况下就够用了图形引擎和游戏引擎,开发这个通用框架也不是什么难事(假设课题有神级的编程水平和框架设计能力),但这仅仅是个开始... 仅仅拥有这样一个框架是不够的。下面是一些必要功能的列表。
逻辑多线程:在逻辑开发中,对多线程的需求非常普遍,主要分为异步等待多线程和并发计算多线程。前者更容易实现,开一个或多个线程。锁定并稍后在需要时解锁。然而,并行多线程并不容易实现。并行多线程一般需要实现Command Buffer来保证操作密集型逻辑的集中处理,实现SIMD来保证可以处理很多对象。
数据密集型设计:当场景中有10,000个反派在跳舞时,你肯定不想创建10,000个Actor/GameObject,这会直接陷入绝望,因为作为载体UI界面,GameObject过于庞大。需要一些数据密集型的设计,CPU Cache Miss之类的就不用多说了。在这种情况下,就需要制定一套规则,手动分配、管理内存,组织绘图、物理等统一提交和操作。目前Unity的ECS就是这样的工作流。这部分的开发难度可以说是最高的。需要深入到编译底层,在解决需求的同时不断完善。
Godot 在宽松的 MIT 许可下是完全免费和开源的。没有附加条件图形引擎和游戏引擎,没有版税,没有费用。直到最后一行引擎代码,用户的游戏才属于用户。 Godot 的开发完全独立且由社区驱动,允许用户塑造自定义引擎。受开源支持计划奖励[2]
戈多
图形光栅化