当前课程知识点:游戏程序设计 >  第一章 《游戏开发导论》 >  1.5 游戏引擎(下) >  1.5 游戏引擎(下)

返回《游戏程序设计》慕课在线视频课程列表

1.5 游戏引擎(下)在线视频

下一节:1.6 如何成为一个游戏开发者

返回《游戏程序设计》慕课在线视频列表

1.5 游戏引擎(下)课程教案、知识点、字幕

首先是渲染引擎

渲染引擎是通用子系统里面的一个

最重要最重要的一个部分

它通常也会分为四个子模块

分别是低阶渲染器

场景图和剔除优化模块

还有视觉效果和前端

低阶渲染器

包含引擎中全部原始的渲染功能

它主要的作用就是用来高速的绘制图形

高速绘制游戏里面的一些几何图形

但它这个阶段他是不考虑哪些场景

是否可见简单点来讲

低阶渲染器就是图形渲染管线

它只负责画

就是你给它什么东西

它就画什么东西

所以我们可以把低阶渲染器理解为

图形渲染管线的一个流程

我们先简单介绍一下这个流程吧

首先就是我们要创建3D的3D模型

然后把3D的模型

配置到一个虚拟的空间里面

然后模型的顶点会进入到一个叫

Vertex shader

就是顶点着色器顶点着色器

它的一个主要功能就是做

顶点的变换和着色的处理了

有可能这个时候也会做一些

顶点阴影方面的处理

如果你的模型想需要改变的话

那么有可能会进入到一个几何着色器

几何着色器

它会对顶点进行一个增加或者删除

来达到一个对模型进行变换了一个功能

然后

然后模型会再从它的一个世界空间

变换到一个摄像机的空间

到了摄像机空间之后

再对模型进行

一个多边形的裁剪和背面的剔除

就把摄像机看不到的那些面给剔除掉

以及摄像机背面以模型背面

就摄像机看不到的那些面也剔除掉

然后再进入

然后到了一个光栅化

光栅化就是把一个3D的模型转变成

一个屏幕上的一个2D的像素

然后再通过像素着色器

对整个每个像素进行上色

计算光照等等

同时

还会使用把贴图给应用上去

最后就是进行混合到

输出到我们的一个缓存里面

然后再提交到我们显示的

我们的显示设备上面

低阶渲染器它只负责绘制

但我们不可能把所有东西都绘制出来

我们只会是我们看的到的东西

所以这里就需要一个像场景图

和剔除优化这样一个模块

来决定哪些东西是需要画的

假设我们有

左边那样一个原始的场景

然后经过中间的视锥剔除之后

我们就能看到屏幕外的东西就被剔除掉了

在经过右边的遮挡剔除

我们能够看到那些被遮挡的

物件也被剔除掉

剩下的这些东西才会真正的进入到

低阶渲染器去执行快速的绘制

然后大家能够看到有几个灰色的

这边有两个有几个灰色的

这边都已经相当于被遮挡

剔除给裁剪掉

关于视觉效果方面的话

光影和特效是视觉效果里面

非常重要的一个部分

一个很简单的房子

一旦有了光影之后也会变得非常的好看

后处理是

视觉效果里面也非常重要的一个部分的

像我们经常会用到一些后处理

去加强整个画面的一个表现力

向使用一些景深、眩光

还有颜色矫正

抗锯齿

屏幕空间的反射、环境遮挡、光溢出

人眼适应和虚光这些

都是我们比较常用的一些后处理的效果

然后低阶渲染器

它所绘制出来的画面经过后处理之后

整个视觉效果就能得到极大的提升

还有渲染引擎里面一个前端模块

通常指的就是各种UI

比如像我们在游戏界面上经常看到的

HUD就是平视显示器

以及图形用户界面

全动视频和游戏的内置电影等等

我们在画面上面看到的就是用网页技术

来做的一个游戏大厅的demo

它是用Web技术

来做了一个游戏的一个大厅

在游戏里面

另外一个比较重要的系统就是物理系统

物理系统主要分为碰撞检测

和物理模拟两个方面

碰撞检测是为了防止物理

能够为了防止物体互相穿透

能够让它们能够在一个虚拟世界里面

合理的进行互动

而物理模拟就是指的是

真实或者半真实的动力学模拟

