0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

大量游戏中使用的人工智能概念

zhKF_jqr_AI 来源:未知 作者:李倩 2018-08-20 08:44 次阅读

介绍

本文将介绍大量游戏中使用的人工智能概念,你将会了解解决AI问题有哪些可用的工具,它们是如何一起工作的,以及你将如何在所选语言或引擎中实施这些工具。

本文需要你对游戏有基本的理解,同时掌握一些数学概念,例如几何、三角函数等等。其中举出的代码例子都是虚拟代码,所以不用具备特别的编程语言水平。

什么是游戏AI

游戏AI主要解决的是游戏人物根据当前条件应该做出哪些动作。传统AI环境中所指的智能体通常是游戏中的人,但现在也可以指一辆车、机器人或更抽象的,例如一群目标对象、一个国家或人口。它们都需要观察周围的环境,并基于环境做出决定、执行动作。通常这一过程是感知/思考/行动的循环。

感知(Sense):智能体检测或被告知环境中有可能会影响其动作的物体(附近有危险、要捡的物品、需要查看的地点)

思考(Think):智能体要想出应对方法(比如要选择一个安全的时机捡东西,或者决定是先攻击还是隐藏)

行动(Act):智能体将之前的决策付诸行动(例如开始向敌人或目标物体移动)

环境变化,在新数据下重复这一循环……

在现实AI问题中,大部分公司重点关注的是“感知”这一环节。例如,自动驾驶汽车必须给前方道路拍照,并将其与雷达或LIDAR数据进行对比,之后尝试解读它们看到了什么。这通常由机器学习方法来完成。

游戏却不同,因为它们不需要复杂的系统来提取信息,因为大部分信息都在模拟系统内部。我们不需要运行图片识别算法来发现敌人的位置;游戏知道敌人在哪,可以直接将信息反馈给决策过程。所以游戏中的“感知”环节比较简单,难的是后两步。

游戏AI的发展限制

游戏中的AI通常会面临以下几种限制:

通常不会像机器学习算法那样“预训练”;写一个神经网络观察上千名玩家并学习是不现实的,因为这种方法在游戏还未发布的时候根本无法进行。

游戏应该提供趣味性和挑战性,而不是追求“最优”。所以即使智能体的水平能超过人类,也不会是设计师追求的目的。

智能体还不能太“机械”,要让对手真的认为他的队友是“人”而不是“机器”。AlphaGo虽然厉害,但与之交手的选手们都觉得它下棋的方法很不寻常,感觉像和外星人对战。所以游戏AI也要调整得更“拟人化”一些。

要支持实时处理,算法不能长时间占用GPU就为了想出对策。10毫秒已经过长了。

理想的系统是数据驱动而不是硬编码,这样即使不会编程的人也能做出调整。

有了这些原则,我们可以开始看看在感知、思考、行动循环中所使用的简单AI方法了。

基本决策制定

让我们以简单的游戏《乓》为例,要保证乒乓球可以弹到球拍上,如果掉落就算输了。AI的任务就是决定球拍的移动方向。

硬编码条件语句

如果我们相用AI控制球拍,那么最直接最简单的方法就是尝试让球拍一直位于乒乓球的下方。当球接触球拍后,球拍的位置就是合适的。

用虚拟代码表示:

every frame/update while the game is running:

if the ball is to the left of the paddle:

move the paddle left

else if the ball is to the right of the paddle:

move the paddle right

这种方法太简单了,但是在代码中:

“感知”部分有两个“if”语句。游戏知道球和球拍的位置,所以AI询问游戏二者的位置,从而感知到球的运动方向。

“思考”部分同样在两个“if”语句之中。它包含了两个决策,最终会决定向左、向右或不移动球拍。

“行动”表现在代码中就是向左或向右移动。但是在其他与戏中可能包括移动的速度。

我们将这种方法称为“reactive”,因为规则很简单。

决策树

乒乓球游戏也可以用决策树模型进行可视化:

第一眼看去,你可能觉得决策树和if语句没什么区别。但是这个系统中,每个决策都包括一个精确的条件和两种可能的输出,可以让开发者不用硬编码就能从代表决策树的数据中搭建AI。用简单的表格来描绘决策树是这样的:

如果样本很多,决策树真的非常强大,可以高效地进行情境分辨。

脚本撰写

设计AI的人员可以根据自己的想法安排决策树,但是他们必须依靠编程人员提供的所需条件和动作。如果我们给设计人员更好的工具,可以让他们创造自己的条件,那会怎样呢?

编程者可以将条件(判断球在球拍的左边还是右边)换成某项值,决策树的数据看起来可能像这样:

跟上面的表格相同,但是决策有它们各自的代码。更进一步,将这样的表达方式(用脚本语言而不是数据)带入逻辑结论也是可能并且常见的。

对事件做出反应

以上的乒乓游戏中,核心思想就是不断运行三步循环,并根据上一步的环境状态采取行动。但是在更复杂的游戏中,与评估各项条件相比,更多的是对情况做出反应,这在游戏场景的变换中是很常见的。

