概述
不同游戏类型的引擎差异
第一人称射击(FPS,first person shooting)
- 高效地渲染大型三维虚拟世界
- 快速反应的摄像机控制和瞄准机制
- 玩家的虚拟手臂和武器的逼真动画
- 各式各样的手持武器
- 宽容的玩家角色运动级碰撞模型
- 非玩家角色有逼真的动画及智能
- 小规模在线多人游戏的能力,及无处不在的死亡竞赛游戏模式
平台及其他第三人称游戏(Platformer)
- 移动平台,梯子,绳子,棚架及其他有趣的运动模式
- 用来解谜的环境元素
- 第三人称的“跟踪摄像机”会一直注视玩家角色,也通常会让玩家用手柄右摇杆或者鼠标旋转摄像机
- 复杂的摄像机碰撞系统,以保证视点不会穿过背景几何无题或动态的前景物体
格斗游戏(Fighting game)
- 丰富的格斗动画
- 准确的攻击判定
- 能侦测复杂按钮及摇杆的玩家输入系统
- 人群,或相对静态的背景
竞速游戏(Racing game)
- 使用多种“窍门”去渲染遥远的背景,例如二维纸板形式的树木,山脉
- 赛道通常切开成较为简单的二维区域
- 第三人称视觉摄像机通常跟随在车辆背后,第一人称摄像机有时候会放置在驾驶舱里
- 如果赛道经过天桥底及其他狭窄空间,必须花精力防止摄像机和背景几何体碰撞
实时策略游戏(RTS,real-time strategy)
- 每个作战单元使用相对较低解释度的模型,是游戏能支持同时显示大量单元
- 游戏的设计和进行多是在高度场地形画面上展开的
- 除了部署兵力,游戏通常准许玩家在地形上兴建新的建筑物
- 用户互动方式通常为单击以及范围选取单元,再加上包含指令,装备,作战单元种类,建筑种类等的菜单及工具栏
大型多人在线游戏(MMOG,massively multiplayer online game)
- 一组非常强大的服务器
- 这些服务器维护游戏世界的权威状态,管理用户登入登出
其他游戏类型
- 体育游戏
- 角色扮演游戏
- 上帝模拟游戏
- 环境和社会模拟游戏(模拟城市)
- 解谜游戏(俄罗斯方块)
- 非电子游戏移植(象棋,围棋,卡牌游戏)
游戏引擎概观
以下为整个游戏引擎的架构图。
第三方软件开发包
- 数据结构相关
- STL:C++ 标准模板库
- STLport:可移植的经过优化的 STL 实现
- Boost:非常强大的数据结构和算法库
- Loki:泛型编程模板库
- 图形
- OpenGL:跨平台三维图形 SDK
- DirectX:微软的三维图形 SDK
- libgcm:索尼提供给 PS 的图形硬件低阶直接接口,在 PS 上比 OpenGL 更为高效
- 碰撞和物理
- Havok:工业级物理及碰撞引擎
- PhysX:也是一个工业级的物理及碰撞引擎
- Open Dynamic Engine(ODE):开源物理及碰撞引擎包
- 角色动画
- Granny:包含健壮的三维模型导出器,也包括负责读取及操作导出模型和动画数据的运行时库,以及强大的运行时动画系统
- Havok Animation:物理和动画之间的界限变得模糊,所以 Havok 也出了一个动画 SDK
- Edge:为 PS 而设的动画引擎,以及几何处理引擎
- 人工智能
- Kynapse:提供低阶 AI 构建,比如路径搜寻,静态和动态物体回避,空间内的脆弱点
- 生物力学角色模型
- Endorphin 和 Euphoria:利用了真实的人类运动和高阶生物力学模型,去产生角色动作
工具及资产管道
游戏引擎都需要读取大量数据,数据形式包括游戏资产,配置文件,脚本等。下图指明数据如何从制作原始资产的工具一直流到游戏引擎本身。
浅灰色箭头表明各类资源会参考或应用到其他资源
所有源数据皆由美术人员使用数字内容创作(DCC,digital content creation)应用软件制作。但 DCC 应用软件所使用的数据格式,鲜有适合直接用于游戏的,所以需要资产调节管道(asset conditioning pipeline),来对数据格式进行处理。