通常游戏引擎是不会自己

再重新去实现一套物理引擎的

一般都是对世界三大物理引擎的

一个SDK的一个封装

也就是havok、 physX 和 BULLET

一般商业引擎里面用的比较多的是phys X

因为havok是收费的

碰撞检测

我们可能也会分为以下的几种情况吧

像碰撞无响应指的就是

两个物体发生了碰撞

你看了这个球跟那个墙发生的碰撞

但是它并没有产生碰撞的事件

右上角那张图的就是碰撞

有响应指的是两个物体

它发生碰撞之后会产生一个碰撞的事件

我们可以通过去得到这些碰撞事件

去做一些进一步的处理

重叠无响应指的就是

你可以理解为两个物体之间

完全不知道对方的存在

也就是左下角这个示例

重叠有响应指的就是两个物体

在发生重叠的时候

它能够触发一个重叠的事件

我们通过得到重叠事件之后

我们可以做一些其它的一些处理

而在物理模拟方面

比较常见的

比较常见的一个物理的运用就是

布娃娃模拟的

这个就是

布娃娃模拟

然后载具的模拟向右上角载具的模拟

还有布料的模拟以及可破坏物件的模拟

这个是我们在游戏里面

运用的比较多的一些物理方向的模拟

动画系统也是一个游戏里面

比较重要的子系统之一了

游戏里面的动画可以分为以下几种类型

首先是精灵和纹理动画

也就是一个相当于是一个2D动画

然后就是一个骨骼动画

像我们在右上角看到了这个就是骨骼动画

还有就是变形目标动画和顶点动画

变形目标动画指的就是

通过插值的方式来计算顶点的位置

你可以通过它通过一个

输出各种参数来插值它的顶点

顶点之间的一个的实时计算出来

它顶点的位置

然后我们再来重点看一下

骨骼动画也是我们在游戏里面

用的比较多的一个技术

我们会使用相对简单的骨头系统

去设定精细的三维网格模型

它的一个姿势

然后所有的骨头它的姿势

都是以矩阵表的形式来存在的

权重决定的骨骼和网格顶点之间的关系

渲染器利用矩阵表和权重去转换顶点

然后每个顶点拥有一个或多个矩阵

混合了之后再混合出最终的位置

然后我们称之为蒙皮

这几个这几个概念

可能听起来有点

不好理解

我们就按

用一个示例来给大家讲解一下骨骼动画

它是怎么运作

首先我们会有

前面我们讲过了

我们会再通过MAYA MAX

输出我们的一些模型资源

模型资源就有骨骼模型资源以及它的一个

权重

我们

这个是骨骼模型

这个是我们输出的一个模型

然后这个是骨架就是

我们通过

通过权重来通过权重来决定这个

这个人物的那个模型的顶点

跟骨骼之间的一个关系

它的根骨骼之间的一个关系

这就这一个权重的作用

然后再通过秒描述

三维角色

这是我们就有动作

动作它的作用就是用来描述整个三维角色

它的一个网格的姿势

其实动作其就是它的一个骨骼的一个

一些矩阵的数据的变换

然后再经过蒙皮之后

蒙皮就是把顶点跟骨骼之间的关系

建立起来之后再贴上贴图

我们就能看到像

游戏引擎里面才看到的这个

栩栩栩栩如生的这个角色的动作

然后是关于多人游戏的子系统的

多人游戏的形式主要有几下几种

首先是单屏多人

就是两个人或以上的输入设备

它会接入到同一台游戏主机

它一个摄像机会维持所有角色

在整个画面当中

而分屏多人指的就是

多个输入设备

它接到同一台游戏主机

然后每个角色有自己的摄像机

然后它通过分割屏幕

来使每一个玩家都能看到自己的角色

而网络多人指的就是

多台游戏主机

它会连到同一个网络上面去

然后每个机器接待一位玩家

像我们的一个局域网的射击游戏

像绝地逃生

这种设计游戏就是一个网络游戏

大型网络游戏指的就是

很多的游戏玩家成百上千的游戏玩家

它会连接到一个巨大的

持久的在线游戏世界里面

这些虚拟的世界通常是由

一组强大的服务器所运作

像我们一般的大型的mmo

就指的是大型的多人在线游戏

然后是关于一些人体

人体学接口设备