比如在一项射击游戏中,敌人首先是静止的,一旦他们发现了玩家,不同角色的敌人就会采取不同行动。冲锋兵可能会向玩家攻击,狙击手会位于后方准备射击。这也是基本的应对系统,但是它需要更高级的决策过程。

高级决策制定

有时,我们想根据智能体目前的状态做出不同的决策,对决策树或脚本来说,条件过多时就无法高效地运行。有时,我们要提前思考并估计环境会如何变化,所以就需要更复杂的剞劂方法。

有限状态机(Finite state machine)

一个有限状态机(FSM)指的是某个物体,例如AI智能体,目前处在某个状态中,之后会转移到另一个状态中。由于状态的总数是有限的,所以称为“有限状态机”。现实中此类例子是红绿灯。

在游戏中,让卫兵巡逻、攻击或逃跑等动作可以用简单的if语句表示。但是如果加上状态,例如游荡、搜查、跑步寻求救援等动作,if条件句就会变得很复杂。考虑到所有状态,我们列出了各状态之间需要的过渡状态。

用可视化图表示:

层次状态机(Hierarchical state machine)

你也许注意到上表中有些过渡状态是相同的游荡状态中的大部分过渡和巡逻中的状态相同,但最好是互相区分开。游荡和巡逻都是非战斗状态下的一部分,所以我们可以看做它的“子状态”:

主要状态

非战斗状态

可视化

行为树(behavior trees)

在决策过程中,有个小问题,即过渡原则和当前状态紧密相关。在很多游戏中,这种方法没为题,使用上述层次状态机还能减少重复。但是有时你想有一种通用的规则,不需要考虑状态。例如当智能体的健康值减少到25%,你可能想赶快逃跑。当设计师把这一数值降到10%时,你可能会改变所有相关的过渡状态。

对于这种情况,理想状态下需要一个系统,该系统决定哪些状态可以在另一些状态之外存在,以便能在一个地方正确转换。这就是行为树(behavior tree)。

部署行为树的方法有很多,但是核心思想都相同:算法开始于一个“根节点”,树中的各个节点表示决策或动作。例如前面提到的卫兵层次状态机,用行为树表示:

你可能会发现,这个树中从巡逻状态返回到游荡状态没有过度,这时就需要引入无条件的“重复”节点:

行动和导航

我们有了乒乓球拍移动和卫兵作战的例子,但是我们要怎样真正地在一段时间内让它们移动呢?如何设置速度、如何躲避障碍、设计线路等等?这一部分我们将详细讲解。

控制

从基础层面来说,我们可以认为每个智能体有自己的行动速度和方向,它们会在思考阶段计算速度和方向,在行动阶段执行。如果我们知道智能体的目的地,就可以用等式表示:

desired_travel = destination_position – agent_position

但是,在更复杂的环境中,简单的等式是处理不了的,也许速度过慢、智能体会在半路遇到障碍等。所以,有时需要考虑加入其他值,让行走动作更复杂。

找路

在网格中,如果要走到目的地,要先看看周围可以移动的网格。下图是一个简单的搜索动作案例,首先从起点开始搜索,知道找到目的地,再规划路线:

但是,这种寻找方式好像太浪费了,扩展了很久才找到最佳路线。下面这种方法在找路时,每次只选择目标坐标方向的最佳方块,从而能减少很多候选方块:

学习与适应

虽然文章开头我们提到,游戏AI不常用到机器学习,但是我们从中也可以有所借鉴,在设计类游戏或对抗类游戏中也许有用。例如在数据和概率方面,我们可以用朴素贝叶斯分类器来检查大量输入的数据,并尝试分类,让智能体对当前情况做出合适的反应。在预测方面可以用到马尔可夫模型等等。

知识表示(Knowledge representation)

我们已经讨论了做决策、计划、预测的各种方法,但是如何才能更有效地掌握整个游戏世界呢?我们应该如何收集并组织所有的信息?如何将数据转化成信息或知识?各种游戏的方法各不相同,但是有几种相同的办法可以使用。

标签

将用于搜索的碎片化信息打标签,这是最常见的方法。在代码中,标签常用字符串表示,但是如果你知道所有使用的标签,你就能将字符串转换成唯一的数字,从而节省空间,加速搜索。

智能目标

有时,标签不足以涵盖所有需要的有用信息,所以另一种存储信息的方式就是告诉AI它们的备选项,让它们根据需要选择。

回应曲线

回应曲线,简单地说就是它是一张图,输入用x轴表示,虚拟的值,例如“最近的敌人距离”和输出用Y轴表示,通常从0.0到1.0之间。该图表示了输入到输出之间的映射关系。

黑板

黑板,顾名思义,记录的是游戏中各个参与者做出的找路动作或决定,其他人也可以使用其中记录的数据。

影像力图

游戏AI经常需要考虑向哪里移动等问题,这类问题通常可以看做是“地理”问题,需要了解环境的形式和敌人的位置。我们需要一种方法将地形考虑进去,对环境有个大概了解,影像力图就是为了解决这个问题做出的数据机构。

结语

