平台层
概况
平台层是Torque的基础,在最底层运行,对于游戏的系统提供一个跨平台跨架构的接口。这个平台层负责文件和网络IO的详细操作、图形的初始化、设备的初始化和输出,时间事件继承。标准库函数就是通过平台层代理,这样能使游戏代码变得安全。
系统头文件仅仅在平台库中包含。平台层可以分为许多块:暴露给游戏的跨平台接口(engine/platform),和平台定义库(engine/platformWin32,engine/platformMacOS,engine/platformX86UNIX).
事件模型
这个游戏由来自平台库的一系列事件驱动。通过记录平台的事件流,这个游戏的一部分模拟变量能够被得到并用于调试。
用于平台的事件都是Event的子类:
一般事件: TimeEvent、QuitEvent、ConsoleEvent
输入事件: InputEvent、MouseMoveEvent
网络事件: PacketReceiveEvent、ConnectedReceiveEvent、ConnectedAcceptEvent
平台的作用
Torque在平台层有很多强大的库:
1. Memory Manage-位于engine/platform/platformMemory.cc,这个是被设计用来在缓存分配边界、平台越界调试检查、多个断点释放、内存泄露时分配内存。
2. 分析工具-是分级的时间分析,允许游戏的特定部分被计时
3. 线程管理-Torque有一个多用途的类用来创建线程、互斥、信号量
4. 标准库-所有的标准库函数以dFuncname被重定义,例如sprintf变成了dSprintf,strcpy变成了dStrcpy等等。这个dFuncname充分利用Torque的功能设置和保证在所有平台以同样的方式工作,而他们所替代的那些函数做不到这些。
网络功能
这个平台有一个为了开放和关闭网络端口、连接其他主机的公共的接口,,分析网络地址和发送接受网络数据。主持TCP和UDP。
游戏接口
GameInterface类定义在engine/platform/gameInterface.h,是平台和库与游戏通信的接口,也是传输的主要句柄。所有的平台事件通过GameInterface::processEvent()传输,轮流给他们分配虚拟事件句柄。只有一个这个类或子类的实例应该存在这个工程里。一个叫Game points的全局指针指向它。