大先生MOD

Civ4 BtS(2007年発売)の AI を、現代の技術で「大先生化」するプロジェクト

いまの成績
  1. どうした大先生…
  2. 業務用 Civ4 はできた。AI 同士でちゃんと打ち合えてる
  3. 約3.5秒/ゲームで回せる。強化学習はここから
  4. でも、お手本(教師データ)が足りない → セーブデータがほしいです
現在のレベル開拓者

遊び方は3つ

1大先生を直接わからせる近日公開!

ブラウザの中で、大先生と直接対戦できるようにします。最初はたぶん簡単に勝てます。でも、ボコボコにされた試合は全部大先生の教材になって、だんだん強くなっていきます。

2セーブを投げて大先生を教育する

昔の試合も、毎週の試合も、1試合ぶんのセーブを1つのフォルダにまとめて放り込んでください。ターンごとのセーブが続いていると、上手い人が1手ずつどう打ったかが分かって、そのまま大先生のお手本になります。タイマンでなくても、多人数戦でも、負け試合でも大丈夫です。遊ぶたびに投げてもらえると、そのぶん大先生が育ちます。

送るもの
1試合ぶんのセーブが入ったフォルダ(ふつうは auto フォルダをそのまま)
場所
ドキュメント\My Games\Beyond the Sword\Saves の中の multi\auto や auto
タイミング
auto は次のゲームで上書きされるので、遊び終わったらその日のうちに
メモ
「いつ・どの部屋」があると、試合を見分けやすい
形式
.CivBeyondSwordSave が5個以上入ったフォルダ(1ファイル 8MB まで)。BUG などの Mod 入りも受け付けます
送ったセーブの扱い
受け取るもの
セーブのファイル、フォルダ名、ファイルの日付、入力してもらった名前とメモ。IP アドレスなどの接続の記録は保存しません。
使い道
大先生(AI)のお手本を作るためだけに使います。強い打ち方を学ばせたいので、全部を混ぜて平均するのではなく、試合の結果や成績(勝った側・上位の人など)で選んで使います。
プレイヤー名
セーブの中にはゲーム内のプレイヤー名が入っています。選ぶために、試合の中で誰がどう打ったかを見ることはあります。学習用に取り出すデータからは名前を外し、名前つきで公開することはありません。
公開
セーブそのものは公開しません。サイトで試合を見せたくなった時は、名前を伏せたうえで、先に送ってくれた人に聞きます。
保管
サイトの保存場所(Cloudflare)と、運営者の手元に保管します。扱うのは運営者1人と、作業を手伝う AI だけです。
消してほしい時
コミュニティのチャットで声をかけてください。名前・メモ・日付から探して、保存場所と手元の両方から消します。

どちらも空欄のままで送れます

