概述

不同游戏类型的引擎差异

第一人称射击(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),来对数据格式进行处理。