我们常用的就是键盘

鼠标

手柄

方向盘甚至跳舞毯等等

最后就是游戏引擎的最上层的

这一层就是我们所谓的

GAME PLAY类的框架层

我们称之为游戏专用子系统

它通常会包括3c

3c指的就是

角色character镜头camera控制器 control

这三个C以及还有一些武器道具

载具

人工智能等等

游戏专用子系统里面

我们重点来看看人工智能这一部分

游戏引擎架构这本书

它上面是没有关于AI的一个介绍

这块内容是我自己的一些经验和理解

首先

人工智能它的英文缩写就是AI

它是研究开发用于模拟延伸

和扩展人的智能的理论方法

技术及

应用系统的一门新的技术科学

这个有点不好理解

我们简单点理解的话就是游戏当中的AI

它主要就是分为几个部分

棋牌类AI动作射击游戏里面的NPC

和怪

以及战略游戏里面的

AI的控制的单元

我们在游戏里面常用的AI

就是这三种类型

这里我们会以常见的NPC一来介绍一下

我们怎么去设计一个NPC

要设计一个NPC的话

我们通常会考虑两个部分

首先是怎么做

首先是要做什么

然后再是怎么做

通常做抉择的工具主要有三种

像有向状态机行为树和机器学习

大家可能都都有听说过

这三个方面的一些技术

像在我们现在现代游戏引擎里面

通常用的比较多的就是

像行为树来做一个AI的行为抉择

有向状态机算是相对来说比较老一点技术

而机器学习是最近这两年会比较流行

我们也在逐渐在使用机器学习来做一些

AI的一些行为的抉择

那我们这里还是重点介绍一下

目前当下最流行的一个

做AI行为的一个抉择的技术的行为树

行为树它是一种它是一个数状的结构吗

它有几种节点

它有根节点有分支

而且子节点的数量可以是任意的

我们会自顶向下去搜索这棵树

然后去最终决定要做的一个行为

且就是我们的叶子节点

叶子节点里面就是它的各种行为

然后再去执行这些行为

这就是行为树的一个基本的原理

构成行为树的主要元素有控制节点

它的行为节点以及他的前提条件

控制节点还会分为选择节点

还有它的序列

其它的并行节点

选择节点指的就是它会根据前提条件

来选择一个子节点来执行

顺序节点指的就是一次执行所有的子接点

并行节点指的就是同时执行所有的子节点

并设定一个推出的条件

然后行为节点指的就是具体的行为

也就是具体要做的一些事情

不同的游戏

它需要定义不同的一个行为节点

行为节点是可以复用的

每个节点它可以包含一个前提条件

当前提条件满足的时候才会进入这个

选择它后面的节点

这里我们就大致讲一下

行为树的它们一个构造

如果大家有兴趣的话

可以自己下去看下相关的一些技术的文档

前面说的是要做什么

然后

在做AI的时候

另外一个很重要的概念就是要怎么去做

简单点来讲

其实就是怎么做

它的概念就是要去什么地方做什么事情

既然要去到某个地方的话

那么就首先是需要寻路

导航网格寻路

是目前比较普遍的一个寻路的机制

大部分的游戏引擎

都会集成一套导航网格的构建系统

像左边的是unity

右边的是虚幻

以及它通常也会提供一套

基于导航网格的寻路的算法

我们能够它提供一套

能够计算出我们去到某个点

它所经过了其中的一些中间的一些

它的一些路径出来

然后是移动

这种移动只得有好几种

移动可以分为单体移动群体移动

以及带阵型的移动

这里展现的是一种

类似于群体移动的它的一个表现

大家可以看到它在移动当中

它会有一些

它会有一个

它并不是一个体性的移动

它会有一些群体的表现在上面

它会

互相之间会有一些斥力

然后他会朝着一个人物的移动方向

这个是Fortnite(堡垒之夜)

上面它的一个

做的一个虚幻四的一个

群体移动的一个组件

它做了一个功能

最后是动作

它会根据

既然我们挑了位置

要去往那方面去走

我们要有一个动作

来表现出它的一些具体的行为

然后我们会根据动作树去混合出它的

游戏角色它的一个动作的表现

像走跑跳、站蹲趴等等

游戏程序设计课程列表:

第一章 《游戏开发导论》

