当前课程知识点:游戏程序设计 >  第十五章 《游戏人工智能》 >  15.4 人工智能在游戏制作中的应用领域1 >  15.4 人工智能在游戏制作中的应用领域1

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

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

下一节:15.5 人工智能在游戏制作中的应用领域2

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

15.4 人工智能在游戏制作中的应用领域1课程教案、知识点、字幕

各位同学

刚刚两位老师也已经给大家讲了一下

一些游戏AI的一些综述

以及游戏AI里面

常用的一些算法

然后我这边了

主要针对

棋盘游戏和赛车游戏这两大类游戏

然后给大家讲一些

相关的一些具体的一些做法

首先

我们先讲棋牌游戏

棋牌游戏AI其实大家都比较好

可能日常生活里面可能接触比较多啊

我们看一下

棋牌游戏AI有哪一些

我们其实常见的就是像复杂到围棋

然后慢慢到象棋

以及最简单的像我们的井字棋

这些都是棋盘游戏

然后它特点了

其实就相当于两个人对战

然后我走一步

你走一步

这种是回合制的

然后我们可以看一下

大家都知道 各位同学有没有玩过这个井字游戏

应该都知道怎么玩是吧

OK 我们看一下

以这个井字游戏为例

我们请一位同学可以

讲讲他在这里面去怎么玩的

如果说你作为红方啊

在这面

你作为红方

你下一步你会走到哪里去

要么这位同学

如果是你作为红方的话

你怎么想

内侧中心

走这里是吧OK

那为什你会走这里

你怎么思考的

你应该说你是怎么一步去思考的

你为什么说你

你觉得走这里

你会不会在

在这个过程中

你会不会尝试一下

我在脑海里面先想一下我走这一步的时候

怎么走对方怎么走

假设下一步对啊

对方只要走那的话我就死了

那如果说你走的这一步是吧

你觉得对方会走哪里

走这里是吧OK

为什么你会觉得他走这里

他为什么就不走上面呢

还是假设

就假设他不走那了的

那我下一步走我就赢了

像刚刚那个同学

我们举个例子

我们在这里面这个是

刚刚说的这个过程吗

如果说我们假设我

我走了这一步

那对方有可能就走这里了

然后我就输了

是吧OK

那如果说

同样的道理

我们是不是也可以尝试走这里

然后对方也可以走这里

我也输了了

所以说

我们可以我尝试过所有的方法之后

然后发现

只有我走这里的时候

对方下一步

不管他走哪里

他都赢不了我

是吧OK

那我走完了之后

这个时候我们也会想

对方会怎么走

像刚刚的同学说

对方一定会走这里

为什么一定会走这里

他也会想说

如果说他走这里的时候

对方就红色这方走这里

然后他自己就输了

然后他也会去一步步去尝试

这个就是我们平常

下棋的一个思考的过程啊

然后这样的话

其实我们可以想一想

刚刚我们思考的过程

其实就是一棵树状结构

我们可以看一下

对一个棋盘游戏AI来说

我们怎么去建模怎么去思考

我们可以看一下

刚刚我们说的那个过程

其实就是我们游戏

棋盘游戏或说游戏AI里面

常用的一个方法叫博弈树

例如当前是这个状态

我们举个例子

就是这个状态是吧

我们对于我自己来说

我是玩家一

我红色方是吧

我可以选择有很多步可以走

然后我就可以有

我们列举一下这个红色的这一方

它可以有很多步骤

然后我走完之后

我们棋盘已经转化成新的一个状态

然后到了新的状态时候

其实我们也会猜想

玩家二他会怎么走

然后我们可以列出所有的

一步步往下走

然后这样的话

我们不断的往下扩展的话

我们就可以扩充出一个很完整的一个

博弈树

然后这里面其实

我们刚刚也说到啊

说我会输是吧

为什么我会输

其实这个时候我们应该会看到

如果说绿色方填在这里的时候

其实我们会对自己

对这个棋盘的盘面会有个估算

就像我什么情况下我是有优势的

如果说我举个例子

我们下象棋的时候

可能我还没有输

但我们知道

因为如果说象棋的话

它状态空间很大

这种情况下

其我们不一定说

一定可以想到想象的到

我最终的结果

所以说我们会去有个叫

局面评估函数

去评估当前这个盘面

对于我来说他的分数是多少

我举个例子

以红色方为例

像这个盘面是吧

如果说对于我来说

下一步我就可以赢了

所以说我的分数稍微比较高的

如果说

是这种盘面的话

其实就是刚刚这个盘面

对方下一步他就赢了

所以说

对于我来说

我的分数是比较低的

所以说我是一个负的十分

如果说这种牌面红方

我作为红方

我已经赢了

我已经连成三个了

所以说我给它一个很大分数

我输了

我给我一个很底的分数

这个就是一个棋盘的一个评估函数

当我们围棋或说象棋的话

他有各种根据我的当前剩下的棋的数量

以及我当前的

各种还有多少步可以走赢之类的

其实都可以作为我们计算这个评估函数的一个

因子

