ARM技术论坛
直播中

发生的方式

8年用户 1190经验值
擅长:处理器/DSP
私信 关注
[经验]

如何开发Arm博士的Boss战演示功能的

今年我们展示了一款名为“Dr Arm”的可玩游戏演示,您可以在其中与使用Unity 机器学习代理工具包 (ML-Agents)实现的游戏 AI 进行对战。我们创建了这个游戏演示来展示机器学习 (ML) 如何使 Arm 平台上的游戏受益,以及游戏开发人员如何创造性地使用这项技术。

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

Arm博士的Boss战演示

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

在这个演示视频中,我通过游戏控制器手动控制 Dr Arm。我们实现的游戏 AI 控制着骑士角色。底部的红色仪表是老板角色的生命值(HP)。左上方的仪表显示 Arm 博士的统计数据。同样,红色仪表表示健康。蓝色显示法力 (MP),当你投掷火球时会消耗。战斗中无法恢复生命值和法力值。绿色仪表显示耐力,剑攻击和滚动等动作会消耗耐力,但会随着时间的推移而恢复。正如您在视频中看到的那样,我们准备了一个具有不同难度级别的游戏 AI,如简单、中等和困难。该游戏可以部署到 Windows on Arm (WoA) 设备和 Android 手机。

图 4. 游戏截图

Windows on Arm 上的游戏开发

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

图 5. GDC 上在 Arm 上的 Windows 11 上运行的代理训练

ML-Agents 进行一对一的战斗

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

在我们的一对一 Boss 战斗演示中,我们想要训练骑士角色。但骑士 不仅遇到了环境动态,还遇到了人类玩家 Arm 博士。因此,您可以将 Arm 博士视为环境。他的行为会影响下一个状态和骑士获得的奖励。这意味着当我们训练骑士特工时,我们需要 Arm 博士作为骑士的对手。

图 6. Agent 不仅与环境竞争,而且与目标竞争

Arm博士的相对力量也会影响训练的结果。这意味着,如果阿姆博士太强,骑士特工想要从零开始提升太难了。另一方面,如果 Arm 博士太弱,骑士会学会取胜——但他们将无法与更强大的对手竞争。我们需要一个技能大致相同的对手。它应该具有挑战性,但不要太具有挑战性。

此外,由于我们的代理在每场新游戏中都会有所改进,因此其对手也需要改进。如果我们考虑一下,Knight 代理本身就满足这两个要求。确实,它几乎一样熟练,并且随着时间的推移也在改进。如果我们不将 Arm 博士视为代理人,我们将不得不在训练期间使用它。它不会使培训过程自动化,并且需要人力和时间。此外,不能保证在训练期间手动玩 Dr Arm 会提高每场比赛的技能。因此,让 Arm 博士也接受代理培训是有道理的。

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

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

这种训练设置称为对抗性自我游戏。Adversarial Self-Play 是两个具有反向奖励信号的交互代理的设置。例如,在零和游戏中,当一个代理收到正奖励时,竞争代理收到负奖励。通过拥有完美匹配的对手,它可以让代理人变得越来越熟练。这是DeepMind训练 AlphaGo 时采用的策略 。

原作者:三海幸树

更多回帖

发帖
×
20
完善资料,
赚取积分