ClashRoyaleAi
开源的《皇室战争》强化学习模拟器,使用C++17重写游戏战斗引擎并通过pybind11暴露Python接口,遵循Gymnasium API标准,支持PPO智能体训练与自博弈联赛
时间轴 (近 90 天)
开发者制作了一个可以在浏览器里直接训练的迷你版《皇室战争》AI智能体实验室页面
浏览器实验室使用的模拟器引擎是从C++编译成WebAssembly的,与训练完整智能体所用的是同一套引擎
迷你版智能体采用带per-spawn baseline的REINFORCE算法,共5,629个权重
整个学习器约350行纯JavaScript,每一个梯度都手写实现,不依赖任何机器学习库
完整版皇室战争AI采用了带循环网络的PPO(recurrent PPO)
在巨人对加农炮对局中,把加农炮直接放在进攻路线上只能拿到最优得分的约75%,最优解是放在中路将巨人拉进两座塔的攻击范围内
使用恒定熵奖励时网络在6次运行中有5次卡在次优解,将熵系数在前1万次尝试中从0.1退火到0.005后卡住情况降到6次里只有1次
战车对瓦基丽武神对局被刻意锁定,作者尝试的每种设置都只能拿到最优得分的55%,该问题尚未解决并向社区开放
完整智能体要打整场比赛,管理4张手牌与圣水资源,使用循环PPO,并在CPU上训练数天
迷你版与完整版的核心循环完全一致:行动→让引擎评分→更新
还有 14 条时间轴事件
全部知识事实 (20)
实验室与完整项目的代码均已开源,托管于GitHub仓库itzik123/ClashRoyaleAi
50%待验证浏览器实验室使用的模拟器引擎是从C++编译成WebAssembly的,与训练完整智能体所用的是同一套引擎
50%待验证迷你版智能体采用带per-spawn baseline的REINFORCE算法,共5,629个权重
50%待验证整个学习器约350行纯JavaScript,每一个梯度都手写实现,不依赖任何机器学习库
50%待验证完整版皇室战争AI采用了带循环网络的PPO(recurrent PPO)
50%待验证在巨人对加农炮对局中,把加农炮直接放在进攻路线上只能拿到最优得分的约75%,最优解是放在中路将巨人拉进两座塔的攻击范围内
50%待验证使用恒定熵奖励时网络在6次运行中有5次卡在次优解,将熵系数在前1万次尝试中从0.1退火到0.005后卡住情况降到6次里只有1次
50%待验证战车对瓦基丽武神对局被刻意锁定,作者尝试的每种设置都只能拿到最优得分的55%,该问题尚未解决并向社区开放
50%待验证完整智能体要打整场比赛,管理4张手牌与圣水资源,使用循环PPO,并在CPU上训练数天
50%待验证迷你版与完整版的核心循环完全一致:行动→让引擎评分→更新
50%待验证开发者坦诚当前智能体尚不算强,一次从零开始的完整训练仍在进行中
50%待验证项目的 docs/DECISIONS.md 文档记录了研发中的踩坑,包括奖励作弊、有偏的自博弈零假设和折扣视界短于对局时长的问题
50%待验证ClashRoyaleAi 模拟器通过 pybind11 将 C++ 引擎暴露给 Python 调用
50%待验证项目代码已在 GitHub 开源(github.com/itzik123/ClashRoyaleAi),大部分卡牌逻辑借助 Ambash 构建,并使用 AI 编程工具作为结对编程助手
50%待验证该模拟器覆盖截至 2026 年 7 月游戏内的全部卡牌,包括 132 张普通卡与 41 张进化卡
50%待验证该模拟器保证确定性并支持设定随机种子
50%待验证在笔记本单核上跑完一整场对局仅需约 10 毫秒,snapshot() 接口能在 7–20 微秒内 fork 出游戏状态
50%待验证该环境遵循 Gymnasium API 标准,观测空间是 13,977 维的浮点向量,并纳入了对手已出牌的历史记录
50%待验证动作空间要求智能体先选择卡牌,再从 612 个格子中选择放置位置,并配有合法性掩码约束非法操作
50%待验证该项目智能体采用递归 PPO 方案,网络结构为 CNN + LSTM,参数量约 185 万,仅在 CPU 上运行
50%