《游戏引擎架构》读书笔记之一:导论
本篇博客为《游戏引擎架构》的第一章读书笔记(未完成)。
典型游戏团队的结构
- 游戏工作室通常由 5 个基本专业领域的人员构成,包括工程师、艺术家、游戏设计师、制作人及其他管理/支持人员
工程师
- 工程师设计并实现软件,使游戏及工具得以运行
- 工程师通常分为两类:运行时程序员和工具程序员
- 运行时程序员:制作引擎和游戏本身
- 工具程序员:制作离线工具,供整个团队使用,以提供团队的工作效率
艺术家
- 艺术家肩负制作游戏中所有视听内容的重任
- 而这些内容的品质能够决定游戏成败
- 艺术家又可以细分为很多种:
- 概念艺术家:通过素描或绘画,让团队了解游戏的预设最终面貌
- 三维建模师:为游戏世界的所有事物制作三维几何模型
- 这类人员通常会再细分为两类:前景建模师和背景建模师
- 纹理艺术家:制作称为纹理的二维影像
- 这些纹理用来贴附于三维模型之上,以增加模型的细节及真实感
- 灯光师:布置游戏世界的静态和动态光源
- 动画师:为游戏中的角色及物体加入动作
- 动画捕捉演员:提供一些原始的动作数据
- 这些数据经由动画师整理后,置于游戏中
- 音效设计师:与工程师紧密合作,制作并混合游戏中的音效及音乐
- 配音演员:为游戏角色配音
- 作曲家:为游戏创作音乐
游戏设计师
- 游戏设计师负责设计玩家体验的互动部分
- 这部分一般称为游戏性
- 不同种类的游戏设计师,从事不同细致程度的工作
- 有些游戏团队会聘请一位或多位作家来创作故事
制作人
- 在不同的工作室里,制作人的角色不尽相同
- 有些制作人负责管理时间表,并同时承担人力资源经理的职责
- 有些制作人主要做资深游戏设计师的工作
- 有些制作人是开发团队和商业部门之间的联系人
其他职员
- 游戏开发团队通常需要一支非常重要的支持团队,包括:
- 工作室的行政管理团队
- 市场策划团队
- 行政人员
- IT 部门
游戏是什么
- “游戏”一词泛指棋类游戏、纸牌游戏、赌场游戏、军事战争游戏、计算机游戏、孩子们一起玩耍的多种游戏
- 本书将聚焦于计算机游戏,其由二维或三维虚拟世界组成,并有少量的玩家
电子游戏作为软实时模拟
- 大部分二维或三维的电子游戏,会被计算机科学家称为软实时互动基于代理的计算机模拟(soft real-time interactive agent-based computer simulations)
- 计算机模拟:大部分电子游戏会用数学方式来为一些真实世界(或想象世界)的子集建模,这些模型只是现实或想象世界的简化或近似版本
- 基于代理:模拟中多个独立的实体(称为代理)
- 三维游戏中的载具、人物角色、火球、豆子等都可以视为代理
- 实时互动:大部分互动电子游戏都是时间性模拟,并实时回应玩家输入
- 时限是所有实时模拟的核心概念
- 在电子游戏中,一个明显的例子是屏幕需要每秒最少更新24次,以制造运动的错觉
- 时限是所有实时模拟的核心概念
- 软实时:即使错过期限也不会造成灾难性后果
- 所有游戏都是软实时系统——如果帧数不足,人类玩家在现实中不会因此而死亡
- 与此相比,硬实时系统错过期限可能会导致操作者损伤甚至死亡
- 模拟真实世界的数学模型可以分为解析式或数值式
- 解析式模型可为其自变量设任何值来求值
- 例如,一个刚体因地心引力以恒定加速度落下,其解析式(闭合式)数学模型可写为: \[ y(t) = \frac 1 2 gt^2 + v_0t + y_0 \]
- 但在实际情况下,大部分数学问题难以求出闭合解,此时就需要基于数值式模型
刚体受地心引力落下的数值式模型可以写为: \[ y(t+ \Delta t) = F(y(t), \dot{y(t)}, \ddot{y(t)},\ldots) \]
在电子游戏中,用户输入是不能预知的,因此我们不能期望可以对整个游戏完全用解析式建模
为实现数值式模拟,通常要不断重复计算,以决定每个离散时步的系统状态
- 解析式模型可为其自变量设任何值来求值
游戏引擎是什么
- 游戏引擎这个术语在20世纪90年代中期形成,可以理解为一系列可以复用的软件组件
- 基于游戏引擎,只要制作新的美术、关卡布局、武器、角色、载具、游戏规则等,对引擎做出很少的修改,就可以开发一款新游戏
- 通常,游戏和其引擎之间的分界线是很模糊的
我们可以根据每个引擎的可复用性,把引擎放置于一个连续谱之上
大部分游戏引擎是针对特定游戏及特定硬件平台所精心制作及微调的
虽然随着技术的发展,不同游戏类型的引擎差异已经缩小,但通用性和最优性仍然需要取舍
不同游戏类型中的引擎差异
- 通常在某种程度上游戏引擎是为某种游戏类型而设的
- 但各种引擎也有很大的重叠部分
- 例如无论是什么类型的三维游戏,都需要某形式的低阶用户输入、某形式的三维网格渲染等
- 下面介绍几个常见的游戏类型,并探讨每个类型的技术需求
第一人称射击(FPS)
- FPS 是开发技术难度极高的游戏类型之一
- 游戏业界的巨大技术创新都来自这种游戏
- FPS 游戏常会注重技术,例如:
- 高效地渲染大型三维虚拟世界
- 其使用地渲染技术几乎总是经过高度优化,并且按特定地场景类型仔细调整过的
- 快速反应地摄像机控制及瞄准机制
- 各种各样地手持武器
- 宽容的玩家角色运动及碰撞模型
- 通常使游戏有种“漂浮”的感觉
- NPC 的逼真动画和人工智能
- 小规模在线多人游戏的能力
- 高效地渲染大型三维虚拟世界
- FPS 的技术需求时业界里最严格,也是最全面的
- 其要让玩家面对一个精细而超现实的世界时感到身临其境
平台游戏及其他第三人称游戏
- 平台游戏是指基于人物角色的第三人称游戏
- 在这类游戏中,主要的游戏机制是在平台之间跳跃
- 从技术需求上说,平台游戏通常可以和第三人称射击/动作/冒险游戏类型一起考虑
- 第三人称游戏和第一人称射击游戏有许多共通之处
- 但第三人称游戏比较看重主角的能力和运动模式
- 此外,这个类型游戏的主角化身需要高度逼真的全身动画
- 在平台游戏中,游戏主角通常是比较卡通而不是很真实或细腻的
- 但第三人称射击通常使用非常真实的人形玩家角色
- 这两种类型都需要非常丰富的行为和动画
- 第三人称游戏特别注重的技术如下:
- 移动平台、梯子、绳子、棚架及其他有趣的运动模式
- 用来解谜的环境元素
- 第三人称的"跟踪摄像机"会一直注视玩家角色
- 通常也会让玩家自己旋转摄像机(右摇杆或鼠标)
- 注意:虽然 PC 上有很多流行的第三人称射击游戏,但平台游戏几乎是游戏主机上独有的(著名的)
- 复杂的摄像机碰撞系统
- 保证视点不会穿过背景几何物体或动态的前景物体
格斗游戏
- 格斗游戏通常是两个玩家控制角色在一个擂台上互相对打
- 传统的格斗游戏注重以下技术:
- 丰富的格斗动画
- 准确的攻击判定
- 能侦测复杂按钮及摇杆组合的玩家输入系统
- 人群,或相对静态的背景
- 由于这些游戏的三维世界较小,且摄像机一直位于动作的中心,以往这些游戏只有很少甚至不需要世界细分或遮挡删除
- 同样,这些游戏不要求使用高阶的三维音频传播模型
- 现代的格斗游戏把技术提升到另一个层次,其有如下特点:
- 高清的角色图形
- 包括仿真的皮肤着色器,着色器模拟了次表面散射及冒汗效果
- 照片般逼真的光影和粒子效果
- 逼真的角色动画
- 基于物理的布料及头发模拟
- 高清的角色图形
- 值得注意的是,一些格斗游戏是在一个大型的环境下而不是受限的竞技场进行的
- 实际上很多人认为这是另一个游戏类比,有时称其为 brawler
- 这种格斗游戏的技术需求比较近似于第三人称射击或策略游戏
竞速游戏
- 竞速游戏包括所有以赛道上驾驶车辆或其他载具为主要任务的游戏
- 这个游戏类型有几个子类别:
- 着重模拟的竞速游戏:力求模仿真实的驾驶体验
- 街机竞速游戏:偏好娱乐性多于真实感
- 街头竞速亚文化:采用可改装汽车
- 卡丁赛车:使用一些平台游戏或电视卡通角色为主角,驾驶怪诞的汽车
- 竞速游戏也不一定是和时间有关的比赛
- 例如一些卡丁车游戏让玩家去射击对手、收集物品,或参与其他计时或不计时的任务
- 竞速游戏通常是非常线性的,类似于旧式的 FPS 游戏
- 但移动速度一般比 FPS 游戏快许多
- 这类游戏经常使用非常长的走廊式赛道和环形赛道
- 有时候加入一些可选分支或捷径
- 竞速游戏把图形的细节集中在载具、赛道及近景
- 卡丁车游戏还需要投放足够的渲染及动画资源到驾驶角色上
- 典型竞速游戏具有如下技术特性:
- 使用多种"窍门"去渲染遥远的背景
- 例如使用二维纸板形式的树木、山岳和山脉
- 赛道通常切开成较简单的二维区域,称为"分区"
- 这些数据结构用来实现渲染优化、可见性判断,帮助非玩家操控车辆的人工智能及路径搜寻,以及解决很多其他技术问题
- 第三人称视角摄像机通常追随在车辆背后,第一人称摄像机有时候会置于驾驶舱里
- 如果赛道经过天桥底及其他狭窄空间,必须花精力防止摄像机和背景几何物体碰撞
- 使用多种"窍门"去渲染遥远的背景