莫要瞧不起土豆厂:游戏界最牛的AI就藏在他家
最近游戏界共有两个关于人工智能的大新闻。第一件是曾经开发了Alpha GO的公司DeepMind公布了他们进军《星际争霸2》的最新进展:暂时弃疗,短期内难有突破。DeepMind认为,基于现有技术想要让AI真正打《星际争霸2》是不可能的。这里说的“真正的打游戏”即DeepMind不是想做一个“疯狂电脑”,而是想做一个面对复杂且未知的环境真正拥有自我决策能力的“强力AI”。
为此,们尽可能地模拟人类,例如将《星际争霸2》的输出信号转换为二维图像,让AI“读屏幕”而不是直接读取底层数据。这导致出现各种奇葩状况,例如一条小狗进入战争阴影后再出现,AI就没法判断此小狗是否是先前的小狗。如果使用暴雪提供的可以直接读取单位属性API接口就不会有这种问题,但DeepMind不是为了打造一个能只打游戏的AI,所以选择了一条更难的路。
二维图像的《星际2》,也差不多是AI眼中的《星际2》
结果几番尝试后,他们发现基于现有算法的AI只能完成一些微观任务:比如寻路和控狗。一旦进行宏观的全局游戏,AI就没法实时处理如此庞大数据。自学的结果就是连简单电脑都打不过,最后只学会了一招“忍辱偷生”——升基地逃跑。所以DeepMind干脆公开了基于Python的封装的《星际争霸2》API接口,就相当于把研究设备给了所有人,让全世界的研究者集思广益以求得算法的突破。等于在说我不行了,谁行谁来吧。
第二件大新闻是OPEN AI开发的OPEN DOTA(以下以OD代称)在TI7总决赛上1V1影魔中路对决中暴打了Dendi,V社还放了一段视频证明OD同时也暴打了ATZ和Sumail等一众世界顶级中单。开发者在TI7舞台上称OD只学习了两周,但这话其实是随口跑火车。根据后续披露的资料来看从第一次能实战到击败Sumail OD共用了五个月——不过这也足够惊人了。
苏跳跳被AI暴揍,赛后他声称AI是不可战胜的
不过之后还发生了一个小插曲,在TI7期间的开放试玩中,玩家发现了各种可以战胜OD的野路子,比如开局勾兵、1级学影压和毒球鞋垫出门就会把OD带入未知领域,之后便能轻松击败OD。野路子战术的成功证明OD仍有缺陷,但它的进步速度飞快。Sumail在第一次对抗OD时2:1,第二天再战就被0:6剃光头。只要OPEN AI想,玩家的野路子第二天就会失灵。
因为勾兵被人类战胜后的OD一定是这么想的
但OPEN AI想要的显然不是这种你来挖坑我填土的模式。和DeepMind一样,他们不是为踢DOTA2玩家的屁股才开发OD,而是为了开发一个真正能适应各种场景的强AI。OD现在只能在,限定英雄、限定分路、没有神符、没有野怪、不能运瓶这样一个被严格控制变量的场景中对抗人类,而他们的最终目的是让AI打5v5的真正DOTA2比赛。至于哪一天才能做到?从官网文章的措辞来看,他们心里也没有X数。
国际象棋沦陷的时候,我没有发声,因为我不玩国际象棋;围棋沦陷的时候,我也没有发声,因为我不玩围棋;现在,AI开始进军DOTA2和《星际争霸2》了,虽然距离这两个项目沦陷还有很长一段路要走,但是狼真的来了。不过,就在DeepMind和OPEN AI还在死磕怎么让AI能在游戏里暴打人类的时候,有一家公司已经另辟蹊径,率先在游戏领域将人工智能实用化。猜猜这家公司是谁?
——法国土豆大厂育碧。
没错,就是我,萌萌的育碧啦!
游戏+AI=?
想到人工智能在游戏中的应用,很多人的第一反应都是设计一个AI和玩家对战。这就是因为媒体在报道上太过强调人与人工智能的对抗,也是因为人类又在一个项目被人工智能超越的标题天然抓人眼球,导致很多时候我们忘记了最初人们为什么要创造AI。
人类创造AI的目的,并不是为了让AI战胜人类,不是为了证明AI比人类更优越。而是为了帮助人类做到之前做不到的事情。育碧不是人工智能领域的领头羊,但他们却结合人工智能技术开发出了一款就某方面来说具有划时代意义的游戏。这款游戏你可能已经玩到了,而且你绝对不会把超级AI与它联想到一起。
没点BUG你还好意思说自己是育碧家的?
乍听起来有些搞笑,《荣耀战魂》这样一款让玩家们拿着刀枪棍棒相殴的游戏是怎么和AI扯上关系的?为什么在游戏中完全感觉不到AI的存在感?难道是杂兵变聪明了?而它又是何德何能成了具有划时代意义的游戏?——有这种疑问很正常,玩家在游戏中感受不到AI的存在,是因为育碧将AI应用在了游戏最底层的部分——动作。
在2016年3月的游戏开发者大会(GDC)上,育碧的资深动画程序员Simon Clavet向所有人展示了育碧的一项黑科技,下一代人物动画技术:动作匹配(motion matching)。在当年十月份的“人工智能和互动数字娱乐会议(AIIDE)”上,Simon Clavet又做了长达一小时的报告,详细解释了这套系统,而最先应用动作匹配技术的游戏便是《荣耀战魂》。
育碧动画程式师Simon Clavet最早向大众介绍了育碧的黑科技
现阶段的人物动画技术是哪样?
要了解动作匹配技术究竟先进在哪,我们就要先知道现在的人物动画技术是什么样。我们如今在游戏中看到的人物一套完整动作,都是由预先准备好的数个动画片段组合而成。比如“冲过去两刀砍翻敌人”的动作,系统动画的播放顺序就是“跑-重击1-重击2-收剑”。
真实的动画都是来自真人动作捕捉,例如《巫师3》便是请来波兰的剑术家担任白狼的动捕演员。游戏动作捕捉不像电影记录整套动作,而是记录一个个动作片段,例如走、跑、蹲、跳、挥剑。这就是目前的主流技术,前期动作捕捉,在游戏里拼成一个完整动画,但这种模式也有缺陷。
这位负责白狼的动作捕捉,身法是不是很眼熟?
首先,一种动作要准备数个动画,因为准备少了玩家很快就会发现自己的战斗动作千篇一律。比如《刺客信条》(没错还是育碧),玩家只要负责按攻击/破防/格挡键,程序会自动分配连招动画。玩了一段时间之后你就会发现战斗其实就是QTE加上几套不断重复的处决动作。
其次,动作与动作之间如何衔接?没有衔接措施人物动作就会变成幻灯片。前一刻人物还在蹲着,下一刻就飞起来砍人。《真三国无双》直接从普通攻击动作“跳”进无双动画就是典型例子,酷炫但是和动作流畅已经不沾边了。无双属于把无衔接作为游戏机制的一部分,但如果所有动作之间都没有衔接人物动作就会变成鬼畜。
其实过去的街机游戏也很少有衔接动画,慢放就会很明显
所以要想动作流畅自然,必须要在两个动作之间准备过渡帧(动画)。过渡帧起到串联动画的作用,玩家输入操作A、B,程序就会依次播放A、A-B过渡帧、B。这只是最简单的解释,有时要根据上一个动作状态的不同要选用不同的过渡帧,一个动作可能会分出四个过渡帧,每一个动作帧衔接的动作又会分出N个过渡帧,这就是所谓的状态树。
第三个问题就是如果想要动作流畅,必须放完一段动画后才能放下一段动画。玩家给的操作指令要排队依次执行,谁也不能插队。最典型的例子就是魂系列,专治各种瞎按,这一剑挥出去了就只能等动画放完才能重新控制角色,这会让玩家感到一种惯性。一些格斗游戏中的“动作取消”其实就是直接结束当前动画播放下一个动画,会带来操作优势(连续技)但导致人物动作不流畅,会出现跳跃式动作。
“动作取消”这个概念最早诞生在街霸2,原本是一个BUG
另外多说一句,动作流畅和打击感、爽快感其实是两码事。为了流畅度强制播完动画会让玩家感到操作的迟滞感,而《鬼泣》的每一个攻击动作都能取消前一个攻击动作的打击后帧,反而会产生一种“我不知道但丁是怎样做出这种动作,但我打的很爽”的感觉。在一些游戏中,格挡/弹反能够强制取消任何动作并立即切入格挡/弹反动画,很突兀但配合音效会让人感觉很爽。例如《命运之手》的反击、《罗马之子》的格挡、《刺客信条:黑旗》的防反,玩家可以无限反击/格挡/防反。
人物动画虽然有动作捕捉辅助,但也要靠后期手工调整。过渡帧很难靠动作捕捉捕捉获得,几乎全靠动画师手工制作,成本很好。理论上人物动画和过渡帧越多,动作就越自然。但限于成本不可能准备无限多的过渡帧和动画,光是少量动作的排列组合所产生的过渡帧数量的爆炸,所以现阶段游戏人物动作仍然很难做到真正流畅。
《黑旗》的特点是无论当前在执行什么动作,都能优先发动防反
AI加育碧,大力出奇迹!
回到我们上一个话题:育碧的动作匹配技术究竟黑科技在什么地方?它允许玩家从一个动画直接跳到另一个动画。《荣耀战魂》最初立项时,育碧希望创造出一种能精准控制的真实流畅的操作体验,即人物动作既要真实流畅,还要能对玩家的操作做出即时反馈。
在旧的人物动画技术里,即时反馈和真实流畅本身就是矛盾的:前者意味着玩家任何时候按下按键都会有动作反馈,即玩家能随时改变角色动作,中止当前动画播放;后者则要求必须放完一整段动画才能过渡到下一段动画。这个自相矛盾的要求,却能被育碧的动作匹配技术完美解决,这就是动作匹配厉害之处。
即时反馈和真实流畅原本是一对不可兼得的属性
育碧的灵感最初来自Lucas Kovar十年前的论文,当时Lucas Kovar认为可以事先准备好一大段未预先处理的动作捕捉数据,通过机器学习中的增强学习技术让计算机自己合成最合适的动画和过渡。机器学习是人工智能的主要实现技术之一,深度学习/神经网络就属于机器学习的分支。Lucas Kovar的思路就是先给人工智能一些动作的半成品,让人工智能学会自己“合成”动画。
十年前Lucas Kovar认为这项技术暂时没法实现,因为这意味着要实时处理海量的数据,无论是当时的增强学习算法还是主机内存都没法满足要求。换句话说,那个时候人工智能的智商还不够,就算有够先进的人工智能游戏主机也跑不起来,所以革命目标只能指望下一代主机实现了。
十年前,就AI能算得动主机也带不起来
不过十年后,育碧把Lucas Kovar的想法拣了起来,重新试了一下,结果惊喜地发现……还是不行。数据量还是太惊人了AI处理不过来。但如果不是让AI合成动画,而是让AI负责生成状态树,让AI去挑选合适的过渡动画和动作呢?Lucas Kovar的想法是给AI半成品让AI自己组成动画,既然这个任务目前对AI太难,那就简化任务,让AI不必负责生成动画,只要负责“剪辑”就可以了。
这,就是动作匹配技术的精髓,在人工智能的辅助下,让人物动画随时可以从一帧跳到另一帧。动作匹配的流程是这样的:不再记录动作捕捉演员单个动作片段,而是记录一整段动作。比如走这个动作,会让动作捕捉演员绕场走数圈,争取将各种形态的“走”在一整段“3D录像”中记录下来。
动作匹配记录的便是这样整段的数据
而在游戏中,如果玩家下指令让角色从“走”切换成“跑”,AI会根据当前人物的姿势和运动参数在“跑”的录像中一帧一帧地挑选,直到找出一个最合适最能无缝衔接的一帧“跑”图像,再从该帧开始播放跑的动画。这项技术被Simon Clavet戏称是“大力出奇迹”(惊人的愚蠢和野蛮的解决方法)。
虽然我的描述比较简单粗暴,但“大力出奇迹”只是最基础的思路——实际上育碧在此基础上又付出了很多很多的汗水,比如寻找动作匹配时人物姿态和速度、加速度等参数的最佳权重比、如何平衡真实感和舒适感、不断优化算法以节约内存、通过预测玩家下一步动作以提高响应速度、微调部分动画已获得更流畅的效果。而且由于AI(准确说是算法)具有学习能力,它吃的数据越多,响应速度就会越快,动作就会越流畅。
本质上来说仍不算AI生成动画,但相比旧技术已经是飞跃般的进步
这项技术有一个小缺点,因为所有的动作都是AI“剪辑”而成,有无数种可能的复杂动作组合,这导致测出所有BUG是不可能的(土豆厂:我们BUG多,真不是没有原因的)。所以某些没有测试到的地方就会有不自然的动作出现,实际开发中育碧也要不断地填坑(加入新的动作捕捉数据)。但相对于这项技术的优点而言,缺点简直不值一提。
这项技术最大的优点就是成本低,不必再靠人工一点点制作状态树,也不必再录入单独的动画。所以育碧奢侈地为《荣耀战魂》中的每一个角色都制作了一套独一无二的动作,这在以前简直不可想象。其次,真实感。攻击、格挡、闪避等动作之间衔接的异常流畅,人物动作如丝般顺滑。(再次重申,真实感和打击感是两码事)
第三,响应速度快,流畅度超高的前提下响应速度只有0.3秒,真正达到了育碧想要的“精准控制”的目标,还有其他细微的优点不再一一列举。这些优点就是为什么育碧敢说动作匹配是“下一代人物动画技术的原因。”
动作匹配技术的另一段演示
动作匹配技术PLUS——神经网络动画技术
虽然用上了育碧的黑科技,《荣耀战魂》最后还是鬼服了。但这项技术却没有被埋没,目前育碧有数个正在进行的项目正在使用这项次时代技术。动作匹配技术不仅震撼了游戏界,其影响力甚至倒灌回了学术界。要知道动作匹配的理论依据都是现成的,学术界已经完成了大量的前置工作,但育碧首次证明了这项技术的实用性。
于是在2016年5月,爱丁堡大学的研究者Daniel Holden、Taku Komura以及来自企业的Jun Saito搞出了动作匹配技术PLUS版——神经网络角色动画生成技术。这个技术是真·AI生成动画,比育碧的黑科技还要黑。
这项技术的黑科技在于,它是真正在实时生成动画
研究者先通过动作捕捉数据制作一个大型数据库,不需要预先储存所有数据,设定播放哪一个动画片段。只要玩家输入指令,AI就会直接实时生成动画。他们用了两个小时记录了1.5G的动作捕捉数据,然后让AI自己学习了30个小时,然后制作了一段演示录像。
通过30个小时的学习,AI学会了如何将动作捕捉动画重新组合,并在游戏环境中生成动画。演示角色展示出了惊人的真实感,演示角色的小腿会适应凹凸不平的地表改变发力方向,演示角色会根据自身重心的不同活动胳膊平衡身体,爬斜坡时演示角色会弯腰采取爬的姿势。AI甚至突破了原有动作捕捉数据的限制,自发生成了新的动作。
请注意看他的腿部动作
应用这项技术,游戏角色的每一刻的每一个动作都是独一无二的。AI会根据环境调整每一个身体部位的姿势。1.5G的训练数据学习成果仅需要几十兆的储存空间,神经网络的决策速度大概在0.01秒左右。但神经网络暂时也有局限,比如在某些没有学习过的地形下,动画就会崩溃。动画师无法对输出动画进行二次修正,而且目前来看角色动作仍然有些粗糙。
但这并不妨碍游戏厂商们对开发出这一技术的研究者抛出橄榄枝,论文的第一作者Daniel Holden已经被游戏厂商高薪聘走。猜猜是那一家厂商?当然还是育碧。看来育碧是下定决心要保持自家在人物动画领域的技术领先地位了。
我大育碧人物动画技术世界第一一一一!!
其实将游戏与人工智能结合的努力从未停止过,比如在2000年E3上斩获数项大奖的《黑与白》的核心就是增强学习。玩家作为反馈者存在,让AI适应玩家从而培养出复杂生物表现能力的智能“神兽”,但实际效果不甚理想,因为一名玩家能给的样本太小了。DeepMind的SC2bot经过数百万次练习才学会忍辱偷生升基地逃跑,一个玩家能给出多少数据呢?
相比于让AI直接和人类产生交互,不如通过人工智能技术改善游戏的其他体验。毕竟这才是人类开发人工智能的目的——帮助人类,而不是和人类对打。至于下一款用到育碧黑科技的游戏,也许就正是《刺客信条:起源》?
如果AI真的都是爱酱这样的智障我想人类也不会有戒心了
招募野生写手!寻找游戏达人!快来参加爱玩百万稿费活动吧
游戏专栏投稿信箱:otaku@vip.163.com
欢迎关注爱玩APP【精选】板块,更多精彩等着你!