Post by

Heyyawn

AI Arena 游戏:新人入门教程

Published on

YakiHonne

Feb 4, 2024

为了即将到来的 Play-2-Airdrop 锦标赛

【本文内容速览】

  1. 简介
  2. 模型类型
  3. 训练(数据收集及参数设置)
  4. 查看概率:AI Inspector
  5. 对战
  6. 备忘单

一、简介

AI Arena 是首款融合人类与人工智能协作的游戏。

AI 通过“模仿学习”学会你的技能。

官方资料

  1. 观看文档中的 2 分钟视频,你将迅速了解游戏的基本流程。

  2. 官方 Discord(必进): https://discord.gg/aiarenaplaytest 获取最新公告或寻求帮助

  3. 官方 Youtube: https://www.youtube.com/@aiarena 因为游戏有内置教程,可选择观看视频。

游戏具体是在做什么的

  1. 尽管这游戏被归类于平台格斗游戏,但核心基于概率的策略游戏,
  2. 战士通过 AI Inspector 仪表盘上的概率来行动,与对手对战。
  3. 游戏不允许直接手动输入每个区域的概率,而是通过收集数据的方式输入信息,并通过参数调整,来建立模型。
  4. 数据收集仿效格斗游戏。但使用 Dummy(木桩) 即可完成训练。只要能完成游戏内的入门教程,就可以掌握游戏操作。

二、模型类型

在训练之前,有三种模型可以供我们选择:简单(Simple)模型类型、原始(Original)模型类型、高级(Advanced)模型类型。

建议在完成至少一次简单模型类型的模型训练后,对游戏有一定了解后,再尝试进阶使用高级模型类型。

ModelType

简单模型类型 Simple Model Type

简单模型类似于填表格,训练过程就像是将所有表格填满。

这个模型有 30 bucket(篮子)。每个 bucket 可以看作是:在特定情境下,告诉战士该采取什么行动。30 bucket,即 30 种情况。在同一个 bucket 内,方向或动作的概率都相同。

举例:我在舞台外,我应该怎么办 —— 参考“Recovery (you off-stage)”这个 bucket

全部 bucket 参见官方文档:

视频(无声音):所有 bucket 的训练全流程

游戏版本 2024.1.10。存档方式已过时。请参见游戏更新。

高级模型类型 Advanced Model Type

“原始模型类型”和“高级模型类型”是基于机器学习,也就是所谓的与人工智能相结合。

原始模型类型仅由一个 bucket 组成,即一整张地图。
如果需要让 AI 结合不同的场景学习,则需要选择 Focus Area(关注区域),让战士知道要关注的地方。
一个 bucket ,就意味着牵一发而动全身,一处的修改常常会影响到整个模型。所以有了高级模型类型。

