麦斯科技 · 2022年08月07日 · 四川

第1部分:Arm上的Unity ML代理以及我们如何创建游戏AI

https://community.arm.com/arm-community-blogs/b/graphics-gaming-and-vr-blog/posts/1-unity-ml-agents-arm-game-ai

作者:Koki Mitsunami 2022年7月8日

介绍

2022年3月,游戏开发者大会(GDC)(https://gdconf.com/)在美国旧金山举行,这是视频游戏开发者最大的活动之一。近年来,出现了一些重要的研究,将游戏AI推向了新的方向,使其更逼真、更具挑战性和更有趣。今年,我们展示了一个名为“Arm博士”的可玩游戏演示,您可以在其中与使用Unity机器学习代理工具包(ML代理)实现的游戏AI进行游戏(https://unity.com/products/machine-learning-agents)。我们创建了这个游戏演示,展示机器学习(ML)如何为Arm平台上的游戏带来好处,以及游戏开发人员如何创造性地使用这项技术。

我们的游戏表明,ML在各种基于Arm的设备上都能正常工作,包括移动设备和笔记本电脑。在这个博客系列中,我将解释我们是如何开发这个演示的。第1部分提供了演示的一般概述。我们希望这个博客系列能让许多游戏开发者对机器学习技术感兴趣,并鼓励他们在游戏开发项目中尝试机器学习。

0486.MLAgents_5F00_GDC.jpg

图1:GDC Arm展台上的ML代理演示

Arm博士的Boss战斗演示

演示是“Arm博士和机器学习骑士!”一场传统的一对一在一个大城堡房间里进行的Boss战斗。在游戏中,GDC的参与者控制玩家角色Arm博士。他们的目标是击败游戏AI控制的机器学习骑士boss角色。Arm博士是Mali Manga
漫画中的一个角色,出现在我们的内部游戏中。(您可以从这里下载完整的漫画,还可以了解我们的Mali GPU技术)。

6076.DrArm.png-1265x0.png

图2.Mali漫画中的Arm博士(左)和Arm内部游戏的屏幕截图,Arm博士的惊人冒险(右)

让我们看看演示是什么样子。

屏幕截图 2022-08-07 231831.png

图3.Arm博士的boss战斗演示

在这个演示视频中,我通过游戏控制器手动控制Arm博士。我们实现的游戏AI控制骑士角色。底部的红色标尺是boss角色的生命值(HP)。左上角仪表显示Arm博士的状态。类似地,红色仪表表示健康。蓝色显示法力(MP),当你投掷火球时消耗。战斗中无法恢复生命值和法力值。绿色仪表显示耐力,用剑攻击和滚动等动作将消耗耐力,但会随着时间恢复。正如你在视频中看到的,我们准备了一款难度不同的游戏AI,分为易、中、难。该游戏可以部署到Arm上的Windows(WoA)设备和Android手机上。

4503.Screenshot.png-1265x0.png

图4.游戏截图

基于Arm的Windows游戏开发

除了可玩的演示,我们还展示了游戏AI代理训练可以在GDC的Windows on Arm设备上运行。在撰写本文时,Unity Editor不支持Arm64体系结构,但Windows 11支持x64仿真。这意味着与x64机器上相同的设置也可以在Windows on Arm上正常工作。这样,下图显示Unity Editor运行时没有任何问题,代理可以在WoA笔记本电脑上进行培训。我们相信WoA将在更多领域得到应用。

2110.UnityonWoA.jpg

图5.GDC上Windows 11 on Arm的代理训练

一对一战斗的ML代理

Unity的ML代理允许游戏开发者在游戏和模拟中训练智能游戏AI代理。这样,您就不再需要对角色进行“编码”。你可以通过强化学习(RL)让他们“学习”。我们在之前的博客文章中已经解释了ML代理的基本机制,Unity的官方文档对此进行了详细描述。Unity还使用ML代理发布了几种类型的示例项目,可以作为实现的参考。在本系列博客中,我们将重点介绍如何使用ML代理实现此游戏演示。

在我们的一对一boss战斗演示中,我们想训练骑士角色。但骑士不仅遇到了动态环境,还遇到了人类玩家Arm博士。所以,你可以把Arm博士看作是环境。他的行为影响下一个状态和骑士获得的奖励。这意味着当我们训练骑士代理时,我们需要Arm博士成为骑士的对手。

RLEnv (1).png-1265x580.png

图6.代理不仅与环境竞争,还与目标竞争

Arm博士的相对强度也影响训练结果。这意味着如果Arm博士太强大,骑士代理很难从头开始改进。另一方面,如果Arm博士太弱,骑士会学会获胜——但他们将无法与更强的对手竞争。我们需要一个技能大致相当的对手。它应该具有挑战性,但不过于具有挑战性。

此外,由于我们的代理在每一场新比赛中都有所提高,因此他的对手也需要提高。如果我们考虑一下,骑士代理本身满足这两个要求。事实上,它几乎同样熟练,而且随着时间的推移也在不断提高。如果我们不把Arm博士视为一名代理,我们将不得不在训练中使用它。它不会使培训过程自动化,需要人力和时间。此外,也不能保证在训练期间手动玩Arm博士可以提高其在每场比赛中的技能。因此,让Arm博士也接受代理培训是有意义的。

总之,创建游戏的第一步是将两个角色作为代理一起训练。在这一步中,我们给这两个字符相同的代理代码,这意味着它们具有相同的神经网络(NN)模型结构。该代理代码通过Unity的communicator和ML代理API与PyTorch的后端通信。然后他们一起训练他们。当他们足够聪明时,我们将Arm博士更改为可由游戏控制器控制。在游戏时,代理仅控制骑士,并使用代理的训练神经网络模型。

TwoPhases (1).png-1265x647.png

图7.代理训练和游戏的两个阶段

这种训练环境称为对抗性自我游戏。对抗性自我游戏是由两个相互作用的代理以反向奖励信号进行设置。例如,在零和博弈中,当一个代理收到正奖励时,竞争代理收到负奖励。它可以让一个特工通过拥有完美匹配的对手而变得越来越熟练。这是DeepMind培训AlphaGo时采用的策略(https://www.deepmind.com/research/highlighted-research/alphago)。

在第2部分中,我将更详细地探讨代理的设计。看看这里。https://community.arm.com/arm-community-blogs/b/graphics-gaming-and-vr-blog/posts/2-unity-ml-agents-on-arm-how-we-created-game-ai

推荐阅读
关注数
5858
内容数
525
定期发布Arm相关软件信息,微信公众号 ArmSWDevs,欢迎关注~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息