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

1.3 游戏引擎是什么

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

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

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

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

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电话等服务。

其他游戏类型:

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

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

游戏引擎架构【笔记一】相关推荐

  1. 《游戏引擎架构》笔记一

    <游戏引擎架构>该系列的博文部分参考下面的博客: http://raytaylorlin.com/categories/%E6%8A%80%E6%9C%AF/%E6%B8%B8%E6%88 ...

  2. 3D游戏引擎架构设计基础 - 学堂在线慕课习题答案

    3D游戏引擎架构设计基础 - 学堂在线慕课习题答案 第一单元 第二单元 上完这门课顺便把课后的习题答案整理出来了 第一单元 问题:关于游戏引擎的正确描述是 答案:设计游戏的独立软件 问题:使用游戏引擎 ...

  3. ITeye4月读书活动之《游戏引擎架构》

     前言: 其实自己是一个安卓手游党,也开发过一些非常小的游戏,所以选择了<游戏引擎架构>这本匹配度比较高的书,探其究竟. 而且确实游戏已经成为我生活中的一部分~    正文: 游戏团队的人 ...

  4. [置顶]《游戏引擎架构》信息总汇

    豆瓣  当当  亚马逊  China-pub  京东  中国图书网  淘宝 PDF样章试读微盘下载  微云下载 中英词汇索引表 本页内容 基本信息 作者:Jason Gregory (杰森.格雷戈瑞) ...

  5. Game Engine Architecture by Jason Gregory:1.6 实时游戏引擎架构

    http://blog.csdn.net/skylmmm/article/details/6230420 一个游戏引擎一般是由工具集和一个运行时组件组成.下面部分我们将首先研究这个运行时组件,然后再看 ...

  6. 读 J. Gregory 之《游戏引擎架构》

    J. Gregory, 叶劲峰. 游戏引擎架构. ISBN: 978-7-121-22288-7 做游戏似乎是很多玩家或者网民心中的执念,但真正愿意去付诸实践的少之又少.而这些少之又少的人当中,相当一 ...

  7. 《游戏引擎架构》笔记十四

    运行时游戏性基础系统 游戏性基础系统的组件 如果可以合理地画出游戏与游戏引擎的分界线,那么游戏性基础系统就是刚刚位于该线之下.理论上,我们可以建立一个游戏性基础系统,其大部分是各个游戏皆通用的.实际上 ...

  8. 《游戏引擎架构》读书笔记(二)

    一.调试技巧及工具 (1)基础调试 a)   日志及追踪,有些bug难以用VS自带的调试来进行单步调试,最好的解决方案就是printf调试法,打印一组数据,观察情况.之前我的做法是单独生成一个控制台, ...

  9. 《游戏引擎架构》读书笔记(四)

    一.游戏性系统 (1)游戏世界一般分为静态元素和动态元素,静态元素和动态元素有时候没有特别明显的分界线.但是静态元素消耗资源较少,可以用笔刷等工具绘制静态元素. (2)游戏世界一般分为各个组块,如关卡 ...

最新文章

  1. DateEdit如果开启Vista模式并显示日期+时间模式
  2. 向Window窗体发送消息,控制程序的运行.
  3. kdj值应用口诀_KDJ买卖绝学!记住这些操作 精准判断quot;顶部和底部quot; 让你远离亏损...
  4. 网络安全-配置dns服务器
  5. dns服务器漏洞修复,KB4569509:DNS 服务器漏洞 CVE-2020-1350 指南
  6. Enlarge GCD CodeForces - 1034A(欧拉筛+最大公约数)
  7. python读取csv某些行_【Python】Python 读取csv的某行或某列数据
  8. Struts2之异常机制
  9. paip.c++ qt 目录遍历以及文件操作
  10. java visualvm 内存泄露_如何使用VisualVM检测Java内存泄漏
  11. python 自然语言处理(四)____词典资源
  12. c++采集声卡输出_基于C++Builder的声卡数据实时采集的实现
  13. 2018年湘潭大学程序设计竞赛 - 题解
  14. C++标准模板(STL)- 算法 (std::adjacent_find)
  15. 大数据应用实践2: IMDG应用场景
  16. 数据资产盘点实践:智能对标
  17. JXTA技术与应用发展
  18. 对比学习系列(四)---BYOL
  19. 天河计算机系统内存条,天河一号竟名不副实?
  20. DSP(TMSF280049C)学习笔记1:软件的安装与新工程的建立

热门文章

  1. 计算机专业与美国留学,美国留学计算机专业是什么?
  2. python 读取多个yaml文件_Python读取yaml文件多层菜单
  3. 广东推进工业机器人进集群 2017年应用机器人将超8万台
  4. 用matlab的ADC和DAC过程,什么是adc和dac
  5. 当前行取上一行或者下一行数据作为独立列
  6. outlook 2016设置邮件格式为纯文本
  7. 如何进行项目风险评估
  8. HTML5基础知识汇总
  9. 五十四、Linux性能优化实战学习笔记|套路篇:系统监控的综合思路
  10. 不是握住了一只蝉,就能拥有整个夏天,也不是得到了谁的偏爱,就能够永远。爱没用,相爱才有用。