-1. 1什么是游戏(上)

--1.1 什么是游戏(上)

--选择题

-1.2 什么是游戏(下)

--1.2 什么是游戏(下)

--选择题

-1.3 游戏是如何开发出来的

--1.3 游戏是如何开发出来的

-1.4 游戏引擎(上)

--1.4 游戏引擎(上)

-1.5 游戏引擎(下)

--1.5 游戏引擎(下)

--单选题

-1.6 如何成为一个游戏开发者

--1.6 如何成为一个游戏开发者

--多选题

第二章 《游戏服务器概述 》

-2.1 什么是游戏服务器

--2.1 什么是游戏服务器

--单选题

-2.2 游戏服务器的和分类发展

--2.2 游戏服务器的和分类发展

--单选题

-2.3 核心技术和实现难点

--2.3 核心技术和实现难点

--单选题

-2.4 设计原理与方法论

--2.4 设计原理与方法论

--单选题

第三章 《《三维几何学基础》 》

-3.1 三维坐标系统

--3.1 三维坐标系统

--多选题

-3.2 向量与运算

--3.2 向量与运算

--单选题

-3.3 矩阵与线性变换

--3.3 矩阵与线性变换

--双选题

-3.4 四元数

--3.4 四元数

--多选题

第四章 《游戏循环及实时模拟》

-4.1 游戏循环概述(上)

--4.1 游戏循环概述(上)

--多选题

-4.2 游戏循环概述(下)

--4.2 游戏循环概述(下)

--单选题

-4.3 《无尽之路》的实现

--4.3 《无尽之路》的实现

--单选题

-4.4 支撑游戏的功能

--4.4 支撑游戏的功能

--选择题

-4.5 支撑游戏的机制与系统

--4.5 支撑游戏的机制与系统

--多选题

第五章 《随机数在游戏中的应用》

-5.1 基本介绍

--5.1 基本介绍

--单选题

-5.2 随机数生成器

--5.2 随机数生成器

--单选题

-5.3 随机数分布与应用

--5.3 随机数分布与应用

--单选题

第六章 《游戏性系统》

-6.1 什么是游戏玩法开发

--6.1 什么是游戏玩法开发

--单选题

-6.2 建立愿景 Vision

--6.2 建立愿景 Vision

--单选题

-6.3 划定边界 Scope

--6.3 划定边界 Scope

-6.4 迭代 Iteration

--6.4 迭代 Iteration

--单选题

-6.5 迭代 Iteration+抛光Polish

--6.5 迭代 Iteration+抛光Polish

--单选题

第七章 《实时图形渲染管道》

-7.1实时图形渲染管道 宏观渲染系统

--7.1实时图形渲染管道 宏观渲染系统

--单选题

-7.2实时图形渲染管道 应用阶段

--7.2实时图形渲染管道 应用阶段

--单选题

-7.3实时图形渲染管道 几何阶段

--7.3实时图形渲染管道 几何阶段

--单选题

-7.4实时图形渲染管道 光栅化阶段

--7.4实时图形渲染管道 光栅化阶段

--单选题

-7.5实时图形渲染管道 总结 参考

--7.5实时图形渲染管道 总结 参考

第八章 《材质着色与光照》

-8.1 物理回顾1

--8.1 物理回顾1

--单选题

-8.2 物理回顾2

--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.2 游戏动画介绍

-9.3 动画技术类型

--9.3 动画技术类型

--多选题

-9.4 骨骼蒙皮动画

--9.4 骨骼蒙皮动画

--多选题

-9.5 动画流水线

--9.5 动画流水线

--多选题

-9.6 动画前沿趋势

--9.6 动画前沿趋势

--多选题

第十章 《网络同步技术》

-10.1 .基本概念

--10.1 .基本概念

--多选题

-10.2 设计目标

--10.2 设计目标

--多选题

-10.3 传输数据分析

--10.3 传输数据分析

--多选题

-10.4 常用同步方案 1

--10.4 常用同步方案 1

-10.4 常用同步方案 2

--10.4 常用同步方案 2

-10.4 常用同步方案 3

--10.4 常用同步方案 3

-10.4 常用同步方案 4

--10.4 常用同步方案 4

--多选题

-10.5 方案对比

--10.5 方案对比

--多选题

