Game Framework是LightSpeed的子系统,用来提供基本的游戏模拟和行为,包括一个数据驱动的实体系统和很多相关的services。除了提供模拟功能之外,Game Framework还包含了迭代开发的机制,存在与Toolbench和众多的运行时数据格式之间。
Game Framework构建在Foundation子系统之上,不依赖于任何Core Runtime子系统的功能。Core Runtime通过游戏模块以插件形式和Game Framework关联起来。Game Framework通过底层的Foundation子系统,实现了很多常见的游戏功能,比如Game World initialization.
在这里插说一下Game World initialization,它基本包括了以下service的初始化:
(1) Config Manager 设置管理
(2) Message Service 消息
(3) Entity Manager 实体管理
(4) Scheduler 调度
(5) Assert Locator Service 实体定位
(6) Flat Model Manager
(7) Entity Loader Service 实体载入
(8) Light Service 光
(9) Camera Service 相机
(10) Render Service 渲染器
(11) Animation Service 动画
(12) SceneGraph Service 场景图
(13) Input Service 输入
(14) Pick Service 拾取
当这些service都初始化之后,就轮到游戏的service了,会调用一个循环的事件方法OnInit(),通常包括等待所需要的service完成初始化,订阅需要的消息,游戏Block文件(通过Toolbench生成的)的载入,还有其他的一些需要在游戏开始前发生的调用。
Game Framework的核心是数据驱动的实体系系统(Entity System),Entity包括在实体模型(Entity Models)中描述的Property和Behavior。通过Scheduler来管理模拟。在运行的时候创建Entity,Scheduler通过各种事件来出发Entity上的Behavior,从而使得Entity之间可以交互。此外还有一个扩展的内置方法集,可以从脚本或者C++写成的实体行为方法里访问,可以实现Entity与各种service的交互。
Game Framework编程包括以下部分:
(1)Scripting 脚本
(2)Core Runtime Services 核心运行时库服务
(3)Behaviors 行为
(4)Buit-ins 内置功能(主要提供给脚本使用)
(5)Entities 实体
(6)Entity Properties 实体属性
(7)Entity interaction 实体交互
(8)Game Initialization 游戏初始化
(9)Models 实体原型
(10)PhysX System Services 物理服务
(11)Scheduler 调度