1. 「826枚を手入力する地獄」だと思っていたら、半日で研究所が建ち始めた
カードゲームのAIシミュレーターと聞くと、最初に浮かぶのは地獄である。カードを1枚ずつ登録して、コストを書いて、攻撃力を書いて、効果を書いて、特殊処理を書いて、ようやく1枚完成。「これを数百枚?」となった瞬間、人間の腰は静かに死ぬ。
ところが実際には、カードDBがJSONなどの構造化データで公開され、さらに既存の対戦エンジンまである場合、話がまるで変わる。カード情報は一括で読み込み、共通効果は既存処理に流し、特殊な新ギミックだけ個別対応すればいい。
今回のケースでは、既存のBeyond DecksにカードDB連携、デッキ構築、対戦シム、seed、replay、AI、benchmarkまでかなり揃っていた。つまり「ゲームを作る」のではなく、すでにある箱庭に研究装置と新しい脳を足す仕事だった。
しかも人間は外出しながら指示できる。ゲーム開発者というより、研究所の所長である。
2. 演出を全部剥がすと、カードゲーム1試合は笑うほど短い
実際のゲームには時間を使うものが山ほどある。
ドロー演出
カードを選ぶ時間
ドラッグ
召喚演出
ボイス
進化演出
攻撃モーション
ダメージ表示
ターン終了演出
シミュレーターには、ほぼ全部いらない。
状態A
→ 合法行動を列挙
→ 行動を選ぶ
→ 数値を更新
→ 状態B
これを勝敗が決まるまで繰り返すだけだ。
そのため、見た目では10分かかる対戦でも、内部計算なら秒以下で終わることがある。観客0人、歓声0、進化演出0秒。CPUは人間が「よろしくお願いします」を言っている間に何戦か終わっている。
重いのは演出ではなく、むしろAIにどれだけ未来を考えさせるかである。
3. ベースのシミュレーターは「おまけ」ではなく、かなり本気だった
既存シミュレーターには、単なる「カードを出してHPを減らす」以上のものがあった。
- deterministic seed
- replay inspection
- target selection
- tactical look-ahead
- full-turn planning
- lethal solver
- class-specific mechanics
- benchmark
- all-card coverage audit
- runtime check
現行のBattle Engine v5は大きな実装で、作者自身もBattle Simを共有可能な状態としている。一方で重要なのは、作者が「大会プレイヤーを完全再現するAIではない」「AIは中間レベル」と明記している点だ。
これは弱点ではなく、研究にはむしろ都合がいい。
ゲーム盤、ルール、カード、対戦装置、再現seed、replayはかなりできている。足りないのは主に「人間みたいに状況を読む脳」。つまりゼロから826枚を書くのではなく、上に載せる意思決定層へ集中できる。
4. 12,480戦でロイヤル約79.8%――大量試行はAIの癖まで増幅する
過去の固定エンジンによる12,480戦では、ルールカバレッジは良好なのに、クラス別結果がかなり極端になった。
代表例がロイヤル約79.8%、ウィッチ約25.6%。
ここでやってはいけないのが、「12,480戦もしたからロイヤル最強!」と叫ぶことだ。
むしろ疑うべきなのは、AIの得意科目である。
ロイヤルAI
フォロワー出す!
盤面取る!
顔が空いた!
殴る!
勝った!
一方で複雑なデッキが、
コンボ札? 今使える! 使用!
進化権? 今強くなる! 使用!
手札上限? 知らん!
3ターン後? 未来の俺よろしく!
なら、そりゃロイヤルが王になる。
大量試行で一番怖いのは「間違い」ではない。間違ったAIの平均値を、ものすごく小さい誤差で出すことである。
5. そこで人間方策を調べた――答えを暗記させるのではなく「考え方」を入れる
次にやるべきは、AIへ人間のプレイ知識を入れることだった。
調べる対象は、単なるデッキレシピだけではない。
- マリガン
- 温存すべきカード
- 進化・超進化の残し方
- 盤面と手札の空き管理
- 対面別の攻め・受け切り替え
- 相手の強い返しターン
- 代替勝ち筋
- 2~3ターン先のリーサル
- よくあるミス
ただし「この対面なら絶対このカード」とハードコードすると、攻略本botになる。
だから人間知識は、
hold_value +20
future_combo_value +30
opponent_counter_cost +25
早切り -40
のような加点・減点・優先度として使う。
人間の攻略は答えではない。AIが探索するときの「考えるクセ」である。
6. 今やっているのは4,032実戦――2,016は「比較問題」の数
人間方策を入れたら、いきなり「改善しました!」とは言えない。旧AIと同じ問題を解かせる必要がある。
現在のA/B設計は、56組の対面スケジュール、2方向、18seedを使う。
56
× 2方向
× 18 seed
= 2,016 A/B条件
そして各条件について、
基準方策 1戦
人間方策 1戦
を回すため、実エンジンが実際に処理する試合は4,032戦になる。
つまり2,016は「聖なる試合数」ではない。同じテスト問題を2人のAIに解かせる比較単位だ。
しかも先攻後攻とseedを固定するので、「新AIだけ神引きしました」をできるだけ消せる。
7. 本実行の前に止める――回帰テストとスモークが一番地味で一番大事
今回の実行では、最初から4,032戦に突っ込まなかった。
まず、人間方策の回帰テストで「フィニッシャーを早く切りすぎる」問題を直す。準備札を先に使う条件を通す。そこが通ったら、実カードDBと実デッキで先攻・後攻を短く回す。
さらに、
- カード対応率100%
- 未対応カード0
- ルール欠落0
- DBハッシュ一致
- 重複IDなし
- 関連カード欠落なし
- コーパス版ずれなし
を確認してから本実行へ進む。
これは地味だが重要だ。
AIがアホなまま12,000戦回した経験があるからこそ、今度は「試合数より先に、前提が壊れていないか」を見る。
8. でも人間方策v1だけでは臨機応変ではない――次の難所は「目的を毎ターン変える」
今の人間方策v1は、温存、準備札、未来コンボ、相手の返しなどを評価する。しかし本当に人間っぽくするには、もう一段必要だ。
同じランプドラゴンでも、毎ターン目的が変わる。
普通
→ PPを増やしたい
次ターン死ぬ
→ ランプ中止、除去・守護・回復
相手が息切れ
→ 守る必要が薄い、攻める
フィニッシャーあり・準備不足
→ 温存
準備完了
→ フィニッシャー解禁
つまり「ドラゴンはランプする」では足りない。
今の状況では何を優先するべきかを毎ターン再計算する必要がある。
9. 臨機応変AIは「ATTACK / SURVIVE / SETUP / LETHAL」を切り替える
次のAdaptive Policyでは、盤面を見て内部モードを動的に変える。
例:
ATTACK 攻める
SURVIVE 生存最優先
SETUP コンボ・PP・手札を準備
RESOURCE リソースを伸ばす
LETHAL 今殺す
そしてHP、盤面、手札、PP、進化権、相手の圧力、次ターン被ダメージ、コンボ完成度から各モードへ点数を付ける。
自分HP 6
相手盤面14点
守護なし
SURVIVE 90
ATTACK 10
なら、ランプカードが手札にあっても除去を優先する。
これが臨機応変さの正体だ。
「このカードは6ターン目まで使うな」ではなく、今使う価値と、待つ価値を比較して決める。
10. 次は2~3ターン先を見る――全部読むのではなく、人間知識で枝を切る
臨機応変にするには未来探索も必要だ。
ただし、全合法行動から数ターン先を全部読むと組み合わせが爆発する。
そこで、
合法行動50個
↓
人間知識で20個へ
↓
軽い評価で10個へ
↓
上位10個だけ2~3ターン探索
のように枝刈りする。
評価も、
今の盤面 +8
でも次ターン死亡 -100
ならその行動を落とす。
逆に、
今の盤面 +3
生存 +30
次ターン反撃 +20
なら採用する。
攻略知識はここでも「答え」ではなく、探索する候補を賢く減らす道具になる。
11. 隠し手札を見せたらチートAI――「持ってるかもしれない」を確率で扱う
カードゲームAIでやってはいけないのが、相手の隠し手札をそのまま読むことだ。
それでは、
相手AoEなし確認!
全部展開!
という透視能力者になる。
人間らしくするなら、公開情報から候補を推定する。
- 相手リーダー
- アーキタイプ
- 使ったカード
- 残り枚数
- 手札枚数
- ここまでの行動
から、
AoEを持っている 30%
持っていない 70%
のような複数世界を作る。
その上で「どの世界でも死ににくい行動」を評価する。
これで、
「持ってるかもしれないからケアする。でもケアしすぎても負ける」
という人間の感覚へ近づく。
12. 順番が重要――今の4,032戦を途中で賢くしてはいけない
ここで焦ってAdaptive Policyを今のA/B途中に追加すると、実験が壊れる。
前半と後半で別AIになってしまうからだ。
正しい順番は、
1. human-prior v1を固定
2. 4,032実戦を完走
3. どのミスが残ったか分析
4. Adaptive Policy v2
5. quick A/B
6. 問題なければ約2,016条件A/B
7. full 12,000戦級
8. そのAIで40枚最適化
9. 対リーダー・対アーキタイプ診断
である。
特に3が大事。
「もっと賢そうだから全部追加」ではなく、ウィッチはなぜ負けたのか、ドラゴンは何を温存できなかったのか、ロイヤルは本当に強いのか、死ぬのに攻めた回数はいくつか、を実測してからv2を作る。
13. 最終形は「攻略本を覚えたCPU」ではなく「攻略本を破れるCPU」
最終的に欲しいのは、攻略記事を丸暗記するAIではない。
人間知識
↓
候補を絞る
ゲーム木探索
↓
未来を見る
評価関数
↓
今と未来を比べる
相手手札推定
↓
見えない情報も確率で扱う
状況モード
↓
攻め・守り・準備を切り替える
これらを組み合わせる。
そうすると、
「基本はランプ。でも死ぬなら除去」 「基本は温存。でも今がリーサルなら全部使う」 「基本は展開。でもAoEが濃いなら少し残す」
ができる。
攻略本を参考にするが、盤面を見て攻略本を破る。
ここまで来て初めて、AIが「臨機応変」に見えてくる。
14. この方法はシャドバだけではない――ゲームを作るより、勝つ研究所を作る
この発想は他のゲームにもそのまま使える。
ポケモンなら、既存シミュレーターへ構築、選出、交換、技選択の最適化層を足す。カードゲームなら、デッキ、マリガン、資源管理、対面方策を足す。
重要なのは、
「ゲームそのものを再制作する」ことと「勝つための意思決定を研究する」ことは別
だということ。
前者はUI、演出、描画、操作まで必要だが、後者は状態遷移とルールさえあればいい。
だから既存シムがあるなら借りる。
そして人間は、
この数字おかしくない?
このAI、死ぬのに攻めてない?
この対面だけ変じゃない?
次は何を比較する?
を決める。
AIとCodexはコードを書き、テストし、数千戦回す。
ゲームを一から作らなくてもいい。勝つための研究所を作ればいい。
そしてロイヤルがまた80%近く出たら、研究所全員で最初に確認する。
「こいつ、また“出して殴る”だけで天下取ってない?」
