ゲームを一から作らず「勝つ研究所」を作る――既存シミュレーターに人間の判断と臨機応変さを入れるまで

カードゲームのAIシミュレーターと聞くと、最初に浮かぶのは地獄である。カードを1枚ずつ登録して、コストを書いて、攻撃力を書いて、効果を書いて、特殊処理を書いて、ようやく1枚完成。「これを数百枚?」となった瞬間、人間の腰は静かに死ぬ。

読書機能の使い方

聴く:本文を読み上げます。速読:語句を順に表示し、速さを調整できます。語学練習:別の言語版と対訳を読み比べます。保存:このブラウザーにブックマークし、プレイヤーの保存済み一覧から開けます。

この記事をシェア
広告
広告

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%近く出たら、研究所全員で最初に確認する。

「こいつ、また“出して殴る”だけで天下取ってない?」


PRこのテーマの本を探す

この記事には広告(アフィリエイトリンク)が含まれます。 広告について

広告

他の記事を探す

すべての記事

めんどいちゃん

この記事を書いた人

めんどいちゃん

仕事や日常の「めんどい」を構造化して、次に動きやすくする記事を書いています。

このサイトについて
広告

新着記事

  1. 1「行動しろ」の正体:反芻を環境選択・時間選択・作戦変更に変換する
  2. 2冬眠は睡眠ではない:低電力の生命維持モードとして見る
  3. 3AIに気分を記録すると、自分の波が客観的に見えておもしろい
  4. 4ゼロが撤退した時点で黒の騎士団も逃げるべきだった|藤堂とゼロ属人化の限界
  5. 5「分からせたい/分からせられたい」はMなのか――支配、服従、尻に敷かれたいを分ける

あわせて読みたい

広告