Python视频微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475 目录* - - - - - - - - - - - - - - - - - - -
古人有语:。
历史也是如此,技术也是如此。通过研究现代引擎的演变历史,我们可以更系统、更详细地了解引擎的技术内部,从而掌握底层原则,挖掘规则,预测技术或行业的未来。在此期间,作者阅读了1000多篇各种论文和文献,提取了数百篇文献,总结为同行。
本节将阐述游戏引擎的定义、功能、模块和基本框架。
游戏通常有许多共同的功能,将这些功能抽象成通用功能的框架。更准确地说,游戏引擎是一系列模块和接口,使游戏开发团队能够专注于产品游戏内容而不关注技术内容。
根据完整性,游戏引擎分为一体式和模块化。一体式是GameMaker、RPGMaker模块化引擎等引擎是指UE、Unity等引擎。本文将重点介绍模块化游戏引擎。
游戏引擎是通用游戏所依赖的功能或模块。游戏引擎是一个由一组不同的工具、实用程序和接口组成的详细信息的框架。简而言之,游戏引擎可以定义为可扩展的软件可以作为许多不同游戏的基础,而无需重大修改。
常见的现代游戏引擎架构模块。
计算机游戏有很多种,主要是第一人称射击游戏 (FPS)、实时策略 (RTS) 角色扮演游戏 (RPG)。所有类型都包括单人游戏(其中使用人工智能模拟其他玩家)或多人游戏(几个玩家可以通过计算机网络在同一个虚拟世界中互动),或者两者兼而有之。不同的游戏引擎更擅长某些类型的游戏创作。比如Unreal Engine更适合户外FPS,Unity更适合轻量级移动游戏等。
大多数现代电脑游戏可分为游戏引擎、游戏逻辑和游戏艺术三部分。游戏引擎是计算机上运行的主要可执行文件。它提供了运行游戏逻辑的环境,以及基本的数学、图形、音频、用户输入和网络功能。脚本、虚拟机字节码或库可用于游戏逻辑 DLL)的形式。游戏逻辑的任务是控制游戏玩法,并使用引擎适当地展示游戏艺术。游戏艺术包括图片(游戏术语中的纹理)、地图(虚拟世界的布局)、模型(生活在世界上的东西 3D 比如玩家、武器或花盆)和声音。
游戏与游戏引擎的关系。
抽象分层的游戏,游戏引擎,计算机。
游戏引擎中常见的分层结构和模块。
模块细节的现代游戏引擎。
许多不同的计算机游戏可以通过改变游戏逻辑和艺术来创建。在某些情况下,如果源代码可用(如Quake 2)游戏引擎本身可以修改。
简而言之,游戏引擎为游戏创建团队提供了游戏开发的各个方面,使游戏开发者需要更少的编程技能来快速有效地创建具有专业质量的虚拟内容。游戏引擎的尺寸、模块化和可移植性的增加以及相关的改进工具被认为是从第一款游戏到今天的总体趋势。
使用游戏引擎有几个目的:
- 灵活性。可以做任何原生。 API 在没有删除功能的情况下功能。
- 生产率。比原生 API 使用方便,代码少,精神负担少。
- 性能。类似于手写原生代码。CPU帧时间。
- 简单。尽可能少地保持接口。
主流商业游戏引擎的一些特点。
利用游戏引擎创建游戏等产品的好处是:
- 更少的代码
- 生产力更高 = 更少的时间!
- 可用性(易用)
- 与设计程序(集成)的兼容性
- 更多的工具,更多的选择
- 插件和库
- 跨平台
当然,游戏引擎并不是万能的,也有很多限制。例如,可能很难制作不同类型的引擎,也可能很难让引擎做任何意想不到的事情。游戏开发者对引擎的弱点将限制游戏的质量和效率。
游戏引擎是游戏或模拟游戏的核心软件,用于描述一组用于开发游戏的代码。在屏幕上看到并与游戏世界或模拟环境互动 所有这些都得到了游戏引擎的支持。它允许抽象和执行普通游戏的细节或模拟任务(如渲染、物理和输入),使开发者能够专注于模拟游戏的各个方面。
典型的游戏引擎组件和类型图。
游戏引擎的设计侧重于灵活性,允许简单地扩展其功能,并且可以很容易地修改平台,以适应某些因素(如内存等)的限制。引擎分为两个不同的部分,称为框架和管理器。框架包含游戏中重复的部分,这意味着它们将有多个例子,以及与主游戏循环执行相关的项目。经理是游戏逻辑所依赖的一个例子。下图显示了组成引擎的不同部分:
游戏引擎最基本的模块必须包括时间更新、场景管理、渲染(图形、绘制)、输入事件等。
拥有上述基本模块后,更先进的游戏引擎也有更复杂的模块,如摄像头、屏幕管理、网络、音频、物理、动画、模型等。
屏幕映射表由应用程序维护,屏幕可以使用事件或传输到不同的屏幕。
渲染模块是引擎的核心功能,一直是游戏引擎的首要任务,也是行业从业者的重点。渲染模块对游戏引擎的成功起着非常重要的作用。渲染模块最简单的功能,如设置相机、绘制形状、设置形状的材料属性和绘制文本,以生成标准图形API通过操作系统或(和)驱动接口GPU发送并执行绘制指令。
高级游戏引擎通常有高级游戏通用模块,如玩家控制、插件系统、编辑器、自动化工具、资产管理等。游戏引擎还负责跨平台图形API、硬件差异等抽象和处理工作。现代游戏引擎往往包含着更加复杂、多样、全面的模块和工具链,可将它们分为低层级、中层级、高层级模块。具体如下:
-
低层级模块
- 数据结构
- 数组、链表、树、图、哈希表
- 算法
- 排序、动态规划、并行循环
- 数学
- 向量、矩阵、四元数
- 几何计算
- 随机数
- 其它数学模块
- 内存管理
- 游戏引擎通常使用自定义内存管理
- 必须避免碎片化
- 分层内存管理
- 寻址
- 垃圾回收
- 显卡内存管理
- 资源和文件IO
- 快速加载
- 寻址
- 解析
- 文件格式
- XML
- 压缩
- 资源打包
- 输入设备
- UI
- 基础控件
- 事件管理
- UI动画
- 性能监测
- 时间是关键资源
- 各种硬件,每个都有自己的时序和性能特征:CPU、图形、音频、IO
- 存在许多复杂的分析器
- 游戏内预算和警告游戏预算和警告
- 游戏内绘图 游戏绘图
- 用于全面分析的调试工具
- 数据结构
-
中层级模块
- 渲染
- 详见图形子系统
- 音频
- 3D 空间化:平移、多普勒、杜比环绕、HRTF(与头部相关的传递函数)
- 管理声音优先级(声音)
- 混响,效果
- MIDI
- 音乐
- 动态音乐
- 流式传输 CD / DVD(多个流)
- 语音
- 文本
- 碰撞检测
- 物理学
- 脚本
- 联网
- 角色动画
- 电影播放
- 渲染
-
高层级系统
- 场景管理
- 用户控制
- 相机
- AI(人工智能)
- 游戏逻辑
- 游戏流程
- 灯光、视觉效果
- 平视显示器
- 前端(用户界面)
-
图形子系统
- 渲染
- 在硬件之上分层
- 常用 API:OpenGL、Direct3D、Vulkan、Metal
- 渲染多边形网格(显示列表)
- 照明
- 漫反射、镜面反射、AO、GI、IBL、PBR
- 图形状态
- 矩阵和视图转换
- 着色器
- 特殊材质
- 皮肤、头发、眼球、二次元
- 场景管理
- 场景图
- 加速结构:KD树、四叉树、八叉树、Portal、BVH等
- 贴花
- AI
- 碰撞
- 剔除
- LOD
- 地形渲染
- 角色换肤
- 粒子引擎
- 效果(天空、水、植被、雾)
- 渲染
-
工具
-
代码开发工具
- 编译器(Visual C++、SN Systems、CodeWarrior、GNU)
- 调试器
- 探查器
- 编辑
- 修订控制(CVS、SourceSafe、SVN)
- 集成开发环境 (IDE)
- C++、汇编、脚本语言
- 图形语言:像素和顶点着色器……
- 设计分析工具
- 文件、标准
-
中间件
- 渲染:RenderWare、NDL、Intrinsic、OGRE、OpenSceneGraph
- 物理引擎:ODE、Havok、PhysX、牛顿
- 数学引擎
- XNA、Bink、FMOD、ScaleForm
-
艺术制作工具
- 3D 建模和动画(Maya、3D Studio)
- 导出导出模块模块
- 资产管理(AlienBrain)
- 绘画(2D 和 3D)(Photoshop、Z-Brush、DeepPaint)
- 扫描(2D、3D)
- 动作捕捉
- 游戏内工具和编辑器
-
音频工具
- 录音
- 作曲(ProTools)
- 音效(原因)
- 空间音频配置工具
- 游戏内工具
-
游戏设计工具
- 游戏内工具
- 关卡布局
- 原型制作工具(Director、Flash)
- 设计工具
- 图形用户界面工具
- CEGUI、NGUI、UMG
开源渲染引擎OGRE集成的CEGUI编辑器一览。
-
对于交互,游戏或模拟中的交互游戏或模拟中的交互非常重要,是整体用户满意度的最重要因素。每个游戏/模拟都有自己的要求,具体取决于类型、支持的控件、交互的响应时间、交互响应的真实程度等。每个应用程序的目标群体在很大程度上定义了交互选项。
只要有可能,用户自定义和修改交互参数的能力是必不可少的、至关重要的,例如鼠标移动速度、鼠标移动速度反转、上下轴反转、多上下轴、多模态控制模态控制等。常见的一种游戏执行流程包含处理窗口消息、调度器执行、分发更改、检测执行状态,如下图所示:
通用的场景和物体的关系如下图所示,每个系统包含一个或多个场景,每个场景包含一个或多个物体:
游戏引擎通常由工具套件和运行时组件组成,下图显示了构成典型3D游戏引擎的所有主要运行时组件。像所有软件系统一样,游戏引擎是分层构建的,通常上层依赖于下层,反之则不然。当较低层依赖较高层时,会引发循环依赖。在任何软件系统中都应避免依赖循环,因为它们会导致系统之间出现不良耦合,使软件无法测试,并抑制代码重用,对于游戏引擎这样的大型系统尤其如此。
游戏引擎中常见模块的细节和特性。通常采用了分层架构,上层依赖下层,反之不然,否则会引起不良的循环依赖。(图摘自《Game Engine Architecture Third Edition》)
游戏引擎的工具套件存在多种创作方式,部分工具可能是独立的软件,部分工具可能构建在运行时引擎使用的一些较低层之上,还有一些工具可能内置在游戏本身中。例如,基于Quake和Unreal的游戏都拥有一个游戏内控制台,允许开发人员在运行游戏时输入调试和配置命令。
上:独立的工具架构;下:共享于游戏之间的框架式工具。
游戏引擎分层示意图。
平台相关的模块。
核心系统相关的模块。
游戏逻辑相关的模块。
游戏引擎中涉及的各类管理器如下图所示:
如何识别游戏引擎的通用部分?看待这个问题的一种方法是专注于将游戏引擎定义为除内容之外的所有内容,每个游戏引擎的通用部分将包括:
- 主循环(或替代结构)
- 处理游戏数据文件或链接到用代码编写的游戏数据的模块
- 处理游戏逻辑的模块,可以但不是必须由数据文件指定
- 从播放器获取输入的模块
- 将输出呈现给播放器的模块
- 辅助模块,例如网络和菜单处理
目前市面上的游戏引擎数量达到惊人的上百个,有些是当前风靡全球的商业引擎,有些是研制出很多3A级游戏的游戏公司内部引擎,有些是用于学习或研究的开源渲染器,有些则是曾经流行但现在已经淡出历史舞台的引擎。下面将阐述部分常见的游戏引擎。
**虚幻引擎(Unreal Engine,UE)**是一款集图形渲染和开发套件的商业引擎,在历经数十年的发展和沉淀,于百擎大战中脱颖而出,成为引领实时渲染领域的全球性的通用商业引擎,广泛应用于游戏、设计、仿真、影视、教育、医学等行业。它出自游戏公司Epic Games,最初由Tim Sweeney负责,从上世纪90年代中期就开始,已经经历了20多年,历经数个大版本迭代。
是一个完整的游戏开发框架,针对当今主流PC、微软的Xbox游戏机和索尼的PlayStation 2。是Epic自制游戏Unreal Championship 2: The Liandri Conflict中令人瞠目结舌的视觉效果背后的高度优化引擎。
是一个完整的游戏开发框架,适用于下一代游戏机和配备DirectX9的PC,提供顶级游戏开发者所需的大量核心技术、内容创建工具和支持基础设施。虽然Unreal Engine 3对Mod制作者开放程度很高,但使用UE3发布和销售游戏的能力仅限于引擎许可。在2009年11月,Epic发布了一个免费版本的UE3 SDK,称为,可供公众使用。
相比之前版本有了很大的改进,使之成为一款风靡全球的游戏开发引擎。虚幻引擎是一套完整的构建游戏、模拟和可视化的集成工具。其特性包含但不限于实时逼真渲染、可视化脚本、实时光线追踪、完善的游戏框架、专业动画和过场、完善的工具链等等。
于2020年5月13日发布预览视频,支持所有现有系统,包括次时代游戏主机PlayStation 5和Xbox Series X/S。该引擎的研发工作在发布前约两年就已开始,且在2021年中期发布了Early Access版本的源码,并计划于2022年全面推出。Unreal Engine 5采用了两大核心技术:
- :允许将高细节摄影源材料导入游戏的先进技术,可用于处理游戏场景中复杂的几何体;
- :用于解决游戏的全局光照细节,并且不依赖于硬件的光线追踪。
从上到下依次是Unreal Engine 1、Unreal Engine 3、Unreal Engine 5的编辑器界面。
早期的Unreal的基于光照图的光照效果。
Unreal Engine作为行业顶级的通用商业游戏引擎,被游戏行业广泛使用,并研制出了许多知名、画面精良的游戏。
用Unreal Engine研发出的游戏截图。从上到下依次是UE3的Batman: Arkham City、UE4的最终幻想7重制版、UE5的黑神话悟空。
有了UE5的Nanite、Lumen等技术的加持,使得实时互动游戏朝着影视级的画质发展,Epic官方放出的黑客帝国演示demo便是最好的例证(下图)。
Epic用UE5研制的黑客帝国互动Demo截图,画质直逼电影,让人无法区分游戏和电影的界限。
除了游戏行业,虚幻引擎还被广泛应用于影视、仿真、设计、广电、科学可视化等领域,并逐渐完善了相配套的工具链和生态社区。
UE用于演习和模拟器中以进行培训。
由Unity Technologies公司研发维护,是一个具有功能强大的编辑器的跨平台游戏引擎,也是最受欢迎的商业引擎之一。在项目中,开发人员可以控制向移动设备、Web浏览器、桌面和控制台的交付。它的功能非常丰富,使用Javascript或C#编写脚本,存在大型社区支持,非常适合跨平台开发。
Unity的第一个版本 (1.0.0)于2005年6月发布,目标是为业余游戏开发者创建一个价格合理的游戏引擎,并为业余游戏开发者提供专业工具,同时“使游戏开发民主化”行业。这三者的灵感来自Apple的Final Cut Pro产品的简单工作流程、简单的资产管道和拖放界面。最初发布时,Unity仅适用于Mac OS X,开发人员只能将他们的作品部署到少数平台。当前版本可以支持Windows 和 Mac OS X等至少十几个目标平台。
Unity早期版本(版本 0.2)的屏幕截图。
早期Unity游戏Gooball截图(2005)。
系列引擎由德国游戏开发商Crytek设计的游戏引擎,已被用在CryTek的所有游戏中。初始版本在孤岛惊魂中使用,并继续更新以支持他们的游戏的新控制台和硬件。
自2004年发布了1代引擎,到目前的版本V,经历了20多年的发展迭代了数个大版本。Ubisoft维护了一个内部的、经过大量修改的原始孤岛惊魂的CryEngine版本,称为Dunia引擎,用于他们后来的孤岛惊魂系列迭代。
CryEngine和其孪生引擎的发展历程。
CryEngine完整的家族树及游戏列表。
CryEngine 1最早于2004年和Far Cry的技术演示一同发布,支持Shader Model 3.0、HDR照明及其它图形特性。游戏代表作有孤岛惊魂、永恒之塔等。
CryEngine的场景和地形编辑器(2004)。
CryEngine的动态光照效果(2004)。
CryEngine的水体、船、人物相互交互的渲染效果和编辑器(2004)。
Far Cry游戏截图。
CryEngine 2于2007年发布,支持HDR照明、实时环境贴图、体积云、动态水体(水面和水下)、景深、运动模糊、动态软阴影、动捕脸部动画、次表面散射、可互动和破坏的环境、可交互植被、绳索物理等特性。代表作有Crysis、Crysis Warhead等。
Crysis游戏截图。
CryEngine 3在2009年发布,相比上一代引擎,引擎支持 DirectX 9、10 和11的开发,新增了许多先进的图形、物理和动画技术以及许多游戏增强功能,比如:实时间接照明的级联光传播体积、软粒子、多核并发、延迟光照、自然光和动态软阴影、雾效果(体积、分层和视距)、SSAO、全能着色器、人眼适应、HDR照明、运动模糊、DOF、次表面散射、高质量水体、动态体积光束和光轴效果、流环境、多核物理引擎、交互和破坏环境、高速纹理渲染等等。代表作有孤岛危机 2等。
CryEngine3的渲染效果。
CryEngine3研制的射击游戏Nexuiz。
CryEngine (3.6–4)于2013年发布,Crytek将CryEngine(从版本 3.6.0 开始)更名为“CryEngine”,并宣布下一个CryEngine将不会以版本号进行宣传,原因是声称这个新引擎与以前的CryEngine版本几乎没有相似之处。
CryEngine渲染出的大片森林。
CryEngine V(5)在2016年3月发布,CryEngine 5.4在2017年9月发布,添加Vulkan API渲染器作为测试版、物理集成和其它功能,包括新的C#模板、资产系统更新和新的抗锯齿技术。在渲染方面,CryEngine V支持以下特性:
- 区域光源
- 基于物理的渲染(PBR)
- 曲面细分
- 高效的抗锯齿
- 实时局部反射
- 基于体素的全局光照(SVOGI)
- 屏幕空间方向遮挡(SSDO)
- 基于图形的光照(IBL)
- 体积雾阴影
- 支持DirectX 12
- 实时动态水体焦散
- 3D HDR镜头光晕
- 运动模糊和景深
- 实时植被
- 逐物体阴影图。
- HDR胶片色调映射
- 粒子特效系统
- 平行视差映射
CryEngine 5.3编辑器。
CryEngine V沙盒编辑器。
CryEngine V的渲染效果图。
Quake家族引擎用于创建许多游戏,拥有延伸到荣誉勋章等现代游戏的血统,并且Quake和Quake II引擎源代码免费提供。
在2004前后,Quake 3使用标准的FPS游戏控制系统:鼠标外观和键盘,四处移动鼠标会改变玩家的视线方向,鼠标按钮通常用于向前行走和射击,键盘上的各种按键用于蹲伏、跳跃、后退、扫射和切换武器,可以通过称为键绑定的过程将键重新映射到不同的游戏内功能。Quake 3是一款面向网络的游戏,使用客户端-服务器(CS)通信模型。
Doom、Quake、Unreal等引擎有个共同特点,那就是擅长FPS类型的游戏。下面是详细的FPS游戏及引擎的发展历程图:
其中ID Tech 3支持摒弃了软光栅渲染,需要一个兼容OpenGL的图形加速器运行。引擎的图形概念紧密围绕“着色器”(如今的材质)系统,其中许多表面的外观在文本文件中定义,称为“着色器脚本”。此外还支持基于样条的曲面、曲线顶点动画、基于子模型的动画分离、体积雾、镜像、入口、动态阴影和基于波形的顶点扰动。
是一款开源的较为成熟的多平台3D图形引擎,支持OpenGL和DirectX渲染,在LGPL许可下用C和C++编写。 它具有基于OO的设计,并支持可加载的代码模块。它还提供了分层场景图、基本物理函数,并内置了2D GUI系统,支持常用小部件和TrueType字体。在2000年时代,它拥有庞大而活跃的开发人员和用户支持社区。 然而,它不是游戏引擎,只处理图形渲染,故而不支持网络或音频,需要引入第三方库。
用ORGE制作的游戏代表作有Runic Games的火炬之光(Torchlight),Torchlight是角色扮演游戏,类似暗黑破坏神的风格和玩法,于2010 年游戏开发者选择奖最佳处女作奖,可通过数字分发在Windows和Mac上使用。
用ORGE研发的单机暗黑类游戏Torchlight的游戏截图。
Torchlight刚发布之时,笔者恰好入职国内某一线游戏公司,被Torchlight炫酷的画面、技能效果和别具一格的玩法深深吸引,那时还没有996,每天一下班就有大把时光沉迷于探索它的暗黑魔法世界。
在2000年时代,国内涌现了很多游戏公司和团队基于ORGE做魔改和二次开发的自研引擎,其中最为成功的案例便是畅游的天龙八部,它是一款改编自金庸古风武侠小说的网络游戏,曾经风靡一时,至今尚在运营。基于OGRE二次开发的引擎或开源库有很多,其中就包含Ogre Golf。后期的ORGE发展的功能有:可扩展框架、多平台、场景管理器、资源管理器、材质、网格、动画、渲染器、特效、着色器、插件等。
由Emergent Game Technologies研发维护,是一款跨平台的3D游戏引擎,游戏代表作有Fallout 3 (Bethesda)、Civilization Revolution (Firaxis)、Warhammer Online (EA Mythic)等。
Gamebryo引擎以前称为NetImmerse。NetImmerse的开发以几个设计目标为指导,其中最重要的是速度,导致研发者在整个引擎中使用了简单的技术,并大量基于场景图数据结构,允许多种性能增强技术,例如剔除对玩家来说是不可见的游戏对象。
其它设计目标是提供与标准图形和音频接口的兼容性,并提供高级编程接口。引擎研发者声称目标已经实现,并分别指出创建引擎的一个发现是“高级编程接口不需要牺牲性能”。引擎提供高级接口很重要,允许开发人员降低开发成本,并且需要针对引擎进行优化不同类型的游戏。
Gamebryo Lightspeed有着较广泛的游戏作品,提供快速的应用程序扩展框架,另外解耦的架构设计使得游戏团队可以方便地扩展。Gamebryo支持处理声音、图形、物理和多人游戏的各种技术和游戏玩法,它的视觉保真度高,曾被用于制作具有广阔景观的游戏以及复杂的面部细节。此外,它还被用于开发美国政府和军队项目,以及消防和手术模拟。
(也称为 Wargaming Sydney)是一家澳大利亚公司,由John De Margheriti于2002年成立,该公司开发和许可用于创建大型多人在线游戏 (MMO) 和虚拟世界的中间件开发工具套件。它是第一家为MMO市场开发此类中间件平台的公司。2007年,BigWorld被英国的Develop杂志公认为行业领导者。2012年8月7日,Wargaming以4500万美元收购了BigWorld中间件公司。
BigWorld Technology提供了游戏开发者构建MMO和在线游戏所需的底层软件架构。3D客户端技术专为Windows PC和浏览器构建,可通过网络API在 iOS、Xbox 360和PlayStation 3上使用。 后端服务器解决方案在Linux下实现,具有Python API脚本环境。该工具套件包括内容创建工具、服务器监控工具和支持。BigWorld Technology还集成了各种第三方插件,例如Umbra(遮挡剔除)、Scaleform(用户界面创建)、Speedtree(树叶)和 Vivox(VOIP)。
游戏代表作主要有:World of Tanks系列、天下系列等。
早期的Torque3D引擎有几个版本,具体描述如下:
- Torque Game Engine 1.0:以及 TGE 1.5 的所有功能,它具有 atlas 地形生成编辑器、Torque GFX 图形层、自定义纹理材料、现代场景图和批处理渲染引擎。
- Torque Game Engine 1.4:这个旧版本的 Torque 仍然具有 3D 工具集、地形引擎、网络引擎和其它功能。基于用于部落 2(Tribes 2)的技术。
- Torque Game Engine 1.5:1.4.2 的重大升级,具有集成的 Torque 照明套件、ShowTool Pro、附加艺术资产等等。
是2010年之前的一款较流行的游戏引擎,后逐渐衰落,淡出人们的视野。
Torque引擎河流编辑器。
Torque地形编辑器。
Torque引擎的渲染效果。
是由Valve Software开发的屡获殊荣的3D游戏引擎,最初在1994年被发行出来,被认为是市场上最先进的游戏引擎之一,支持诸如使用Havok引擎的逼真模拟物理、DirectX 9.0支持(包括高动态范围照明、骨骼动画、声音系统和许多其它功能)等功能。它是成功的知名游戏《半条命 2》所依赖的引擎。
源引擎附带可用于构建游戏模组的Source SDK,该SDK对半条命2游戏的所有者免费提供,并提供了对Valve自己用来创建半条命2系列游戏、失败之日源、反恐精英源和即将推出的游戏(包括传送门和军团要塞 2)的工具的访问权限。它也被包括Ritual the creators在内的许多独立开发者使用。
2010前后的Source引擎应用了快速、可靠和灵活的技术,使用以下许多功能呈现计算或渲染密集型游戏:
- Direct3D(在Windows 95及更高版本、Xbox 和 Xbox 360 上渲染)。
- OpenGL(在Mac OS X和PS3上渲染)。
- HDR(高动态范围),HDR 仅在《半条命》的《失落海岸》中引入,而没有在《半条命 2》单人游戏中引入。
- 具有自动生成唇形同步功能的面部动画系统。
- 想要修改游戏的人的源代码。
- 混合骨骼动画系统。
- 一个模型查看器,用于查看您的角色在不同着色器中的样子。
- 放置凹凸贴图、纹理等的材质系统。
Source引擎的架构和特性。
使用 Source引擎的Vindictus游戏截图。
是EA Digital Illusions CE(DICE)开发的一款内部游戏引擎,专为在Windows、PS系列 、Xbox 系列上的跨平台使用而设计X/S系列。该游戏引擎最初用于战地游戏系列,但后来扩展到其它第一人称射击视频游戏和各种其它类型。Frostbite一直是由Electronic Arts发行的游戏所独有的,迄今为止已经发布了3个大版本,其代表作有战地系列、FIFA系列、极品飞车系列、植物大战僵尸系列、星际大战系列等等游戏。
用Frostbite研制的部分游戏截图。从上到下依次是:Need for Speed Heat、Battlefield 2042、Star Wars: Squadrons。
Frostbite虽然是DICE的内部引擎,不对外发行和授权,但因为Frostbite的研发成员活跃于Siggraph、GDC等国际技术峰会,常在峰会上分享最新的渲染技术和研究成果,而享誉盛名于游戏行业。Frostbite公开分享的技术文章列表可参见:EA Tech Blog。
(直到2009年称为Scimitar,直到2020年称为AnvilNext)是由Ubisoft Montreal创建并用于2007年游戏刺客信条的游戏引擎,包含Scimitar、Anvil、AnvilNext、AnvilNext2.0、Ubisoft Anvil等分支。引擎用于Microsoft Windows、Nintendo Switch、PlayStation 3、PlayStation 4、PlayStation 5、PlayStation Vita、Wii U、Xbox 360、Xbox One、Xbox Series X/S 和 Stadia等平台。专为主机游戏刺客信条打造,后来被用于刺客信条系列、汤姆克兰西的幽灵行动等游戏中。
Ubisoft Anvil图标。
Anvil引擎使用Autodesk的HumanIK中间件在运行时正确定位角色的手和脚以进行攀爬和推动动画。添加的功能包括完整的昼夜循环、增强的绘制距离、与孤岛惊魂 2 相同的植被技术、改进的照明、反射和特殊效果、新的布料系统以及新的AI和NPC导航系统。
AnvilNext增加了对新天气系统的支持,该系统允许特定的天气设置以及在刺客信条IV中看到的自动循环模式。其次,渲染器被重写以提高效率并支持额外的后处理技术,最多可以实时渲染3000个不可播放的角色。最后,AnvilNext 添加了来自Far Cry 4的技术,以支持更加动态的沙盒环境和新的水技术,游戏世界可能会随着时间的推移而变化,具体取决于玩家的行动和进展。更重要的是,从刺客信条Unity 开始的AnvilNext能够以灵活和自动的方式生成结构,同时遵循特定的设计规则和模板,从而减少艺术家和设计师创建错综复杂的城市环境所需的时间和人力。AnvilNext还为不可玩角色提供了改进的AI。
渲染方面,该引擎支持预烘焙的全局照明、反射映射、体积雾、动态天气和动态树叶等等,还有基于物理的渲染 (PBR) ,使材质、对象和表面能够更逼真地查看和反应照明、阴影和阴影。此外,通过添加体积技术,全局照明系统现在更加逼真,以物理为导向的对象反应更加逼真,并且布料在主角、环境和其他角色上的表现更加逼真。世界现在支持更大的陆地、更多的物体、更大的建筑物、无需加载屏幕即可访问的建筑物内部,以及许多其他增强视觉保真度、沉浸感和游戏玩法的附加功能。
代表作有刺客信条系列、For Honor、Tom Clancy’s Rainbow系列等等。
Assassin’s Creed Valhalla的打斗画面截图。
Destiny引擎是游戏公司Bungie研发的游戏引擎,用于开发自家的Destiny系列游戏。
2013年,《命运》的大部分基础工作已经完成,包括传说、游戏引擎以及许多环境和任务。
Destiny1代游戏采用了一种新的游戏引擎,称为Tiger Engine,它基于大多数Halo游戏所使用的引擎,允许全局光照和实时动态光照同时运行。此外,Bungie的目标是Destiny将在Xbox One和PlayStation 4上以1080p原生渲染图形。Bungie的“漏斗”技术创新是Halo配对系统的支柱,允许更好的玩家配对,以便在合作或竞争的多人模式中创造更自然的体验。但是,Bungie的开发人员批评新引擎不适合游戏的在线性质,引擎的资源密集型特性使得即使是对地图的微小更改也需要通宵渲染和编译过程,新地图和任务的开发是“艰苦的”。
此外,Destiny的多线程并行技术运用得炉火纯青,并引入到场景渲染的各个阶段。
Destiny引擎的场景渲染并行化图例。
Destiny 2游戏截图。
RE引擎(全称Reach for the Moon Engine)是由Capcom公司创建的视频游戏引擎。最初是为《生化危机 7:生化危机》设计的,后来被用于该公司的各种游戏,例如Devil May Cry 5和Monster Hunter Rise。该引擎是Capcom之前的引擎MT Framework的继承者。
RE引擎对MT框架进行了各种改进,包括新的抗锯齿和体积照明功能。该引擎还允许开发人员使用摄影测量来创建更高质量的资产,包括比其前身改进的VR支持,使其能够达到避免眩晕所需的高帧率,支持使动画更快的工具,例如模块化装配、运动匹配、程序动画和运动重定向,还具有各种新的物理模拟选项,允许更逼真的碎片。
代表作包含生化危机系列、怪物猎人、鬼与妖精的复活等。
Resident Evil Village游戏场景截图。
由CD Projekt开发和维护,主要针对3A级主机游戏的研发,虽然它的名字鲜有人知,但其研发的游戏却是鼎鼎有名,游戏代表作有巫师系统、赛博朋克2077等。
赛博朋克2077游戏截图。
全称,是由RAGE Technology Group开发的专有游戏引擎,RAGE Technology Group是 Rockstar Games的Rockstar San Diego工作室的一个部门。自2006年第一款游戏Rockstar Games Presents Table Tennis面向Xbox 360和Wii发布以来,Rockstar Games的内部工作室一直在使用该引擎为游戏机和电脑开发先进的开放世界游戏。
早期的RAGE特性有角色动画引擎、物理引擎、处理大型流媒体世界的能力、复杂的 AI 安排、天气效果、快速的网络代码和多种游戏风格,支持DirectX 11和个人计算机的立体3D渲染,以及更强大的绘制距离、纹理过滤以及改进的阴影映射和曲面细分质量。
随着2018年Red Dead Redemption 2的发布,RAGE将进一步完善,支持基于物理的渲染、体积云和雾值、预先计算的全局照明以及Windows版本中的Vulkan渲染器,还可以创建先进的 AI 以及增强的游戏物理和动画,HDR渲染以及深度学习超级采样 (DLSS) 的支持。
游戏代表作有荒野大镖客(Red Dead Redemption)系列、侠盗猎车手(Grand Theft Auto)系列等。
Red Dead Redemption 2游戏截图。
是Sony的一款仅许可免费使用的游戏引擎,兼容PlayStation系列平台、 Windows(OpenGL、DirectX 11)、Android和iOS。
PhyreEngine以可安装包的形式独家分发给Sony被许可人,其中包括完整的源代码和Windows工具,根据其自己的灵活使用许可提供,允许任何PlayStation游戏开发商、发行商或工具和中间件公司部分或完全基于创建软件在任何平台上的PhyreEngine上。该引擎使用针对 PS3单元宽带引擎的协同处理器单元 (SPU) 优化的复杂并行处理技术,但可以轻松移植到其它多核架构。
除了低级PS3 LibGCM库之外,PhyreEngine还支持OpenGL和Direct3D,提供功能齐全的“游戏模板”作为源代码,包括对Havok 、PhysX 、Bullet等物理引擎的支持。
PhyreEngine已被多家游戏工作室采用,并已用 200多个已发布的游戏中。游戏代表作有最终幻想系列、英雄传说系列等。
引擎可以使用 OpenGL、DirectX 或软件进行渲染,可以在在 Windows 和 Linux 上运行。技术上,Irrlicht使用了分层场景图进行场景管理,并具有基本的 2D GUI功能。
Irrlicht比同期的其它引擎要小巧一些,只有一个主要开发人员,但是在当时有一个庞大的爱好者支持社区。 它还提供基本的物理例程,但缺少任何网络功能。并且,Irrlicht以图形质量和渲染速度比其它软件差而闻名,被更容易开发所抵消,通常被视为理想的初学者引擎。
Irrlicht引擎渲染画面截图。
Microsoft的XNA Game Studio是一个易于使用且高度可访问的游戏开发平台,旨在鼓励玩家创建自己的游戏并与在线游戏社区分享。
XNA基于C#和公共语言运行时 (CLR)。主要的开发环境是Visual Studio或其免费对应物Visual Studio Express,其源代码和游戏资产等所有内容都在Visual Studio中进行管理。借助XNA,开发人员可以为PC、 Xbox 360控制台创建游戏。通过以基本为零的成本提供出色的工具,微软出色地为普通人打开了创造新游戏的闸门。
XNA研发的游戏Barotrauma游戏截图(2019)。
在2004前后,FPS 类型中,有三个主要的游戏引擎系列,每个系列都由不同的开发者组成:id Software的Doom 3和Quake 3引擎、Valve Software的Half Life和Half Life 2引擎和Unreal Tournament (UT)和 Epic Games的 Unreal Tournament 2004 (UT2004) 引擎。
毁灭战士3、半条命2和UT2004代表了每个开发者的最新一代,并且是当时可用的最佳游戏引擎。Quake 3、UT和Half Life是上一代引擎。应该注意的是,Half Life引擎是基于Quake 和 Quake 2引擎的。
所有这些引擎都功能齐全,并且基于这些引擎中的每一个都存在一个或多个完整的游戏,与上面的大多数开源引擎形成鲜明对比,后者提供了更多基本功能。开源引擎通常需要与其它库和工具包结合才能创建可玩的游戏,Quake 3值得特别提及,和其它引擎不同,可以被开发人员进行大量修改。 另一个应该提到的引擎是GarageGames的Torque。它是一种廉价的商用引擎。
此外,还有Cocos2d系列、Panda 3D、OpenSceneGraph、Delta3D、Blender Game Engine、GameMaker、Godot、bgfx、Unigine、Delta3D等等引擎或渲染器。
Blender Game Engine编辑器和渲染效果图。
下面是另外一些引擎的特点描述:
下表是部分游戏引擎的说明:
名称 | 公司 | 许可 | 代表作 | 备注 |
---|---|---|---|---|
4A Games | 专用 | Metro 2033, Metro: Last Light, Metro Exodus | ||
MIT | - | 开源Entity组件系统WebVR框架 | ||
Petroglyph Games | 专用 | 星际大战 | ||
Ubisoft | 专用 | 刺客信条、汤姆·克兰西的彩虹六号 | ||
BigWorld Technology | 专用 | 坦克世界、天下 | ||
Blender Studio | GPL-2.0+ | Yo Frankie!, Sintel The Game | 2D/3D游戏引擎封装在3D模型中,集成子弹物理库 | |
多个 | MIT | Geometry Dash | 国内是Cocos2d-x/3d引擎 | |
Bethesda Game Studios | 专用 | 上古卷轴、辐射 | ||
CryTek | 专用 | 孤岛危机、孤岛惊魂 | ||
Glass Studio | 专用 | Thief: The Dark Project、System Shock 2、 Thief II: The Metal Age | 高级 AI 和声音功能(完全控制声音传播) | |
Guerrilla Games | 专用 | 死亡搁浅、地平线零黎明、杀戮地带:暗影坠落、直到黎明、直到黎明:鲜血狂潮 | ||
Ubisoft | 专用 | 全境封锁 | 基于CryEngine | |
Codemasters | 专用 | F1系列 | 主要用于赛车游戏 | |
Relic Entertainment | 专用 | 帝国时代4、战锤、英雄连3 | ||
Konami | 专用 | 实况足球 | ||
Ubisoft DICE | 专用 | 战地、FIFA、星球大战 | ||
Gamebase | 专用 | 攻壳机动队:独立情结、冒险岛2 | ||
YoYo Games | 专用 | 警察故事、死亡诡计 | ||
IOI | 专用 | 杀手系列、自由战士、迷你忍者、凯恩与林奇系列 | ||
Argentina | MIT | 残酷小队、硬编码、转储王国、Keen in Keen Dreams | 3.0+通过模块和GDNative添加了C#脚本和其它语言、PBR和全局照明。 | |
Simutronics | 专用 | 星球大战:旧共和国 | ||
id Software | 专用 | Doom、Quake、愤怒、德军总部:新秩序、德军总部:旧血、内心的邪恶 | 从Doom和Quake发展而来,早期版本部分开源 | |
Nikolaus Gebhardt | zlib | Minetest | ||
Infinity Ward | 专用 | 使命召唤系列 | 最初基于id Tech 3构建 | |
Ubisoft | 专用 | Rayman Mini、Space Junkies、Tom Clancy’s Ghost Recon Breakpoint | ||
Sony | 专用 | 战神 | ||
Microsoft | Microsoft Public | 幕府将军的骷髅、泰拉瑞亚、堡垒、塔楼坠落、晶体管、非斯、公理边缘 | ||
BioWare | 专用 | 星球大战:旧共和国骑士团,星球大战:旧共和国骑士团II:西斯领主 | ||
- | MIT | Torchlight, Kenshi | ||
- | MIT | - | OGRE的下一代引擎 | |
- | BSD | 卡通城在线,加勒比海盗在线 | ||
Sony | 专用、免费 | 英雄传说:步入遐想、天空:光之孩子 | ||
Bohemia | GPL-2.0+ | ARMA 2、ARMA 3、DayZ | ||
CD Projekt | 专用 | 巫师 2:刺客之王、巫师 3:狂猎、赛博朋克 2077 | ||
RAGE Tech | 专用 | 荒野大镖客1和2、侠盗猎车手 | ||
ASCII | 专用 | 女巫之家、Escaped Chasm | ||
Westwood Studios、 EA | 专用 | 指环王系列、命令与征服系列 | ||
ShiVa Technologies | 专用 | 波斯王子2:阴影与火焰 | ||
Nival Interactive | 专用 | 寂静风暴、守夜人、锤子和镰刀、日间守夜人 | 用于回合制战术游戏 | |
Valve | 专用 | 半条命2、反恐精英:来源、Left 4 Dead、传送门、军团要塞2、Dota 2、实验室、神器、半条命:Alyx | 第一款使用Source 2的游戏Dota 2是从原始 Source引擎移植过来的,The Lab的一个迷你游戏Robot Repair使用Source 2引擎,而其余七个使用Unity的引擎。 | |
Blue Tongue | 专用 | 侏罗纪公园:创世纪行动、尼克卡通联盟、·里维拉历险记、漫威超级英雄小队 | ||
GarageGames | MIT | Marble Blast Gold、Tribes 2、Blockland | 包括多人网络代码、无缝室内外渲染引擎、骨骼动画、拖放 GUI 创建、内置世界编辑器、类 C 脚本语言 | |
Ubisoft Montpellier | 专用 | 雷曼起源、雷曼传奇、光之子、勇敢的心:大战 | ||
Unigine | 专用 | Dual Universe | 专注于大型开放场景:64位精度坐标,支持地理坐标,圆形地球模型,主要用于企业和专业模拟器。 | |
Unity Technologies | 专用 | 天刀、原神、最终幻想、王者荣耀、炉石传说 | ||
Epic Games | 专用 | 和平精英、黑神话悟空、蝙蝠侠、最终幻想重制版 | UE4删除了UnrealScript |
以上只是其中部分引擎,更详细的参见:List of game engines。
电脑游戏已经走过了漫长的道路,从1962年的太空大战到在21世纪最大的媒体中占据一席之地,在总收入方面甚至超过了电影行业。从技术上讲,计算机游戏就像任何其它计算机程序一样,由源代码模块组成。有人定义的游戏引擎指的是与游戏内容分离的模块部分:行为或环境。就像汽车的引擎一样,游戏引擎是游戏的技术核心,游戏的内容就建立在它之上。
关于游戏引擎的确切含义存在一些混淆,游戏引擎被定义为“不直接指定游戏行为(游戏逻辑)或游戏环境(关卡数据)的模拟代码模块的集合”。在引擎的模块中,游戏世界的输入处理、输出(3D、2D 和声音)以及通用物理和动力学。游戏引擎作为对游戏实际内容没有影响的模块,包括输入、音频、图形、动态和事件循环。
设计和开发软件组件是一个成本高昂且耗时的过程,因此游戏开发人员通常在经济上更好地投资于现成的引擎而不是开发自己的引擎,重复使用优质组件也提高了整个产品的整体质量。构建新软件不可避免地会导致“重新发明轮子”,与以前创建的软件相比,代码重复估计高达85%。
在实践中,游戏引擎通常会根据特定游戏的内容风格进行调整,但会损害引擎在不同风格游戏中的重用性。大多数引擎都是为在特定平台上运行特定游戏而设计的,引擎越通用,在特定平台上运行特定游戏的优化程度就越低。更一般地说,构建可重用的软件组件所花费的精力是构建一次性组件的三倍。因此,虽然重用现有游戏引擎具有相当的价值,但每个人都构建自己的可重用引擎或每个游戏引擎都可重用(或者甚至与游戏的其它部分分开)则没有意义。
在上个世纪80年代之前,由于没有游戏引擎,每个游戏都需要重复造轮子,必须针对所使用的特定硬件进行构建,多个发行平台意味着从头开始重写游戏,对游戏开发团队而言,意味着多倍的又重复的工作。
到了80年代,游戏引擎的前身概念出现,以Pinball Construction Set (Bill Budge)为例,售出超过300000份。
Pinball Construction Set游戏画面(1982)。
Pinball Construction Set定义了一种新型的产品:游戏构建系统,包含IDE、命令行界面、精灵编辑器、模型编辑器、地图/场景编辑器等。
到了1990年代,游戏创建系统实际上就是游戏引擎,游戏引擎的术语正式开始出现,由id Software引入,在Wolfenstein 3D(德军总部 3D)的FPS游戏中展现,引擎名为Fast 3D Engine(实际是2.5D)。
早期游戏引擎经历的3个阶段。
id Software随后发布了正式版游戏引擎Doom和Quake系列。Doom引擎的特性包含纹理映射、非正交墙、光源衰减/光源、可变高度的地板和天花板、环境动画和变形、调色板转换、多玩家等。Quake引擎则支持降低3D复杂性以提高速度、预先计算光照和阴影(光照贴图)、分割地图以提高速度、快速渲染、渲染顺序、硬件3D加速、网络游戏等。
初代Quake引擎的最低系统要求和渲染画面。
在随后的1999,Quake引擎在GPL下发布,由此衍生了庞大的Quake引擎家族。(下图)
id Tech引擎家族树。
Stardock游戏引擎发展历程。
从上世纪90年代到如今,游戏引擎已经经历了30多年的发展,势头迅猛,衍生出一代又一代的经典技术和架构,涌现许多通用的引擎和内部引擎,由此帮助了数量众多的游戏开发团队和公司,创作出了许许多多耳熟能详的游戏作品。
上世纪90年代,游戏引擎还处于混沌期和萌芽期,很多游戏开发团队尚没有使用游戏引擎,只对基础和通用的模块进行部分抽象,在各个项目之间进行复制。这种模式是处于低级的复用,更别谈扩展性、维护性和易用性了。
没有游戏引擎的助力,加之游戏技术和硬件的限制,当时的游戏画面极其粗糙,颜色位深有限,像素严重不足,颗粒感十足。(下图)
上:Saboteur II(1989);中:Xenon 2(1990);下:Prince of Persia 2(1995)。
到了上世纪90年代,以ID公司的Doom和Quake系列引擎和Epic公司的Unreal引擎开始面世,诸多通用的功能模块、亮眼的游戏画面和较为易用的编辑器,使得它们成为当时的主流游戏引擎。(下图)
上世纪90年代的Doom、Quake、Unreal引擎的游戏画面。
早期的游戏引擎编辑器界面。
2000年前后,Quake和Unreal引擎发展到了第三代,部分游戏引擎发展的描述和时间线如下图所