从“疾驰打脸”到研究所——以《影之诗》为例,如何从零构建卡牌游戏AI模拟器:方法、思路与理论

题材:《Shadowverse: Worlds Beyond》

研究套牌和操作,并不需要先做卡图、动画、语音和UI。

阅读功能说明

收听会朗读正文;速读会按顺序显示短语,速度可调。语言练习可对照已有的不同语言版本。收藏保存在本浏览器中,可从播放器的收藏列表再次打开。

分享这篇文章

分享这篇文章

广告
广告

先读这篇更容易理解: AI把工作时间缩短了40%,为什么我们不是提前下班,而是再塞进67%的工作?

1. 先决定目标——你是在做游戏,还是在做“研究怎么赢的实验室”?

研究套牌和操作,并不需要先做卡图、动画、语音和UI。

核心只有:

当前状态
→ 生成合法行动
→ 选择行动
→ 按规则更新状态
→ 下一个状态

一直到有人获胜。

真正要做的是只靠数字运行卡牌世界的实验室。

有可靠现成引擎就复用;没有,就先做最小正确规则。

2. 写代码前先定义输入和输出

输入:卡牌DB、40张套牌、对手、先后手、seed、policy、环境snapshot、对局数。

输出:胜负、回合数、matchup胜率、先后手差、最差对局、brick rate、缺关键牌的损失、常见错误、有效换牌。

模拟器先从问题开始。

3. 建卡牌DB——数据不是行为

保存ID、名称、职业、费用、类型、攻防、稀有度、卡包、规则文本、进化信息、关联卡、标签。

JSON或SQLite就够。

但是“入场曲:4伤”并没有实现目标选择、减伤、死亡触发和结算顺序。

DB收说明书,Rules Engine让世界按说明书运行。

4. 把游戏表示成state

state保存turn、active player、HP、PP、hand、deck、board、graveyard、Evolution、Super-Evolution、Crests、amulets、counters、temporary effects。

画面位置不重要,规则意义才重要。

5. Rules Engine就是“state A → action → state B”

出牌、攻击、进化、Act、选目标、结束回合、抽牌、PP回复、胜负判定全部都是状态转换。

Engine不需要聪明。

它必须在笨bot做合法动作时也正确运行。

6. 卡牌效果用通用规则+例外

建立damage、heal、draw、buff、summon、destroy、banish、Ward、Storm等通用功能。

特殊卡再override。

持续统计unsupported、partial、runtime gap。

研究中,停下来比偷偷猜行为更好。

7. 合法行动生成决定AI上限

生成可打出的卡、targets、attacks、Evolution、Act、end turn。

hold、draw-first、清自己场地格等也可能是正确候选。

先问:

正确行动有没有进candidate set?

8. seed、replay、hash保证可复现

固定seed,保存engine commit、DB hash、deck hash、policy hash、environment hash、schedule hash、seed hash。

同条件应重现同一局。

否则“AI变强”可能只是条件变了。

9. 第一版AI可以很简单

reference policy可以是:有斩杀就结束、快死就防守、按curve出牌、场面好打脸、场面差交换。

它的任务是成为稳定baseline。

10. 人类攻略应该是prior

利用换牌、留牌、EP/SEP、setup、swing turn、hand cap、board slot、future lethal。

不要做“永远留这张”的圣旨。

用hold_value、future_combo、survival、premature_spend等分数信号。

Guide是搜索地图,不是答案。

11. Tree Search、Beam Search、Node Budget

10个候选每层会变成10、100、1,000、10,000。

用depth、beam width、node budget、pruning控制。

别过早删除重要setup线。

把immediate、future、survival、setup、lethal、resource value分开。

12. 隐藏手牌:belief、POMDP、Monte Carlo

不允许policy直接看真实hidden hand。

用公开信息建立AoE 30%、Ward 20%、无关键牌50%这样的可能世界。

这就是belief。

问题接近POMDP,可以sample多种手牌,再重复模拟未来,使用Monte Carlo思想。

13. 大量模拟要做paired A/B

相同deck、opponent、first/second、seed,只换policy。

quick → development → unseen holdout。

大量样本的作用是公平比较时降低随机噪声。

14. 不只看胜率

看平均、meta-weighted、worst matchup、bottom average、variance、first/second gap、brick、key-card drop、turn、confidence interval。

CVaR看坏结果区域。

Bootstrap和McNemar帮助paired A/B。

15. 套牌优化是压缩搜索空间

无法穷举全部40张组合。

从真实套牌出发,做1~3张swap、role replacement、tech。

Double Oracle加入强counter。

PSRO用deck + policy作为策略。

No-Regret减少后悔。

Robust Optimization保护最差matchup。

16. 记录AI为什么输

Action Trace保存candidate、score、choice、objective、reservation、early combo spend、missed lethal、hand burn、board lock。

Ablation一次关一个部件。

Counterfactual从同一public state测试A和B。

这让分析从相关更接近因果。

17. 新卡包=新environment snapshot

保存环境、格式、合法卡包和各种hash。

对新旧DB做diff,只重算受影响的deck/matchup。

如果只改meta权重,就复用旧结果。

不要每个新包都重建实验室。

18. 架构小而CLI优先

分离upstream、deck、policy、simulation、diagnosis、statistics,以及config、data、reports、docs、tests。

CLI做status、doctor、db check、validate、simulate、experiment、optimize、diagnose、context。

Git保存manifest和紧凑结果。

GitHub是实验室的外部记忆。

19. 从零到一路线图

1 card DB
2 一局最小正确对局
3 legal actions/targets
4 seed/replay/hash
5 simple policy + 100 games
6 coverage
7 real decks + matrix
8 human prior
9 search + belief
10 paired A/B + holdout
11 deck optimization
12 diagnosis + expansion diff

别一开始就百万局、MCTS、强化学习全部上。

不要做一台每分钟高速犯错一万次的机器。

20. 结论——模拟器真正构建的是研究流程

DB是记忆,Rules Engine是物理,Policy是大脑,Search是预读,Statistics是成绩单,Action Trace是监控,Git是研究笔记,AI Agents是研究员。

人一直问:

“这个数字真的可信吗?”

开始只是想疾驰打脸。

最后变成卡牌游戏AI研究所。

最后一手还是一样:

拆守护,进化,

疾驰打脸。


接着读: 给“无脑AI”装上三回合预知后,它反而更弱了——《影之诗:超凡世界》46,900场市场模拟与独立AI研究揭示的“看得见未来,却不会给未来打分”问题

今天读这篇

每一篇都回答读完本文后常有的下一个问题。

浏览全部文章更多「卡牌与桌游」文章

分享这篇文章

广告

查找其他文章

所有文章

Mendoi-chan

本站运营者

Mendoi-chan

把工作与日常生活中的麻烦整理成清晰的结构和下一步行动。

广告

最新文章

  1. 1偷内衣的神父会被抓,“播种大叔”却是英雄?漫画删掉最挑受众的癖好,原作甚至觉醒《想象怀孕》
  2. 2人类,这个真打不过——把《PRAGMATA》当月球美术馆逛着逛着,我开始对机器文明的工业产能绝望了
  3. 3为什么我的攻击总是输?——焰/光玩家,被一八的无形判定和鳄鱼肚皮整破防
  4. 4给不擅长一个人行动的人:拆解“没人陪就动不了”,培养你的“独处行动 OS”
  5. 5月面基地还没坏完,我的操作系统先崩了

推荐阅读

广告