赣州新闻网

首页 / 科技

深度强化学习的人工智能在游戏中的运用:游戏AI入门及AI优化指南

2020-03-05 · 赣州新闻网 · 科技

作者:泪的天堂

深度强化学习的人工智能在游戏中的运用:游戏AI入门及AI优化指南


前言:


现如今,所有电子游戏都离不开AI的运用,对于游戏策划而言AI是什么,AI又是如何运作,可以说是面试时的加分项,本文在这里不探讨理论的_ , v A 8 0AI(采用深度强化学习的智能AI,如腾讯AI Lab、网易伏羲AI等),旨在分享现游戏领域广泛运} n _ Z % $用的AI,给新人策划针对游戏AI、游戏脚本有一个初步的了解。


(本文接下来不包括AI底层代码,AI工具开发等程序向内容,该部分在网络上已经有很多教程大家可以去学习,个人认为策划对于底层AI的具体实现是不需要了解的,而对于AI制作与优化是需要学习的。)


深度强化学习的人工智能在游戏中的运用:游戏AI入门及AI优化指南

本文的具体结构


一、AI的应用场景


人工智能开发是游戏研发中最具挑战性的任务之一,那么游戏中AI的具体使用场景在哪里呢?


深度强化学习的人工智能在游戏中的运用:游戏AI入门及AI优化指南

英雄联盟里怪物战斗AI、场景AI(作用于野怪刷新 z k , t f h N ;)、人机挑战中机器人战斗AI


除了大家熟知的LOL,3A大作里AI一般运用到哪里呢?


深度强化学习的人工智能在游戏中的运用:游戏AI入门及AI优化指南