ここにセーブのフォルダを放り込む 1試合ぶんのフォルダを、ここへドラッグ&ドロップ。クリックでフォルダを選ぶこともできます

    3大先生どうしのタイマンを観戦してツッコむ

    大先生どうしが打った試合を観られます。変な手を見つけたら、その場でツッコんでください。

    1. 気になったマスをクリック(のろしが上がります)。全体の話ならクリックなしで OK
    2. 一言書いて Enter

    例:「この牛に牧場」「労働者がここに道を引くのはおかしい」「全体的に開拓者を作りすぎ」。ガチの指摘でも、ただの文句でも大歓迎です。

    いまの試合: タイマン(デュエル・迅速・貴族)、蛮族と小屋あり、50T まで戦争なし、T80 で判定。まずはタイマンで練習中。

    このプロジェクトについて

    ここまでできてる

    1. 前提AI を強くするには、大量のサンプルがいる

      AI どうしを大量に戦わせて、「この局面でこの手を選んだら、どれだけ勝ちに近づいたか」というサンプルを集め続ける。そこから、手ごとの点数(評価値)を作っていく。サンプルが増えるほど点数は正確になり、AI は良い手を選べるようになる。そのためには、何百万試合を回せる場がいる。

      参考: チェス 約4,400万局/将棋 約2,400万局/囲碁 約2,100万局(AlphaZero が自分どうしで打った数。2018年の論文)
    2. 分かれ道道は2つあった

      本物の Civ4 に記録を取る仕掛け(Mod)を入れて、その中で AI を戦わせるか。AI に要るルールだけで、外に業務用 Civ4 を作るか。

      Mod 側の記録の仕掛けも作ってあって、本物の試合を記録するのに使っている。
    3. なぜ本物の Civ4 では、数をこなせない

      本物は人が遊ぶためのゲームなので、画面・アニメーション・操作の仕組みなど、AI には要らない物がゴテゴテついている。遅いだけではなく、何百万試合を回してサンプルを集める作業の土俵に、そもそも乗らない。そこで、ルールの骨格(地形・都市・生産・研究・戦闘・蛮族…)だけを残して削ぎ落とした Civ4 を別に作ることにした。これが業務用 Civ4。

      計算が本物どおりかは、公式が Mod 作り向けに公開しているソースコードで1つずつ確かめている。
    4. できた業務用 Civ4 は完成

      本物で打った試合を流し込むと、金・研究・生産・人口まで本物と同じに進む。約3.5秒/ゲーム。

      実際に打った1試合で、T0〜T49 の50ターンが本物と完全に一致。一致を確かめた範囲だけを使うので、AI が業務用 Civ4 のバグを突いて「ズルく強くなる」のを防げる。
    5. いまここその中で、AI どうしが打ち合い始めた

      勝った打ち方を残して、少しずつ強くしていく段階。正直、まだ全然うまくいっていない。上の観戦席の試合はここから来ている。

      課題は、AI が何から学べばいいかの「お手本」が足りないこと。だからセーブがほしいです。
    よくある質問
    なんで本物の Civ4 で戦わせないの?
    本物は人が遊ぶための作りで、AI に要らない物が多すぎる。何百万試合を回すには、骨格だけの業務用 Civ4 が要る(上の「なぜ」)。
    業務用 Civ4 は、本物とちゃんと同じ?
    実際の試合を流し込んで、50ターン完全に一致するのを確かめた。違いが出た所は、公式が公開しているソースコードで確かめて1つずつ直している。まだ確かめていない部分(外交など)は、AI にも使わせていない。
    AI は ChatGPT や Claude が打ってるの?
    いいえ。試合の中の判断は、内政・戦闘・蛮族の見張りなど役割ごとに分けた専用の部品が決めて、それを上でまとめている。言語モデルに1手ずつ聞くと、1試合に何千回も聞くことになって、速さもお金も足りない。
    どのくらいの数を回してるの?
    約3.5秒/ゲーム。7ゲームを同時に回して、1時間に約7,000ゲーム。
    送ったセーブは何に使うの?
    「この局面で、上手い人は次にこう打った」というお手本にする。AI はまずそのまねから始めて、そこから自分どうしの対戦で磨いていく。

    目指してるもの

    • 人が足りない日に1〜2席入れても、ちゃんとゲームになる AI隣の人のおやつにならない強さ
    • いつでも練習や実験に付き合ってくれる実力者特に新人研修として
    • 人間を超える大先生を生み出して、今度は人間がそこから学ぶ将棋やチェスでは、AI の「一見すると意味不明な一手」を人が研究して新しい戦法が生まれ、トップのレベルごと上がった。Civ4 でもそれが起きたら最高
    ここから先はオタク情報(中身のはなし)

    どうやって作ってるか

    • 業務用 Civ4 は Python で一から書いています。公式が Mod 作り向けに公開しているソースコードで計算を確かめながら、戦闘の勝率、国境、交易路が更新されるタイミング、無政府中の研究まで本物どおりに動くようにしてあります
    • 本物のゲームには記録用の Mod を入れて、毎ターンの状態を書き出します。それを業務用 Civ4 で再生して答え合わせ
    • 観戦席は、業務用 Civ4 の試合をそのまま再生しているだけです

    Civ4 が AI にとってしんどいところ

    • 1ターンにやることが多すぎる(全都市の生産・市民・労働者・兵・研究・税率を同時に決める)
    • 結果が出るのが遅い。T10 の首都の場所や、人口いくつで開拓者を出すかの答えが T60 とかにやっと出る
    • 霧で相手が見えないし、戦闘も小屋も運
    • 上手い人の判断は「この盤面ならこっち」という感覚で、言葉のルールにすると互いにぶつかる。上手い人の指摘を100個以上ルールにしてみたら、1個直すと前のが崩れる、が起きまくりました

    ほかの研究だと

    全部は追えてないけど、だいたいこんな感じっぽいです。

    • 囲碁・将棋(AlphaZero)は自己対戦だけで人間を超えた。ただ、盤面が全部見えて1手が小さいゲームの話
    • StarCraft II(AlphaStar)は、まず人間のリプレイのまねから入って、そこから自己対戦で伸ばしてグランドマスター級まで行った。セーブデータが欲しいのはこれと同じ理由
    • Civ 系だと、Freeciv を使った CivRealm という研究用の環境があって、強化学習も ChatGPT 系の AI もかなり苦戦しているらしい
    • Civ4 だと Better BTS AI や K-Mod が内蔵 AI をすごく賢くしたけど、それでも上手い人には届かない。ルールを書き足すだけだと限界があるっぽい

    今の学習

    • AI の中の数字(いつ攻めるか、何倍で攻めるか、蛮族の見張りを何体置くか…など25個)を少しずつずらして、元の自分と40試合ずつ戦わせ、勝った方を残す、を繰り返しています
    • 今のところ、まだ元の自分に勝ち越す組は出ていません。勝ち負けの運のブレ(±8%くらい)に埋もれるのと、「伸ばす⇔殴る」みたいな一番大きな方針がまだ数字になっていないのが原因っぽい
    • 次は、そういう大きな方針から先に探す → 盤面から「勝つまであと何ターンか」を予想する仕組みを試合のデータで覚えさせる、の順でやる予定です
    用語集
    業務用 Civ4
    このプロジェクトで作った、AI 専用の Civ4。画面も操作もなく、ルールの計算だけをする。研究の言葉では「シミュレーター」。
    サンプル
    「この局面で、この手を選んだら、最後にどうなったか」の1件分の記録。1試合から何千件も取れる。
    評価値
    局面や手の良さを表す点数。「この手は勝ちにどれだけ近づくか」の見積もり。サンプルが増えるほど正確になる。将棋の AI の「評価値」と同じもの。
    強化学習
    正解を教えるのではなく、自分で打った結果(勝ち負け)から、評価値を少しずつ直していく学び方。打つ → 結果を見る → 点数を直す、を何百万回も繰り返す。
    自己対戦
    AI どうしで打たせること。人間の相手がいなくても、いくらでもサンプルが取れる。AlphaZero はこれだけで、チェス・将棋・囲碁の人間のトップを超えた。
    お手本(教師データ)
    「上手い人はこの局面でこう打った」という記録。強化学習の前に、まずこれをまねさせると、何も知らない状態から始めるよりずっと早く強くなる。セーブはこれになる。
    Mod
    ゲームに後から足す改造。Civ4 は公式が Mod 作りを後押ししていて、そのためのソースコードも公開している。