高级模型类型可以视为是“原始模型类型”和“简单模型类型”的结合。
高级模型类型将地图分为了 8 bucket 。每个 bucket 里都可以使用 “Focus Area”
8 bucket 以及不同 Focus Area 的详细解释。
请参见教程页面(教程进入方式:在高级模型类型,完成训练后,Advanced Config 左上角的 “Tutorial”

Tutorial

三、训练(数据收集及参数设置)

训练流程:

  1. 收集数据
  2. 设置参数,进行训练并保存
  3. 重复第一步,直到完成模型。

简单模型类型的训练是最容易上手的,详细过程请参考上方的视频。

“Focus Area”参数的相互组合提供更多可能性,拥有更高的上限。原始模型类型潜力巨大,但难以控制, 因此本部分只介绍“高级模型类型”。

1. 收集什么样的数据

  1. 高质量:有目的性的收集数据。垃圾进,垃圾出。只收集需要的数据,不要胡乱收集。所以推荐只使用 Dummy 来收集数据。但也不必追求完美主义,通过参数调节,人工智能具有一定的容错性。
  2. 平衡:平衡数据集。简单理解为,在左边完成多少个,在右侧也完成相似的数量。虽然可以通过参数调节来解决数据集不平衡的问题(见下文),但建议在收集时,就不要留有这个问题。
  3. 适量:一场训练将包含很多单个动作。单个动作一般收集 1 - 10 次,个人倾向于将单个数据收集 2 - 3 次。如果一场训练效果不明显,会进行第二场(甚至第三场)相同内容的训练,但参数设置会不一样。

2. 收集什么(以及 Focus Area 的选择)

游戏动作仿效格斗游戏。由 4 方向 + 6 状态(Idle,Jump,Attack,Grab,Special,Shield)组成。其中,方向可以组合为↗、↘等。而这些方向和状态又可以组合成不同的动作。

要让“Focus Area”生效,你需要在训练中收集符合该参数的不同情况。比如 Distance to opponent,你需要收集离对手近的,也要收集离对手远的。
* 注:虽然可以分成多场训练,但在一场训练中就完成不同情况的训练,效果最好。

参考 Simple Config,将要收集的动作分类,可以根据游戏场景分为两类:“基于位置(Movement)”和“基于攻击(Combat)”

image

基于位置(Movement)

动作收集

当战士在舞台外,这时无论对手在那里,我们只要求战士回到舞台上以防止自杀。

此处涉及 3 个空中 bucket:5(接近爆炸区 Near Blast Zone)、7(舞台下 Under Stage)、8(舞台侧边 Side Of Stage)

image

* 注:背景来自前文提到的 Tutorial。图片中的箭头为动作方向,仅供参考。
* 注意:动作收集要干净,不要收集到离场的动作。

参数设置

Simple Config,可以直接选择 Simple Config 的“Movement"
但为了更好定制化,建议直接使用 Advanced Config。

  • Intensity: 将在后文单独介绍 Intensity 设置方法。
  • Buckets: 如上图,你训练的是哪个 Buckets,就选择哪个 Bucket。
  • Focus Area:基于位置的参数:
    • Your position(必选)
    • Raycast Platform Distance,Raycast Platform Type (可选。一般在 bucket 7 要选这些)

基于攻击(Combat)

目标是使攻击迅速而有效地朝向对手,这部分是游戏策略的核心。

此处涉及 5 bucket:

  • 2 个普通状况
    • 在空中:6(安全区 Safe Zone)
    • 在地上:4(对手激活状态 Opponent Active)
  • 3 个在地上的特殊状态:
    • 1 特殊技激活状态 Projectile Active
    • 2 对手被击飞 Opponent Knockback
    • 3 对手晕倒 Opponent Stunned

2 个普通状况

image

在入门教程中,我们学习了如何进行横向攻击。然而,在实际游戏中,方向扩展到 8 个维度。想象有 8 个相对位置可以用来对对手发起攻击,我们的任务是设计每个相对位置应该使用什么动作进行攻击或防守。

Focus Area

  • 基本(一般全选)

    • Distance to opponent
    • Discrete Distance:选择该项能更好地区分与对手的远近关系。如上图所示,红色表示相对较近的距离,绿色表示相对较远的距离
    • Angle to opponent
  • 进阶:其他常用参数

    • Direction:与对手的 4 个面向
    • Your Elemental Gauge 和 Discrete Elementals:考虑到技能的蓄力
    • Opponent action:对手的动作。战士会根据对手不同的动作做出反应。
    • Your action:你的上一个动作。如果教连招要选这个。

3 个在地上的特殊状态

Projectile Active,Opponent Stunned,Opponent Knockback
这三个 Bucket 可以参考简单模型类型的视频。参数设置的思路和 Opponent Active / Safe Zone 的相同

其中 Projectile Active 除了“基于攻击”的参数,为了跟踪 Projectile ,还要选择“Raycast Projectile Distance”和
“Raycast Projectile On Target”

3. Intensity 的设置

资料


太长不看版:

Epochs

Epochs 小,经常就没学会,让它少学一点,就把这个调小。想让它学多一点,调大。

Batch Size

  • 如果你觉得你收集的数据,精准,不够平衡,就把他调小(拉到最小,用 16)。或者想让它学得快,也是调小。
  • 如果收集的数据有一点点不精准,但平衡,就调大(比如 64)
  • 如果不精准、也不平衡,就重新训练。

Learning Rate 学习率:

  • 让它学得多一点,但可能把之前学的忘了,拉到最大,用 0.01。
  • 让它学得准确一点,可能没学会,但对之前学的影响会小一些,把数值调小。

Lambda

要学新东西,让它把过去学的忘掉一些,数值调小。

Data Cleaning 数据清理

Remove Sparsity 开启。
除非希望 AI 学会闲置。

* 进阶:如果需要闲置的特例,让战士学会发特殊技:英文讲解视频:

个人经验

第一次最重要的训练我用 125 16 0.01 0 0,Remove Sparsity 开启。 优先选择 Multistream,有时选择 Oversampling。
同一个 bucket,之后的几次训练会依据以上理论来微调。

四、查看概率:AI Inspector

仪表盘由“方向+动作”组成
仪表盘上方查看“下一个动作(Next Action)”——在处于地图状态下所做出的动作。
概率越高,做出该动作的可能性越大,也意味着越快做出反应。
值得注意的是,查看方向(Direction)时,图片上占比最高的未必是数值最高的,应当将鼠标移至图形上,如下图,此时最大方向是闲置(Idle)。

image

在地图中,拖动战士可以查看战士在不同位置上的概率。
鼠标右键战士,更改战士的朝向。
下方状态盘可以更改战士在地图上所处的状态。

image

如训练“Opponent Stunned、Opponent Knockback” bucket, 需要选择对手状态盘下方的状态。
如果在 Focus Zone 有关注“对手动作(Opponent action)”,选择对手状态盘的动作
如果在 Focus Zone 有关注“你的动作(Your action)”,选择你自己状态盘的动作
训练 “Projectile Active” Bucket 要将仪表盘右侧的弹丸拖入,来检查状态

更进一步

概率越大,反应越快。但是也要小心动作概率达到 100% 。这可能会导致战士处于“State Transition”的特殊情况,导致战士出现不必要的“闲置”。

解释:
在战士所处的每种状态下,都有不同的“可能转变”状态。例如,在跌倒状态下,你无法进行低扫,因为低扫要求您位于地面上。对于盾牌状态,我们不允许你直接过渡到头撞(Headbutt)。因此,如果要进行头撞,你必须先退出到另一个允许你进行头撞的状态。
资料来源

五、从对战中学习

完成所有训练后,你的模型初步完成,恭喜!战士将独自登上竞技场,开启首秀!

下一步,我们将从对战中了解战士的优劣之处,以便继续完善战士的模型。

在比赛中,除了欣赏战绩之外,关注以下几点:

  1. 基于位置,即场外: 观察战士是如何被击杀的。是由于某个位置的动作设置问题,还是因为百分比太高导致的正常死亡。前者是我们需要避免的,需要进行优化。

  2. 基于攻击: 根据战斗回放,仔细分析双方的动作。观察在某个状态下自己使用了什么动作,对手又使用了什么动作。检查自己的哪些攻击效果较差?对手是如何处理不同的动作的?等等。

对战分析思路与“训练”阶段的思路相同,有助于更全面地理解战士的表现并进行有针对性的改进。

六、备忘单

训练

  1. 需要点击“Collect”来收集动作。
  2. “地图 - 数据限制”更加友好。大多数玩家会在“竞技场”地图进行初始训练。
  3. 在战士和木桩(Dummy)之间切换:Tab键(键盘)/Home键(手柄)。
  4. 使用“Collect”让对手循环某套动作。
  5. 让战士瞬移到某个地点:点击“设置” - SPAWN - 在地图选择要瞬移的位置 - On。在训练期间按下 Enter 键(键盘)/Start键(手柄)。

检查器

  1. 右键点击战斗者以改变他们的方向。拖动战斗者并查看战斗者在不同位置和方向的变化。
  2. 对训练满意时,要点击“Save”。
  3. 在“Sparring”和“Simulation”中,使用“Current Working Model”。
  4. 如果对某个模型满意,然后需要点击“compete”。在排名中使用的模型是“competing”。

Sparring 切磋 / Ranked 排名

  1. Throneroom 地图仅用于前2或前10名的排名。
  2. 比赛之间有 30 秒的冷却时间。任何比赛播放的都是回放。一旦战斗开始,您可以在排行榜或“右键点击页面 - 检查 - 控制台”中查看获胜者。另外,如果遇到任何错误或漏洞,请发送控制台的截图到 Discord 服务器。

祝你好运!竞技场上见!

0

1
0
0