第十一章 《游戏常用几何学》

-11.1 基本图元

--11.1 基本图元

--单选题

-11.2 图元距离(上)

--11.2 图元距离(上)

--单选题

-11.2 图元距离(下)

--11.2 图元距离(下)

--单选题

-11.3 图元相交测试+ 其他几何方法

--11.3 图元相交测试+ 其他几何方法

--单选题

第十二章 《游戏物理模拟》

-12.1 著名物理引擎介绍

--12.1 著名物理引擎介绍

--单选题

-12.2 物理引擎原理(上)

--12.2 物理引擎原理(上)

--单选题

-12.3 物理引擎原理(下)

--12.3 物理引擎原理(下)

--单选题

-12.4 游戏中的物理体

--12.4 游戏中的物理体

--单选题

-12.5 物理引擎使用入门

--12.5 物理引擎使用入门

--单选题

第十三章 《开发工具 》

-13.1开发语言

--13.1开发语言

--单选题

-13.2 开发环境

--13.2 开发环境

--单选题

-13.3 腾讯开发组件介绍

--13.3 腾讯开发组件介绍

--单选题

-13.4 网络通信+业务框架介绍

--13.4 网络通信+业务框架介绍

--多选题

第十四章 《分布式系统设计 》

-14.1 进程间通信(上)

--14.1 进程间通信(上)

-14.2 进程间通信(下)

--14.2 进程间通信(下)

-14.3 通信格式

--14.3 通信格式

-14.4 并发模型

--14.4 并发模型

-14.5 超时处理

--14.5 超时处理

-14.6 大系统小做(上)

--14.6 大系统小做(上)

--多选题

-14.7 大系统小做(下)

--14.7 大系统小做(下)

-14.8 架构层面的技术支持(上)

--14.8 架构层面的技术支持(上)

--单选题

-14.9 架构层面的技术支持(下)

--14.9 架构层面的技术支持(下)

-14.10 分布系统的关键能力

--14.10 分布系统的关键能力

--多选题

第十五章 《游戏人工智能》

-15.1 游戏人工智能综述

--15.1 游戏人工智能综述

-15.2 人工智能在游戏中主要方法 上

--15.2 人工智能在游戏中主要方法 上

--多选题

-15.3人工智能在游戏中主要方法 (下)

--15.3人工智能在游戏中主要方法 (下)

-15.4 人工智能在游戏制作中的应用领域1

--15.4 人工智能在游戏制作中的应用领域1

--多选题

-15.5 人工智能在游戏制作中的应用领域2

--15.5 人工智能在游戏制作中的应用领域2

-15.6 人工智能在游戏制作中的应用领域3

--15.6 人工智能在游戏制作中的应用领域3

--多选题

-15.7 人工智能在游戏运营中的应用实践(上)

--15.7 人工智能在游戏运营中的应用实践(上)

-15.8 人工智能在游戏运营中的应用实践(下)

--15.8 人工智能在游戏运营中的应用实践(下)

--多选题

第十六章 《游戏支撑系统 》

-16.1 游戏支撑系统(1)

--16.1 游戏支撑系统(1)

--单选题

-16.2 游戏支撑系统(2)

--16.2 游戏支撑系统(2)

--单选题

-16.3 游戏支撑系统(3)

--16.3 游戏支撑系统(3)

--单选题

-16.4 游戏支撑系统(4)

--16.4 游戏支撑系统(4)

--单选题

-16.5 游戏支撑系统(5)

--16.5 游戏支撑系统(5)

第十七章 《游戏逻辑服务器和反外挂》

-17.1 游戏逻辑服务器(上)

--17.1 游戏逻辑服务器(上)

--单选题

-17.1 游戏逻辑服务器(下)

--17.1 游戏逻辑服务器(下)

-17.2 外挂与反外挂(上)

--17.2 外挂与反外挂(上)

-17.2 外挂与反外挂(下)

--17.2 外挂与反外挂(下)

--多选题

第十八章 《运行环境和运维 》

-18.1运行环境

--18.1运行环境

--多选题

-18.2物理部署

--18.2物理部署

--多选题

-18.3系统的可运维性

--18.3系统的可运维性

--多选题

-18.4运维案列分析

--18.4运维案列分析

--多选题

1.5 游戏引擎(下)笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。