巫师3中的NPC AI,怪物AI等AI运 e l T v @ ` K用基本可( Y 3 t + = a k以囊括现有A[ e cI的运用场景


从上面举的两个例子,已经可以看出现在制作游戏离不开AI。


二、AI通过什么方式进行设计?


现有游戏AI基本通过下面两个方式进行实现:行为树S Q @ 4 @ s o T(Behavior Tree)与有限状态机(Finite State Machines),那么下面我们就对于这两个实现方式进行探讨。


2.1 什么是有限状态机


“状态机”是一种表示状态并控制状态切换的设计模式,常常用于设计某种东西的多个状态。而有限状态机是指7 z f f { B X u ;游戏内的条件逻辑封装到各个状态类里。例如一个人有站立状态,跑动状态,走路状态,蹲下状态,开k 6 C 5火状态等_ 5 , ; A b H !,当一个事件发生O = _ ? P W,将会触发一个动作,或者执行一次状态的迁移。


但却有两个缺陷:


1. 各个状态类之间互相依赖很严重,耦合度很高。


2. 结构不灵活,可扩展性不高,难以脚本化/可视化。


下图是游戏中怪物入战的有限状态机,如果y 4 l ) z a u = y我们想对攻击敌人/追击敌人状态进行修改,是需要程序给我进行状态类中内容修改的。


深度强化学习的人工智能在游戏中的运用:游戏AI入门及AI优化指南


那如果我们可以把本来的巡逻、追击敌人、攻击敌人等状态先进行更细分的封装,是不是更好呢?那你就可以见到状态机如= N !下图一样的混乱,后期的维护基本很难进行。


深度强化学习的人工智能在游戏中的运用:游戏AI入门及AI优化指南


结合前面两种情况,我们又可以发现,使用有限q . z状态机,策划不能充分参与其中,只能由程序员来完成,这会增加程序员的工作量。


综上所述:在游戏开发中使用状态机显然不失为一种选择,首先它的概念并不复杂,其次它的实现也十分简单而直接,所以当一个简单的npc所需AI,使用状态机是完全可行的。


但它的缺点却也十分明显,* % : p 6 e ~ | k例如难以复用,因为它往往需要根据具体的情j 5 N 5 C况来做出反应,当然当状态机的模型复杂到一定的程度之后,也会带来实现和维护上的困难。


而现D y y在行为树比有限状态的几个优势F ^ t { d = [ F:


1. 行为树提供了强大的灵活性,很容易更改行为树的结构,也易于后期的维护与扩展;


2. 在程序开发了元件后,逻辑层面全部交给了策划,减少程序员工作量的同; z 6 F Q时,让策划也可以进行AI问题的初步排查。


正好弥补了我们上面所说的状态机的缺点,那么接下来我8 W . U Q来以达到非常真实的AI行为。开发过程是高` G , j ? ^ L V度可迭代的,你可以先排出一个基础的行为树,然后创建新的分支来处理各种达到目标的可选方案,h A ^ P `这些分支按照它们的优先级排列,这样AI在一个特定的行为失败可以回溯到另一个策略,这是行为树巨大优势所在。


现在的很多项目[ K , T就是Lua做逻辑开发,下图分享一o i w 6 , # A w 下项目中使用g X &的Lua版本行为树。


Lua行为树$ h 3执行上图状态机的相同AI功能:


深度强化学习的人工智能在游戏中的运用:游戏AI入门及AI优化指南


如果对于上图,一个简单的行为树看不懂的话,可以阅读行为树的工@ r 作原理:


AI 行为树的工作原理 - GameRes游资网www.gameres.com


在例子中,行为树的优点是逻辑直观、一目了然,策划可以借助工具直接配置,不需要程序介! w { @ c B . F %入。而缺点则是树分支数量庞大,每次遍历寻找合适节点的过程g V ; s e _ s ) s j一套流程下来后,AI就可以拿到NPC相应的Action,而具体需要触发喊话,还是打伞,躲雨等动作,简1 v ~ ; ]单的写出行为子图即可。


3.2 机器人AI


机器人AI,在这里不是指传统RoboH _ & c / ~ W rt的AI,而是指游戏中各种活动需要,而生成的玩家镜像机器人的AI。


在制作机器人AI,首先要知道机器人AI设计的主要目标:


◆ 模拟玩家进行对战,用于PVP破冰和体验提升。


◆ 新手过渡,让玩家体验活动时,培养成就感,避免尚未熟悉游戏导致的挫折流失。


◆ 陪伴玩家,用强度合理的AI8 = 8 # d { -来陪伴玩家r t z M参与活动,减少玩家单人参与的有损体验。


那么机器人AI所需要参考的具体内容是哪些呢?


如果按照功能点维6 5 E T T E度,游戏中运` j & 用到的机器人战术一] . 般分为三种:


◆ 单体战术AI——AI的战斗细节


◆ 事件响应AI——AI对于事件的响应


◆ 协同战术AI——AI能够互相配合9 Q ` T ` a


而机器人本身一般需要涵盖以下特性:


◆ 流畅性——技能释放与衔接,追击与逃跑等战斗效果。


◆ 拟真度——符合常识的PK反馈,让玩家没有违和感。


◆ 环境适应——机器人能够适应游戏内不同情境/活动的需要(机器人的广度)。


◆ 难度可 e 2 A U K调——机器人的n - * H 3 ]难度(战斗能力)可调(机器人的深度)。


那么你具体的优化方向就可以往三种战术、四种特性上扩展,以《英雄联盟》与《逆水寒》为例:


《英雄联盟》


单人战术:濒死逃亡,当电脑在较低血量会逃走。


事M D @ . s e b件响应:尾刀响应,玩家残血时,电脑会感知到,并I 4 K b使用全图技能进行攻击;推塔响应:玩家推完一塔后,二塔电脑玩家都会响应前来防守;换线响应,上路机器人来中路: B @ U A ~ G & b补线的时候,原本中单机器人会前往上路。


协同战术:Gank行为:电脑帮助其他线玩家进行多打少局部战斗。


在上面的三种战术的具体实行中,单人战术大多仅需简单的配置,而像事件响应与协同战术需要更丰富的底层机制去支撑,一个协同战术就需要:Group机制(可以通过发送MesC n | i q y 3 0 hsage来控制)、目标选择机制、追击与逃跑机制等的支撑。