本文对游戏中使用的AI进行了大致讲解,它们的使用场景都很有用,其中的一些技术也许不常见,但是很有潜力。由于本文篇幅较长,我们并未对各项方法做详细介绍。感兴趣的同学可查阅原文。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程语言
    +关注

    关注

    9

    文章

    1878

    浏览量

    33062
  • 人工智能
    +关注

    关注

    1776

    文章

    43824

    浏览量

    230574

原文标题:新手指南 | 游戏AI所需技术详解

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    人工智能是什么?

    海量的数据中通过不断优化的算法来组建适合的数据群组。单从这一点就可以看出,数据的大量积累也是需要经过长时间才能做到的,这也是为什么人工智能领域只有大公司、企业以及科研机构才能有时间、有金钱和精力去投入
    发表于 09-16 15:40

    人工智能技术—AI

      人工智能技术的概念从出来到现在已经有很多年的历史了,其实所谓的人工智能技术本身就是一种模拟人类大脑的思考方式的一种技术,它的英文简称是AI技术,在西方国家,人工智能技术被认为是计算
    发表于 10-21 12:03

    人工智能的前世今生 引爆人工智能大时代

    `昨天在论坛看了一个帖子一个故意不通过图灵测试的人工智能,在这之前我也一直对人工智能这一块很感兴趣,只是工作领域不涉及到这一块,并且一直觉得人工智能还离我们很遥远,看了昨天的文章,突然觉得说不定哪天
    发表于 03-03 11:05

    人类与人工智能机器人合作的前景

    的人之所以不会被机器人取代,因为他们总是自己创造工作。  第二种是用心提供服务的人。这类人永远不会被 人工智能行业云 所取代,因为机器人效率虽然很高,但是毫无温度。没有感情永远是机器的软肋,不能
    发表于 04-16 17:42

    3种适用于人工智能开发的编程语言

    了3种比较适用于人工智能开发的编程语言,希望能够对你有所帮助。PythonPython由于简单易用,是人工智能领域中使用最广泛的编程语言之一,它可以无缝地与数据结构和其他常用的AI算法一起
    发表于 09-12 10:45

    “洗牌”当前 人工智能企业如何延续热度?

    在少数的企业身上,强者恒强、弱者淘汰的局面已经形成。此外,截然不同的是,上至***机构下至平民百姓,对当下的人工智能项目不再盲目追捧,而是提出异议和担忧。9月20日,知乎用户质疑科大讯飞翻译技术“造假
    发表于 11-07 11:49

    解读人工智能的未来

    `已历经60多年的人工智能在物联网以及大数据的推动下,实现飞跃式的发展,并且迎来了第三个黄金周期。必优传感今天和大家解读一下关于人工智能的未来。自从有了人工智能,引发了人类的各种“未来论”。有人说
    发表于 11-14 10:43

    人工智能:超越炒作

    视为“强AI”。虽然专家们对是否能够实现强大的人工智能的问题存在分歧,但并不能阻止他们尝试。自2013年以来,人工智能的外部投资增长了两倍这项技术具有破坏性潜力的一个可靠指标是投资方面。根据麦肯锡
    发表于 05-29 10:46

    什么是基于云计算的人工智能服务?

    如今,采用人工智能的企业遇到了一个主要障碍,那就是在内部开发人工智能产品成本高昂,因此有了外包人工智能产品的需求。而对于从中小企业到预算受限的大型企业来说,通过云计算来采用人工智能的成
    发表于 09-11 11:51

    人工智能的应用领域有哪些?

    表明,到2030年,人工智能和机器人可能会减少全球多达30%的人类劳动,到2030年自动化将取代4-8亿个工作。1、机械加工机器人从事的零件铸造、激光切割以及水射流切割等工作;2、机器人涂装、点胶
    发表于 10-23 11:07

    路径规划用到的人工智能技术

    路径规划用到的人工智能技术二 人工智能编程语言/数据结构与算法三 人工智能基础原理四 智能信息获取(简称爬虫) 与数据分析1、发起请求3、解析内容4、保存数据二、Requests库介绍
    发表于 07-20 06:53

    人工智能芯片是人工智能发展的

    人工智能芯片是人工智能发展的 | 特伦斯谢诺夫斯基责编 | 屠敏本文内容经授权摘自《深度学习 智能时代的核心驱动力量》从AlphaGo的人机对战,到无人驾驶汽车的上路,再到AI合成主播
    发表于 07-27 07:02

    人工智能基本概念机器学习算法

    目录人工智能基本概念机器学习算法1. 决策树2. KNN3. KMEANS4. SVM5. 线性回归深度学习算法1. BP2. GANs3. CNN4. LSTM应用人工智能基本概念
    发表于 09-06 08:21

    什么是人工智能、机器学习、深度学习和自然语言处理?

    人工智能,在目前的关键时刻,是关于神经网络的。目前,人工智能使用与典型计算机相同的 CMOS 硬件。目前的人工智能专注于开发注入类人智能的算法功能。该学科的重点是通过
    发表于 03-22 11:19

    人工智能游戏

    游戏人工智能人工智能游戏中的应用和实践。通过分析游戏场景变化、玩家输入获得环境态势的理解,进而控制
    的头像 发表于 01-30 15:59 455次阅读