当前课程知识点:游戏程序设计 > 第一章 《游戏开发导论》 > 1.4 游戏引擎(上) > 1.4 游戏引擎(上)
上一节主要就是给大家讲的
游戏是怎么开发出来的
其中主要是介绍了
游戏开发团队它的一个角色的划分
以及介绍了关于游戏的一些
常用的开发工具以及它的
整个开发流程
及深层的一些游戏的资产和它的一些管理
接下来我们重点介绍一下
游戏引擎部分
什么是游戏引擎
我们来看一个小视频
刚才那个视频就讲到
为什么会出现游戏引擎这么一个东西
主要就是早期大家在做游戏的时候
都是习惯于从头来
然后后来就逐渐有那么一拨人
他就
不断的把一些游戏里面
它公用的一些部分都提取出来
就形成了
各个游戏引擎的各个模块
因为大家一开始都是从头去开发游戏的
所以整个着它的开发过程是非常慢
而且效率也是非常低的
如果可以通过构建通用的框架来
简化整个开发的过程的话
这整个生产效率就大大的提高
于是便整个游戏引擎就出现了
接下来我们简单的回顾一下
游戏引擎上的一个发展的历程
说到游戏引擎的发展
要追溯到1992年了
当时约翰卡马克他推出了
德军总部3D这款游戏
这款游戏的画面在现在看来
肯定是不值一提的
但是它却是整个3D游戏它的鼻祖
卡马克也因此获得了FPS游戏之父称号
1993年
卡马克成立的ID公司推出了
DOOM中文名叫毁灭战士
ID公司用Id Tech来进行引擎的划代
DOOM引擎是Id Tech第一代引擎
1996年ID公司它发售了
另外一款全新的射击游戏叫Quake
它的中文名叫雷神之锤
相比DOOM
Quake是一种相比Doom的伪3D技术
Quake它这款引擎是
实实在在的一款真3D的引擎
同时Quake这款游戏还确立了
整个FPS游戏
它的一个操控流畅标准
1997年
ID公司用他的ID Tech
第二代引擎去制作了第二代的Quake
这一代的Quake是能够支持硬件加速
到了1998年
伟大的EPIC公司它推出了虚幻引擎
同时也推出了它的同名游戏Unreal
Unreal画面
在当时来讲是非常优秀
到了1999年
勤奋的ID公司
它用它的第三代引擎
制作了Quake 3 这一代
Quake这一代用的引擎
它不再支持软件的渲染
它只支持硬件加速
并且能够支持32位
材质高细节模型
和动态光影等等的一些新的技术标准
到了2002年
EPIC发布了虚幻的第二代引擎
同时也推出了它的同名作品
引擎的代码经过了重写
并且提供了全新的编辑器
它的功能更加全面
到了2004年
ID公司他推出了DOOM 3
用的是ID TECH第四代引擎
这一代的引擎他大规模的使用的动态光影
所以DOOM 3的画面表现是非常出色的
DOOM 3当时也成为了
显卡跑分的一个必备的软件之一
而到了2005年 UNITY面世
它的目的
其实是让想让更多的人去接触游戏开发
不过
UNITY它最早推出的是苹果的平台
当时他发布的时候
其实是并没有引起广泛的关注
大家也没有想到它现在会这么的火
到了2006年虚幻三引擎发布
它是第一款使用
第一款使用虚幻三引擎
制作的游戏就是著名的战争机器
战争机器这款游戏它的画面表现
非常的出色的虚幻三引擎
强大的工具链以及它所见即所得的开发模式
使得整个虚幻三引擎
被很多的游戏开发商广泛的使用
到了2006年
引擎里面的新生代力量也出现了
育碧公司利用Cry Engine做了另外一款画面
堪称顶级的
射击游戏Far Cry孤岛惊魂
Cry Engine也是它的开发者
是德国的Cry TECH
它在游戏引擎的开发上面是属于新生代
但是它第一次出手就表现的非常的厉害
到了2007年Cry TECH
用它的第二代Cry Engine制作了孤岛危机
这款游戏可以说是当时的DX十年代最强的
画质的代表也引发了当年所谓的显卡危机
同年
unity 2.0发布了支持了很多的新的特性
主要是3D画面表现得到了增强
到了2008年unity支持了iPhone
2009年Cry Engine第三代发布
然后同时也制作了
它的孤岛危机的第二代作品
孤岛危机每一次的出现
都会成为当时画面的标杆
而在同年的话
那个unreal
它做了一个策略性的调整
EPIC发布了免费的虚幻三引擎的版本
简称为UDK
到了2010年
Unity发布了3.0的版本
为PC和家用机的平台增强的图形特性
同时也支持的安卓平台
也是2010年
UDK也支持IOS和安卓
不过虚幻三引擎
它是一款面向PC
和家用机的高端的游戏引擎
所以即使它支持了移动平台
但它也只能在一些
性能比较好的手机上面才能跑得动
2012年
著名的新闻公司
VentureBeat这么说道
很少公司能够像UNITY那样
为独立游戏的流动做出如此大的贡献
在当年有130万的游戏开发者
用了UNITY
UNITY希望成为最好的跨平台的游戏引擎
Cry Engine就不一样了
到了2013年Cry Engine
3.6发布
于就走着PC和家用机平台的路线
相对来说
Epic公司他的策略会比较明智一点
因为它当时已经意识到移动端的重要性
所以它在2014年发布了
虚幻四功能很强大
它的画面表现也非常的惊人
最重要的是
它吸取了很多unity引擎的特点
插件化的设计和
全平台的支持
能够让它面对最广泛的游戏开发群体
unity感受的epic的压力
所以到了2015年
unity发布了5.0的版本
它极大地增强了画面的表现
2016年Cry Engine 5发布了
但不得不说cry tech的技术
它是业界一流了
但是它在商业它的引擎的商业化
运作方面是非常的失败的
因为它没有看到移动平台上的一个趋势
到了2007年
著名的吃鸡游戏绝地求生
大逃杀它席卷了全球
一下子就让虚幻四引擎火爆了起来
到了2018年
绝对生存的两款手游出现
就标志着虚幻四手游的时代正式来临
前面讲了很多成功的引擎里面
介绍了都是几款主流的商业化的引擎
但还有很多成功的引擎没有提到
比如像半条命的CS go
用的source引擎
还有R星的RAGE 育碧的雪落 以及EA的寒霜
还有Konami的FOX
就是做合金装备5
在大致的了解一下
引擎的一个发展历程之后
我们接下来主要是给大家介绍一下
游戏引擎上的一个架构
这节的内容主要是
来自于游戏引擎架构这本书
这本书的作者是Jason Gregory
他参与过神秘海域的制作
同时它也是美国末日的首席程序员了
这本书的译者就是我们腾讯著名的
十四级的专家工程师叶劲峰
大家可能
知乎上的比较多的
应该对叶劲峰会比较了解
这本书写的年代稍微有点久
它里面的提到的一些技术
可能会相对老一些
所以我在这边也做了一些更新
首先是
关于游戏引擎的架构
我们可以从九个层级来了解一下
首先是看最底层的硬件驱动和操作系统
硬件指的就是执行游戏的计算机或者
游戏主机比如像windows
基于windows
Linux的PC苹果Mac
还有基于ios安卓平台的设备
微软和索尼的家用游戏主机
还有任天堂的一些掌机等等
驱动指的就是驱动设备程序
它是由操作系统和硬件厂商
提供的最底层的软件组件
驱动的主要作用就是管理硬件资源
同时隔离硬件和上层软件
同时隔离硬件以及它的上层软件
上层软件就不需要再去理解
不同硬件之间
它的一些细节的差异
操作系统我们可以从PC
和游戏主机来分别了解一下
PC平台的操作系统
它的主要作用是
协调一台计算机上多个程序的执行
多个执行中的程序
它能够共享它的硬件资源
而游戏主机则不太一样
比较老的游戏主机
它的操作系统
通常它是一个轻量库的形式存在的
它是Link到游戏的执行档上面去
游戏运行的时候
它会完全拥有整台主机
也就是说在比较老了一些主机上面
其实操作系统和它的整个游戏是一体的
而到了现代主机
现代主机它的操作系统会更接近于
PC平台的操作系统
它能够中断游戏的执行
并且能够去接管某些硬件资源
所以在现代
现代来看
游戏主机和PC它的一个开发
分野正在慢慢的收敛
在操作系统之上的
就是第三方的软件开发包
像图形方面就有
著名的四大三维SDK
包括像微软的Direct X
苹果的Metal
以及著名的跨平台图形open GL
下一代产品Vulkan
在物理方面
世界三大物理引擎
havok、PhysX以及Bullet
还有一些其它的SDK
像VR设备它用的比较多的像OCULUS、GoogleVG和SteamVR
以及还有像LEAP MOTION这样的一些
手势捕捉工具等等
然后是平台独立层
在第三方软件开发包之上
就是平台独立层
为什么要抽象出这样一个平台独立层
因为大多数游戏引擎
它是需要运行在不同的平台上
平台独立层它的主要作用就是隔离
操作系统和上层的引擎功能
它主要通过对操作系统
和第三方软件开发包进行统一的封装
来达到这个目的
在平台独立层之上
就是引擎里面真正跟游戏功能
相关的一些内容
这些跟游戏功能相关的内容里面
也还能再抽象一些基础的框架出来
于是就有了核心系统层这么一个概念
核心系统层里面包含很多重要的子模块的
比如像数学库
比如像数学库
因为游戏本质上就是一个
高度数学密集型的软件
还有自定义的内存管理模块
它能够高速的分配和释放内存
控制内存碎片
它所造成的一个负面的影响
反射机制能够让
程序在运行时得到自身的一个类型信息
能够动态地查找属性和进行函数调用
因为游戏本身就是一个很大型的
可以是一个很大型的软件吧
所以程序难免会出现各种出错
我们需要一个很健全的调试和日志系统
来发现跟踪并且修复这些错误
核心系统层之上是资源管理系统
美术资源是最重要的游戏资产之一
每一个游戏引擎
它都会具备某种形式的资源管理系统
能够提供一个统一的接口
来访问任何类型的游戏资产
游戏引擎在资源管理方面
通常会遵循以下一些规则
首先是唯一性
也就是说在任何时候
它同一个资源在内存里面
应该只有一个副本
还有就是它的生命周期
资源它
通常会只在它需要的时候加载
在它不需要的时候就要卸载掉
以免会占用更多的
系统资源
还有内存用量
我们要确保整个整个游戏的资源
它的使用是在内存中的占用
在一个适当的水平线上面
避免对系统资源进行过多的一个分配
还有就是我们要维护好
资源的一个引用关系
同时
我们还要管理好复合资源的加载
复合资源指的就是由
多个游戏资源组成的一个资源
我们还要提供异步加载的功能
让游戏在加载资源的时候
不阻塞整个游戏逻辑的一个执行
通用子系统就是游戏引擎里面
最庞大的一个部分
也是游戏开发过程中接触最多的一个部分
接下来我们会对
通用子制系统里面的各个重要的模块
进行一些讲解
-1. 1什么是游戏(上)
--选择题
-1.2 什么是游戏(下)
--选择题
-1.3 游戏是如何开发出来的
-1.4 游戏引擎(上)
-1.5 游戏引擎(下)
--单选题
-1.6 如何成为一个游戏开发者
--多选题
-2.1 什么是游戏服务器
--单选题
-2.2 游戏服务器的和分类发展
--单选题
-2.3 核心技术和实现难点
--单选题
-2.4 设计原理与方法论
--单选题
-3.1 三维坐标系统
--多选题
-3.2 向量与运算
--单选题
-3.3 矩阵与线性变换
--双选题
-3.4 四元数
--3.4 四元数
--多选题
-4.1 游戏循环概述(上)
--多选题
-4.2 游戏循环概述(下)
--单选题
-4.3 《无尽之路》的实现
--单选题
-4.4 支撑游戏的功能
--选择题
-4.5 支撑游戏的机制与系统
--多选题
-5.1 基本介绍
--5.1 基本介绍
--单选题
-5.2 随机数生成器
--单选题
-5.3 随机数分布与应用
--单选题
-6.1 什么是游戏玩法开发
--单选题
-6.2 建立愿景 Vision
--单选题
-6.3 划定边界 Scope
-6.4 迭代 Iteration
--单选题
-6.5 迭代 Iteration+抛光Polish
--单选题
-7.1实时图形渲染管道 宏观渲染系统
--单选题
-7.2实时图形渲染管道 应用阶段
--单选题
-7.3实时图形渲染管道 几何阶段
--单选题
-7.4实时图形渲染管道 光栅化阶段
--单选题
-7.5实时图形渲染管道 总结 参考
-8.1 物理回顾1
--单选题
-8.2 物理回顾2
--单选题
-8.3 材质 1
--8.3 材质 1
-8.4 材质 2
--8.4 材质 2
-8.5 材质3
--8.5 材质3
-8.6局部光照
--8.6局部光照
--单选题
-8.7 全局光照
--8.7 全局光照
--单选题
-9.1 动画介绍
--9.1 动画介绍
--多选题
-9.2 游戏动画介绍
-9.3 动画技术类型
--多选题
-9.4 骨骼蒙皮动画
--多选题
-9.5 动画流水线
--多选题
-9.6 动画前沿趋势
--多选题
-10.1 .基本概念
--多选题
-10.2 设计目标
--多选题
-10.3 传输数据分析
--多选题
-10.4 常用同步方案 1
-10.4 常用同步方案 2
-10.4 常用同步方案 3
-10.4 常用同步方案 4
--多选题
-10.5 方案对比
--多选题
-11.1 基本图元
--单选题
-11.2 图元距离(上)
--单选题
-11.2 图元距离(下)
--单选题
-11.3 图元相交测试+ 其他几何方法
--单选题
-12.1 著名物理引擎介绍
--单选题
-12.2 物理引擎原理(上)
--单选题
-12.3 物理引擎原理(下)
--单选题
-12.4 游戏中的物理体
--单选题
-12.5 物理引擎使用入门
--单选题
-13.1开发语言
--13.1开发语言
--单选题
-13.2 开发环境
--单选题
-13.3 腾讯开发组件介绍
--单选题
-13.4 网络通信+业务框架介绍
--多选题
-14.1 进程间通信(上)
-14.2 进程间通信(下)
-14.3 通信格式
-14.4 并发模型
-14.5 超时处理
-14.6 大系统小做(上)
--多选题
-14.7 大系统小做(下)
-14.8 架构层面的技术支持(上)
--单选题
-14.9 架构层面的技术支持(下)
-14.10 分布系统的关键能力
--多选题
-15.1 游戏人工智能综述
-15.2 人工智能在游戏中主要方法 上
--多选题
-15.3人工智能在游戏中主要方法 (下)
-15.4 人工智能在游戏制作中的应用领域1
--多选题
-15.5 人工智能在游戏制作中的应用领域2
-15.6 人工智能在游戏制作中的应用领域3
--多选题
-15.7 人工智能在游戏运营中的应用实践(上)
-15.8 人工智能在游戏运营中的应用实践(下)
--多选题
-16.1 游戏支撑系统(1)
--单选题
-16.2 游戏支撑系统(2)
--单选题
-16.3 游戏支撑系统(3)
--单选题
-16.4 游戏支撑系统(4)
--单选题
-16.5 游戏支撑系统(5)
-17.1 游戏逻辑服务器(上)
--单选题
-17.1 游戏逻辑服务器(下)
-17.2 外挂与反外挂(上)
-17.2 外挂与反外挂(下)
--多选题
-18.1运行环境
--18.1运行环境
--多选题
-18.2物理部署
--18.2物理部署
--多选题
-18.3系统的可运维性
--多选题
-18.4运维案列分析
--多选题