《逆水寒》


虽然逆水寒机器人是深度学习AI进行控制,但其表现仍然可以用在很多先用的MOMORPG之中。


深度强化学习的人工智能在游戏中的运用:游戏AI入门及AI优化指南

逆水寒机器人中一些出彩的机器人AI


以上就是机器人AI部分的分享,D r - G } 4 8 D s具体机器人AI的Lua行为树该怎么写,这个反而应该~ R 4 ; O 便阅读并理解其中逻辑含, - | 8 ] * A p义省去了很多重复的逻辑元件运用(castSkillAll应该为一: | R t ^ % u张子图,这里就简( 8 ? 3 r $ y z _单合并为一个元件)。


深度强化学习的人工智能在游戏中的运用:游戏AI入门及AI优化指南

一个简单的BOSS AI子图


在上图中,需要注意以下几点对你撰k / + _ x Y 6 1写AI子图会逻辑清晰以及方便很多:


1.return- X Q O L 0 _ U YBattle,在我们平时撰写AI中,我+ ~ ] u D M }们总会把线迁回到一开始,完成一个闭. } s环,让整个怪物Ai z 5 k J d OI循环起来,这样做法没有错,但是循环再复杂BOSS本身会造成难以阅读、修改等成本,让程序直接创建一个回到战斗的元件,整个流程图线性铺开,十分利于阅读G f W O L Y ` ^ 0。


2.putNewAction,G @ ^ V o O n 5 :有的怪 y v ; G i K Z物AI会把不同血量怪物掌握的不同技能再写一遍,这h N b O p样的作法十分冗余,也让AI逻辑不利于阅读,利用插入优先行为的形式,在技能达到触发条件时,插入到怪物的技能列表里,让整个怪物逻辑更加清晰。


3.SkillFlag,起到的是保护作用,; : Q 5 ` ^ g设置E N b } 4这样一个参数,是为了当新技能不会被重7 = 8复加入,第一次加入技能后,该参数自动变化,后面不会再插入该技能。


当然,在怪物 AI的子图中还有很多小细节需要注意,但篇幅有限,仅先展开到这里。


四、深度强化学习的人工智能在游戏中的运用。


这一部分仅仅作为简单的分享,本人也并没有制作深度强化学习人工智能的能力,在与该类AI合作的过程中,能够知道现在这类理论AI在游戏中能运用到什么水平。


4.1 深度学习的应用场景


深度学习机器人需学习、调整3个月左右(参照e E v ) = [简单RPG角色,时间受角色信息、样本数量、场地因素等等多方面限制),能够达到单人优秀玩家的水平。


深度强化学习的人工智能在游戏中的运用:游戏AI入门及AI优化指南

如果想见识AI能达到的水平,可以参考逆水寒的流派挑战


至于简单的多人合作也可以做到,但是复杂场景中理论AI的运用会受到很高的局限性。


所以AI在游+ d R & x M g戏中以Lua行为树的形式存在应该还要很久,当然你也可以采用理论AI配合脚本AI的形式,所有玩法形式都由脚本控制,载入战斗状态时调用理论AI即可。Y p M c _ S (


PS:本文只是浅度分析了y O , S一下游戏中的AI,具体AI的设计还是: M Y需要你自己接手项目,频繁练习后方能有更深u - = Q _ F [的感触,这里也只做抛砖引玉,欢迎坚持阅读到这里的朋友们在下方评论交流~


参考


《游戏人工智[ _ . Q U . n能》

https://baike.baidu.com/item/%E6%B8%B8%E6%88%8F%E* ` / V m4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/22147006?fr=aladdin

游戏状态机

https://www.cnblogs.com/KillerAery/p/10003678.htY M F ) wml#有限状态机fsm

AI行为树的工作原理

https://www.gameres.com/846263.html

MOBA英雄AI设计分享

https://cloc t F Dud.tencent.com/developer/article/1146677


专栏地址:

https://zhuanlan.zhihu.com/p/82567889

项目强化智能全南游戏学习人工智能人工优化