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研究所。
最后一手还是一样:
拆守护,进化,
疾驰打脸。