可以这样说

那我们作为一个棋盘游戏的话

其实我们的目标就是说在这里

在这个博弈树的这么多个分支里面找到

我下一步

在这一步里面我应该选择哪一步

这里面我应该选择哪一步OK

我们看一下

刚刚有说我们会去想我走

我怎么走

以及我会想对方怎么走是吧

OK我们看一下

第一个我们先看一下一层博弈树的时候

我们该如何说游戏很复杂的话

其实博弈树会很深

那我们先看一下一层博弈树的时候

我们会怎么去选择

如果说对于我这个玩家来说

我可以有很多步

然后每一步

的评估函数对于我自己来说

分数分别是六分八分和四分

那这样的话其实很明显

我一定会选择

对于我分数来说

最高的那一步去走

所以说我们可以理解成在这里面

对于我来说

我就是求下面这么多个节点

里面最大的一个节点

就求MAX的节点

对这步来说

然后

如果说我们是两层的博弈树

我们又会怎么去选择了

我们可以看一下

我假设我已经走到这里

我们搜索

搜索这么多层是吧

这层是对于

对方来说

是我的敌方

然后它走了

走完之后

得出来的一个分数

我们注意一下这里面

其实这些分数

都是以我的角度来

以我的角度就说或者说

以红方的角度

对玩家一的角度来评估的

所以说

这些分数如果说越高的话

说明其实对于玩家二来说应该是越差

或者说这分数越低的话

对于我自己来说其实是越有利的

是不是可以理解

这个能理解是吧

OK好

那对于我来说

假设对方

在这个分支里面

他一定会去选择哪一条路

如果说是

对方的话一定会选择我

对于我来说

分数最低的那个路径是吧

所以说一定会他选择在这个路径

所以说在这一个在这一层的时候

其实我们是

求下面所有节点的最小的一个

一个分支

这个可以理解吧

然后如果说

我们可以认为

只要我走这一步

对方一定会走这一步

我走这一步

他一定会走这一步

我走一步

他一定会选择

一分的这个走法

那如果说

这种倒推的话

就变成我去选择

我去选择的时候

我一定会选择我最高的一个分数

所以说我也会去选择这条路径

这个过程就是

这个整个的一个过程

其实就是

棋盘游戏AI里面

最常用的一个叫Minimax的一个算法

其实写起来复杂度并不高啊

我们可以简单回顾一下

在这里面OK

我们求最小节点

然后再上一层

然后求最大节点

然后再上一层求最小节点

然后求最大节点

那这样的话

这个就是

多集成的

那这种情况下我们一定会走这一步

走这一步棋

然后这里面有个很大的问题就在于

我刚刚也说了

我们有一个评估函数

我们评估函数里面其实

像我们刚刚的井字棋的话相对来说

我们好去评估

但是如果说我们是围棋

或者说是象棋的话

我们要计算一个评估函数

可能会很复杂是吧

那我们有没有办法说

去减支

对着这个树来说

我们能不能去减少我们的搜索空间啊

在这里面其实就是有个叫

跟这个Minimax

的一个配套用的

我们叫AIpha-Beta的一个剪枝算法

其实这个算法相对来说

其实也不算复杂

我们可以简单讲一下

这面有几步 第一个

我们是采用深度优先

深度优先搜索的算法

我估计大家学过

算法的话

数据结构算法的话

应该都知道深度优先是吧

我们一棵树里面我们

按深度优先搜索的话

就先一个节点走到最下面

然后每个节点

初始化一个值叫

α和β

这两个值一个是最

一个是无穷小一个无穷大

如果说在Max节点里面

我们只能改AIpha值

如果说在Max的节点的时候

我们只能修改β值

如果当且仅当这个条件满足的时候

我们才往下计算

怎么理解呢

我们可以看一下

在这个过程中

我们

刚上一步

我们初始化完了之后

因为这个节点是最小的节点

我对于这个节点来说只能修改β是吧

所以说

在这个地方

我根据它的值来修改β

我们看一下

所以说我们就把β

改到这里来

3改到这里来

这个β

然后我们看一下

α是不是小于β

你如果是小于β的话

我们才计算另外一个分支

就这个分支

满足条件

我们看

我们继续算

然后但是17

是比β还要大的

所以说我们这种情况下我们不改这个β

这种情况下

我们继续往上走

然后往上走的话

你们看一下这个Max节点

我们只能修改α

所以说

这种情况下

我们把这个3往上传递

然后改了α值

因为我们在这个地方只能改

Max的是吧

然后满不满足

刚刚那个条件啊

α小于β

OK没问题

我们继续往下走

然后在这一步

到了2然后我们看一下2

然后往回缩

然后2的话要改只能改β

在这面只能改β

以后变成3和2 这种情况下

我们看一下α是不是小于β

其实已经不满足条件了

这种情况下的话

我们就可以把这个分支剪掉

就是这个过程

我们有兴趣的同学可以后面

课后慢慢去研究一下

我们可以看一下整个过程啊

整个过程的话

我们可以看一下

一路计算的话

