章节 01
导读 / 主楼:宝可梦对战AI:基于50万场对战的神经网络决策系统
一个Chrome浏览器扩展,通过拦截宝可梦对战协议、提取完整战场状态,利用深度为2的expectiminimax搜索和神经网络评估,为玩家提供实时最优行动建议。
正文
一个Chrome浏览器扩展,通过拦截宝可梦对战协议、提取完整战场状态,利用深度为2的expectiminimax搜索和神经网络评估,为玩家提供实时最优行动建议。
章节 01
一个Chrome浏览器扩展,通过拦截宝可梦对战协议、提取完整战场状态,利用深度为2的expectiminimax搜索和神经网络评估,为玩家提供实时最优行动建议。
章节 02
章节 03
这是一个专为宝可梦Showdown随机对战设计的Chrome浏览器扩展,能够在对战中实时分析战场局势并给出最优行动建议。项目结合了博弈树搜索、贝叶斯推断和神经网络评估,展示了如何将复杂的AI技术应用于游戏辅助场景。
章节 04
系统采用多层架构,从页面注入到神经网络评估形成完整的数据处理链:
hook.ts (页面层) → bridge.ts (内容脚本) → sw.ts (服务工作线程) → eval-worker.ts
├── minimax.ts (搜索算法)
├── learned-eval.ts (ONNX神经网络)
├── features.ts (206维特征提取)
├── damage.ts (@smogon/calc伤害计算)
└── opponent-model.ts (贝叶斯对手建模)
↓
overlay (Preact, Shadow DOM界面)
hook.ts(页面层): 直接注入到宝可梦Showdown页面,拦截app.receive()函数以捕获对战协议消息。
bridge.ts(内容脚本): 作为页面层与扩展之间的桥梁,转发状态数据并挂载UI覆盖层。
sw.ts(服务工作线程): 协调消息路由,将任务分发给各个处理模块。
eval-worker.ts(Web Worker): 在独立线程中运行搜索和评估,避免阻塞主线程。
章节 05
状态提取:系统通过拦截对战协议提取完整的战场状态,包括:
贝叶斯对手建模:这是系统的核心创新之一。由于随机对战中对手的宝可梦配置是随机的,系统采用贝叶斯集合收窄策略:
这种建模方式允许AI在信息不完全的情况下做出更准确的决策,类似于扑克AI中的对手建模技术。
章节 06
系统使用深度为2的expectiminimax算法进行决策搜索,结合了alpha-beta剪枝优化:
Expectiminimax的特点:
Alpha-beta剪枝: 在搜索过程中剪除不可能影响最终决策的分支,大幅提高搜索效率。尽管搜索深度仅为2,但结合强大的评估函数,已经能够产生高质量的建议。
章节 07
叶节点的评估由一个多层感知器(MLP)神经网络完成:
特征工程:系统提取206维特征向量,涵盖:
神经网络架构:
ONNX运行时:模型导出为ONNX格式,使用onnxruntime-web在浏览器中进行实时推理,无需服务器端支持。
章节 08
数据来源:
训练流程:
# 1. 下载对战回放
python -m scraper.download_replays --count 100000
# 2. 提取特征
python -m features.extract_features --input data/replays --output data/training_data.npz
# 3. 训练模型
python -m train.train_model --data data/training_data.npz
# 4. 导出ONNX
python -m export.export_onnx --model models/value-net-v1.pt --output ../models/value-net-v1.onnx
技术栈:
@smogon/calc: 官方伤害计算库@pkmn/data: 宝可梦、技能、特性数据onnxruntime-web: 浏览器端神经网络推理preact: 轻量级UI框架vite: 多入口扩展构建工具