勝手に戦え!AI vs AI

ゲームを作ってみたはいいけれど、ゲームバランスは大丈夫か?誰か俺のゲームを1万回プレイしてくれ!!!!!

→AI同士で対戦させたらいいじゃない(某アウラ風)

こんにちは。大島です。最近、なんか江戸の世界をAIで再現したみたいなやつありますよね?ドパガキなのでyoutubeのショート見るのやめられなくて、猫と犬の動画もかわいくてずっと見ちゃいます(;^_^A

さて本題ですが、また新しいゲームをつくってみました。名付けてキエワード。もじぴったん×消える丸罰ゲーム!

3×3のマスの中で3文字を完成させられたら勝ち!!!!!の超絶シンプルかつ最もフィジカルで、最もプリミティブで、そして最もフェティッシュなやり方で行かせてもらいました。

2文字目リーチさせたら相手に確定で置かれるから負けやん。(T_T)っていう問題を防ぐため、3文字のうち、置いた文字が多い方が勝ち、というルールにしました。

まあできたはいいんですけど、これゲームとして成り立ってるのかな?というのが気になるところ。丸罰ゲームも昔はとても面白かったのに、最適解を考え出すと途端にクソゲーになっていましたよね。そういった事態を防ぐために、とりあえずこのゲームの攻略本を作ってみたい。

そこで大島に電流走る。

AIとAIでたたかわせて結果を教えてもらえばよくね?ということで、高速で戦闘を回してもらって、その後結果、改善点を報告してもらうようにしました。

始めようとしたらここでトラブル。ゲームが重すぎる!!!原因はAIが先の先の先の手まで考えていたため、ありえない思考時間がかかっていたみたいです。これは考える先をある程度制限することでカバー。すると結果が…

「ん」を連打するAI!!!!!!何が起こってんだよ。理由を聞いてみると、

1. 「ん」は消費されない(固定文字)

あ・い・う・え・お・ん は 何度でも使える 固定文字です。
一方、ランダム手札の字は1回使うと減ります。

AIの評価には「貴重な手札を温存する」という明示ルールはありませんが、結果として リスクゼロの「ん」 が選ばれやすくなります。


2. 高速学習AIは「語の途中」まで見ていない

高速学習で使っている FAST_SIM モードでは、パフォーマンスのため 「さく→さくら」のような途中評価(部分語ボーナス)をオフ にしています。

つまり AI は:

  • 「2文字目まで並べて将来の語を狙う」→ ほぼ評価しない
  • 「この1手で辞書語が完成する」→ 大きく評価する

と割り切っています。
盤面が空に近いうちは完成ボーナスがほとんど出ないので、語完成より別の目的 を追います。


3. 代わりに評価されるのが「陣地取り」

完成しなくても、ライン上で 自分の字が2マス以上 になると加点されます(threat_w)。
中央マス (1,1) も +16 点。

語を完成させなくても、んを置いてラインの多数派を取る 方が安定して点がもらえます。
しかも「ん」はタダなので、ここに向かいやすいです。


4. 語完成の条件がかなり厳しい

勝ちには次 全部 が必要です。

  • 8本のラインのどれかが 3マス埋まっている
  • その3文字が 辞書に載っている語
  • 3マスすべて 寿命2以上(寿命1の字はラインに数えない)
  • そのラインで 自分の字が2マス以上

さらに毎手 寿命が1減る ので、
「あと1手で完成」→ その前に字が消える、がよく起きます。

AI同士の対戦では 42手で時間切れ → 盤面の字が多い側が勝ち も入っているので、

語を完成させる(難しい・不確実)
より
んを置き続けてマス数を稼ぐ(簡単・確実)

という選択になりやすいです。


5. 学習データが「ん」を強化してしまう

高速学習では、使った文字すべてに学習ボーナスが付きます。
「ん」を大量に使った局が続くと、char_scores["ん"] が膨らみ、次の局でも「ん」が有利 になります。

悪循環イメージ:

んを多用 → 学習で「ん」が強化 → またんを選ぶ → …

らしい。つまり3文字を完成させるのが難しすぎるらしい。ランダムの手札のひらがなが辞書式を採用。平たく言えばより使いやすい文字が出るようになります。あと消える時間を長くしてもうちょい簡単にしてみることにする。やっぱり成功体験が大切だからね。

こんどは「あ」が増えたんだけど(;^_^A

この問題を解決するため、場に3つ以上同じ文字を置けないルールを追加。そしたらうまいこといった。この結果を基に攻略本を作ってもらうことにします。(結構長いんで斜め読みしてください)

勝ち方(再確認)

勝利条件はこれだけ覚えればOKです。

  1. 縦・横・斜めのいずれか で3マスがそろう
  2. その3文字が 辞書に載っている語(例:さくら、ごはん、なると)
  3. 3マスすべて 寿命2以上(薄くて消えそうな字は無効)
  4. そのラインで 自分の字が2マス以上

「3文字並んだ」だけでは勝てません。自分の字が2つ以上+辞書語+寿命 がそろった瞬間が勝ちです。


基本方針:語を「完成させる」ゲーム

AIが以前「ん」「あ」を連打していたのは、語完成よりマス数稼ぎ の方が楽だったからです。
人間は逆に、最初から語の完成を1手ずつ狙う 方が強いです。

おすすめの流れ

  1. 手札を見て 作れそうな3文字語 を1〜2個決める
  2. その語が通る ライン(8本のどれか) を選ぶ
  3. 自分の字が2マスになる ように配置する
  4. 最後の1文字で 一気に完成 させる

「とりあえず置く」より、「このラインで『さくら』を完成させる」くらいの意識が差になります。


ルールを味方につける

① 同じ字は盤上2つまで

「あ」を3マス並べて陣地取り」は もうできません。

  • 同じ字の使いどころは 最大2回 と考える
  • 3文字語に同じ字が2回出る語(例:「おおき」系は辞書次第)はレアなので、基本は 全部バラバラの字 で組む

② 固定文字(あ・い・う・え・お・ん)は「 spice 」

いつでも使えますが、盤上2つまで・連打向きではなくなりました。

  • 語の1文字目・3文字目(特に「ん」) として計画的に使う
  • 意味もなく中央に置く、は避ける

③ 寿命7ターン=約3〜4手の余裕

墨の段階の目安:

残り寿命状態
7新規配置
5–6まだ安心
3–4そろそろ完成を急ぐ
1–2ラインに使えない(消え直前)

寿命3以下 になった字は「語の核」にしない。
完成予定のラインは、寿命4以上の字だけ で組み立てるのが安全です。

④ 寿命1の字はラインに数えない

相手(や自分)が「あと1手!」に見えても、
薄い字だけのラインは まだ勝ちにならない ことがあります。

  • 相手の完成を防ぐなら、寿命を削る(時間経過)のも有効
  • 自分は完成 直前 に3文字目を置く(置いたターンで寿命>1のまま判定)

手札の使い方

辞書寄り山札

ランダム手札は 辞書に出やすい字 が多いです。

  • 手札を見たら「これで作れる語」を頭の中で探す
  • 例:「さ」「く」「ら」が揃い気 → さくら を横一列などで狙う
  • 固定文字と組み合わせて 実在語リスト に当てはめる

よく使われやすい系統:

  • 自然・食べ物(さくら、ごはん、みかん…)
  • 3文字キャラ名(なると、まどか、ほむら…)

リロール(3手ごと)

人間対戦・CPU対戦では 3手ごとに手札リロール(ターン消費なし)できます。

  • 今の手札で 語が1つも思い浮かばない とき使う
  • 相手より先に 使いやすい字 を引き直す
  • ただし、良い手札のうちに無理に変えない(リロールは待つ)

盤面・ライン戦略

3×3なので「奪い合い」が激しい

8ライン全部が被ります。中央 (1,1) は 縦・横・斜め4本 に乗るので最重要。

  • 自分の語の 2マス目 を中央付近に置く
  • 相手が中央を取ったら、 別ライン で語を作る

勝ちラインは「自分2:相手1」

どちらかが完成したとき:

  • 自分の字 2つ + 相手1つ → 自分の勝ち
  • 相手 2つ + 自分1つ → 相手の勝ち

だから:

  • 自分の字2つ+空1マス のラインを作ると、最後の1手で勝てる
  • 相手が2マス取っているラインは ブロック か 別ラインへ切替

ブロックのしかた

相手が2マス揃えて空1マスなら:

  • その空マスに 相手が欲しそうな字にならない字 を置く(同じ字2つ制限も利用)
  • またはそのラインを 寿命で崩す(既存の字が消えるのを待つ)

対人・対CPU

2人対戦(HOTSEAT)

  • 相手の手札は見えないが、盤面と寿命 は全部見える
  • 「次のターンで消える字」「完成まであと1手のライン」を常にチェック
  • リロールを温存するか使うかで テンポ が変わる

CPU最強

  • 学習済みの 得意語 を意識(画面上の「語彙 ○語」)
  • CPUも語完成と陣地取りのバランスを取るので、
    寿命3以下のライン や 同字2つ上限 を突くと human advantage
  • ザコCPUはランダム寄り → 語完成を素直に狙えば勝ちやすい

よくあるミス

ミス対策
意味なく字を置く必ず「どの語の何文字目か」を決めて置く
寿命1の字で完成を狙う寿命4以上の字だけでラインを組む
同じ字を3つ目置こうとする盤上2つまで。別の字・別ラインへ
相手1:自分1のラインで完成そのラインで完成すると 相手の勝ち
手札を固定文字だけで消費レアな手札の字を 語の中心 に使う

上級者向け:1手で決める

理想形は 「自分2+空1」のラインで、3文字目が手札 or 固定文字で完成」 です。

  1. 1手目:語の1文字目を置く(できれば自分のラインの端 or 中央)
  2. 2手目:同じライン に2文字目(ここで自分2マスになる配置を意識)
  3. 3手目:空マスに3文字目 → 即勝ち

相手のターンが挟まるので、
2手目までで「次にここを置けば勝ち」 の形を作れているかが勝負どころです。


まとめ(3行)

  1. 辞書語を決めて、自分2マスのラインで完成させる
  2. 寿命4以上・同字2つまで を守りながら組む
  3. 固定文字とリロールは 語完成のため に使う

この3つを意識すると、AI学習後のゲームバランス(語完成が主役・連打不可)に一番乗りやすいです。

/

結構面白い結果になりましたね。それなりにいいバランスになっているといえるんではないでしょうか。

これを行えば、ゲームの完成度が上がりそうです。今後はこれを基にレーティングシステムでも作ってみようかな。じゃあまた!