大先生MOD

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

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

1大先生どうしの対戦にツッコむ

大先生どうしが打った試合を観られます。変な手を見つけたら、その場でツッコんでください(厳しいご指導ご鞭撻のほど!)

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

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

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

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

昔のセーブが残っていたら、ここに放り込んでください。タイマンでなくても、多人数戦でも、負け試合でも、1個だけでも大丈夫です。上手い人の実際の打ち方が、大先生のお手本になります。

場所はだいたい ドキュメント\My Games\Beyond the Sword\Saves の中(multi と auto あたり)。名前は消してから使います。BUG などの Mod 入りでもたぶん大丈夫。

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

ここにセーブを放り込む ここへドラッグ&ドロップ。フォルダごとでも、何個でも

    3大先生を直接ボコボコにする近日公開!

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

    ここまでできてる

    1. 本物の Civ4 だと遅すぎるAI が強くなるには何千・何万試合の経験が要るけど、本物は1試合に何時間もかかる
    2. なので「練習用の Civ4」を作ったルールを丸ごと作り直した物。本物で打った試合を流し込むと、金・研究・生産まで本物と同じに進む。中身はほぼ本物
    3. その中で AI 同士が打ちまくる1試合が数秒、一晩で何千試合。勝った打ち方を残して強くしていく。上の観戦席の試合もここから

    1と2はできた。3は回し始めたところで、正直まだ全然うまくいっていない。そこが一番面白いところ。

    目指してるもの

    ここから先はオタク情報(中身のはなし)

    どうやって作ってるか

    • Civ4 本体のソース(SDK)と XML を読んで、ルールを Python で書き直したシミュレーターを作りました。戦闘の勝率、国境、交易路が更新されるタイミング、無政府中の研究まで本物に合わせてあります
    • 本物のゲームには記録用の Mod を入れて、毎ターンの状態を書き出します。それをシミュで再生して答え合わせ
    • 上の観戦席は、そのシミュの試合をそのまま再生しているだけです

    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%くらい)に埋もれるのと、「伸ばす⇔殴る」みたいな一番大きな方針がまだ数字になっていないのが原因っぽい
    • 次は、そういう大きな方針から先に探す → 盤面から「勝つまであと何ターンか」を予想する仕組みを試合のデータで覚えさせる、の順でやる予定です