我们可以看一下

在这里面的时候也是满足

刚刚那个条件

就是不满足α小于β

所以说我们后面的这个分支

这个分支这三个盘面

我们就可以不用计算了

我们可以看一下

总共下来

这里面我们可以减到了

我们这种情况下的话

我们只需要评估123456

6个牌面

然后原来这里我们可以看一下

有很多个牌面

我们要算

所以说这个就是一个α和β的一个减枝

可以减少我们的计算

好我们再扩充一下

刚刚

我们说到

博弈树我们博弈树的时候

其实我是需要我走一步

对方走一步

但是在围棋里面

我们会发现围棋的状态空间非常大

我们都知道我们为啥

AIpha Go是吧

我们都知道AIpha Go

为什么最近才会被做出来

会用深度强化学习来做

以前围棋的AI是怎么做的

其实以前围棋的AI也是用刚刚说的博弈树

但是呢

这里面有个很大问题

就是我们围棋AI里面的状态空间太大了

我们没办法

整棵树遍历下来

但是写评估函数又很难写

因为评估函数我们

其实做过围棋的人或者下过围棋的人

可能都知道

这个评估函数很难写

我很难去评估

这个盘面的分数应该给他多少值

所以说你评估函数不准的时候

你用刚刚的那些Minimax算法

其实是没有效的

那这里面我们怎么去做呢

这里面啊

就是讲到一个叫蒙特卡洛树

搜索的一个方案

首先给大家讲一下

什么叫蒙特卡洛

其实学过概率论

一定知道

我们通俗一点的说法就是大数原理

就相当于我抛个硬币是吧

正面和反面

我只要抛的次数足够多的话

正面和反面的那个比例一定是接近一比一的

我举个例子

我们怎么去求这个π是吧

圆周率怎么求呢

我假设我有个方的盒子

然后随机丢很多豆子进去

然后看一下

它落到红色区域就是一个四分之一圆

然后蓝色区域就是圆的外面

然后我们看一下

根据比例的话

我们就可以算出

就落在红色里面的豆子

和蓝色里面的豆子的比例其实我们

是可以求算出来

这个排的值得

它原理就是通过叫蒙特卡洛的算法

对其实就是我们平常说的叫大数原理

然后怎么去用这个方案呢

我们看一下

当我们假设我们

这个就是我们刚刚说的这个博弈树

当我走到这一步的时候

我要去估算这个盘面

假设这一步啊

我要去估算这个节点的盘面的时候

我们刚刚说的方式

可能就把这个盘面是吧

这个数组

我们怎么去建模的

把整个图像

或者说把这个数组丢到一个函数里面

然后它得出一个分数给我

但是这个我们刚也说了围棋的话

可能这样做是行不通的

对那怎么做呢

我们就以这个节点往下走

我假设他往下

我随机让他随即走

我让他随机走

走到底

不管他用任何方法就是

白棋和黑棋随机走

我都是记筛子

然后让他随机走

走到最后

我看他随机的情况下

这一盘是红方赢是白棋赢还是黑棋赢

然后我让他们

在这一个下面随机走

一万局

我让他走一万局

我就看这一万局里面

我们都是随机的

没有人去管他

都是完完全全随机的情况下

我们看一下

对于我来说

黑棋来说

我赢了多少局

假设一万局里面我赢了

我赢了九万局

然后对方赢了

就一万局里面我赢了九千局

他赢了一千局是吧

那这样的话

我就可以认为

这个盘面对于我来说

我可以给他估的一个分数叫

零点九

就我赢的概率叫90%

对用这样的一个方法来去减少

我们对围棋或说盘面的一个搜索的一个

盘面的一个估算函数的一个计算

这个方案大家了解吗

有什么疑问吗

OK

或者说整个棋盘游戏AI里面

我们主要方法我讲了

大家有没有什么疑问

OK那我们继续

接下来我们讲赛车游戏

各位同学有没有玩过

我们这款游戏就我们公司的啊

QQ飞车

有没有同学玩过QQ飞车手游

玩过是吧OK

你玩过的话

你有没有发现里面

你如果说让你去做一个AI的话

让你去做一个AI

去玩这个游戏的时候

你觉得应该要怎么做

我们

我们假设我们看一下一个赛车游戏

我们怎么去建模啊

首先

第一个我们做一个游戏的第一步

做一个游戏AI的时候

我们得想想它怎么建模

刚刚说

我们假设这个车是吧

然后这里面就是一个中间

这里就是我假设这是一条轨迹线

或说叫赛道的中线

我们就认为赛道的中线

我去往前采样一个点

这个我假设就是虚拟成我的一个目标点

然后我

车头和这个目标点

形成了一个夹角

如果说最简单的一个模型

是不是可以这样做

我车来到这里的时候

当我的这个夹角往右偏了多少度的时候

我就应该按右键

游戏程序设计课程列表:

第一章 《游戏开发导论》

-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运维案列分析

--多选题

15.4 人工智能在游戏制作中的应用领域1笔记与讨论

也许你还感兴趣的课程:

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