游戏引擎架构【笔记一】

这个系列只会记录部分内容,如果对内容感兴趣的可以直接看原书。

1.3 游戏引擎是什么

mod是指,一些特殊游戏玩家组成的小组,或小规模的独立游戏工作室,利用原开发商提供的工具箱修改现有的游戏,从而创作出新内容。

通常,游戏和其引擎之间的分界线是很模糊的。一些引擎有相当清晰的划分,一些则没有尝试把二者分开来。在一款游戏中,渲染代码可能特别“知悉”如何画一只妖兽;在另一款游戏中,渲染引擎可能只提供多用途的材质及着色功能,妖兽可能是完全由数据去定义的。

数据驱动架构或许可以用来分辨一个软件的哪些部分是引擎。哪些部分是游戏。若一个游戏包含硬编码逻辑或游戏规则,或使用特例代码区渲染特定种类的游戏对象,则复用该软件去制作新游戏就会变得困难的不行,因此,这里说的“游戏引擎”指的是可扩展的软件,而且不需要大量修改就能成为多款游戏软件的基础。

我们可以根据每个引擎的可复用性,把引擎放置于一个连续谱上:

游戏引擎架构【笔记一】_第1张图片

1.4 不同游戏类型中的引擎差异

常见的游戏类型和各个类型的技术需求:

第一人称射击(FPS),FPS是开发技术难度极高的游戏类型之一,FPS游戏通常会注重技术:

  • 高效的渲染大型三维虚拟世界
  • 快速反应的摄像机控制及瞄准机制
  • 玩家的虚拟手臂和武器的逼真动画
  • 各式各样的手持武器
  • 宽容的玩家角色运动及碰撞模型,通常使游戏有种“漂浮”的感觉
  • 非玩家角色(如玩家的敌人或者同盟)有逼真的动画及智能
  • 小规模在线多人游戏的能力(通常支持多至同时64位玩家在线),及无处不在的死亡竞赛模式

二元空间分割树(BSP tree)

在计算机科学中,二叉空间分割Binary space partitioning,简称BSP)是一种通过使用超平面作为分割,递归细分空间为两凸集的算法。这个过程将空间细分转化为了树结构,即所谓的二叉空间分割树(BSP树)。

关于BSP树的更多内容可以见本人的另一篇博客:

https://blog.csdn.net/packdge_black/article/details/114681992?spm=1001.2014.3001.5501

平台及其他第三人称游戏

“平台”游戏(platformer)指的是基于人物角色的第三人称游戏,在这类游戏中,主要的机制是在平台之间跳跃。

详细内容见维基百科

https://en.wikipedia.org/wiki/Platform_game

从技术上说,平台游戏可以和第三人称射击/动作/冒险游戏类型一起考虑。

第三人称游戏特别注重的技术如下:

  • 移动平台、梯子、绳子、棚架及其他有趣的运动模式。
  • 用来解密的环境元素。
  • 第三人称的“跟踪摄像机”会一直注视玩家角色,也通常会让玩家用手柄右摇杆或鼠标旋转摄像机。
  • 复杂的摄像机碰撞系统,以保证视点不会穿过背景几何物体或动态的前景物体。

格斗游戏:

格斗游戏(fighting game)通常使两个玩家控制角色在一个擂台互相对打。

https://en.wikipedia.org/wiki/Fighting_game

 

传统格斗游戏注重以下技术:

  • 丰富的格斗动画。
  • 准确的攻击判定。
  • 能侦测复杂按钮及摇杆组合的玩家输入系统。
  • 人群,或相对静态的背景。

由于这些游戏的三维世界比较小,而且摄像机一直位于动作的中心,以往这些游戏只有很少甚至不需要世界细分(world subdivision)或遮挡剔除。同样的,这些游戏不要求使用高阶的三维音频传播模型。

https://zhuanlan.zhihu.com/p/74936111

更尖端的格斗游戏,会把技术提升到另一个层次,这类作品有以下特点:

  • 高清的角色图形,包括仿真的皮肤着色器(shader)。着色器模拟了表面下散射(subsurface scattering,SSS)及冒汗效果。
  • 逼真的角色动画。
  • 基于物理的布料及头发模拟。

竞速游戏:

包括所有以赛道上驾驶车辆或者其他载具为主要任务的游戏。关于这类游戏的子类别,可以见下面的链接:

https://en.wikipedia.org/wiki/Racing_game

竞速游戏通常是非常线性的,这比较像旧时的FPS游戏。但移动速度一般比FPS游戏快许多。因此,这类游戏经常使用非常长的走廊式赛道和环形赛道,有时加入一些可选分支或捷径。

典型竞速游戏有一下技术特性。

  • 使用多种“窍门”去渲染遥远的背景,例如使用二维纸板形式的树木,山岳和山脉。
  • 赛道通常切开成简单的二维区域,成为“分区(sector)"。这些数据结构用来实现渲染优化、可见性判断(visibility determination),帮助非玩家操控车辆的人工智能及路径搜寻,以及解决很多其他技术问题。
  • 第三人称视角摄像机通常追随在车辆背后,第一人称摄像机有时候会置于驾驶舱里。
  • 如果赛道经过天桥底及其他狭窄空间,必须花精力防止摄像机和背景几何物体碰撞。

关于可见性判断(visibility determination)的相关内容可以见本人的另一篇博客:

https://blog.csdn.net/packdge_black/article/details/114876523

实施战略游戏:

实时策略(real-time strategy RTS)游戏类型可以认为是由《沙丘魔堡》奠定的。RTS通常不容许玩家改变视角以观看不同距离的景物。这个限制使开发者能在RTS渲染引擎上采用各种优化。

较老的同类游戏基于栅格(grid-based 或成为基于单元/cell-based)去构建游戏世界,并使用正射投影(即3个轴投影到屏幕时仍然是平行的。和透视投影相反,正射投影不会有远小近大的效果),这两个技巧大大简化了渲染系统。

现在的RTS游戏也会使用透视投影及真三维世界,但这些游戏可能仍使用栅格排列系统,以保证作战单位和背景元素如建筑物能适当的对齐。

RTS游戏的惯用手法如下:

  • 每个作战单位使用相对较低解析度的模型,使游戏能支持同时显示大量单元。
  • 游戏的设计和进行是在高度场地形画面上展开的。
  • 除了部署兵力,游戏通常准许玩家在地形上兴建新的建筑物。
  • 用户互动方式通常为单击及以范围选取单元,再加上包含指令、装备、作战单元种类、建筑种类等的菜单及工具栏。

大型多人在线游戏:

MMOG定义为能同时支持大量玩家,一般来说,这些玩家会在非常大的持久世界里进行游戏(持久世界是指其状态能持续很长一段时间,比特定玩家每次玩的时间长很多)。

除了同时在线人数和持久性外,MMOG的游戏体验和小型的多人游戏是相似的。

MMOG的子类型有MMO角色扮演游戏(MMORPG),MMO实时策略游戏(MMORTS)及MMO第一人称射击游戏。

MMOG的核心是一组非常强大的服务器。这些服务器维护游戏世界的权威状态,管理用户登入/登出,也会提供用户间文字对话或ip电话等服务。

其他游戏类型:

还有很多类型就不详细解释了:

  • 体育游戏
  • 角色扮演游戏
  • 上帝模拟游戏
  • 环境或社会模拟游戏
  • 解密游戏
  • 非电子游戏的移植,如象棋,卡牌游戏
  • 基于网页的游戏
  • 其他更多游戏类型

 

你可能感兴趣的:(游戏,游戏引擎,书籍笔记,游戏引擎架构)