156. AIウォーズ (2007/5/6)


戻る前回次回

AIを作って戦わせる、なんていうとワクワクしないだろうか。

AIを作って戦わせるゲームとしては、テレビゲームではカルネージハートというアートディンクから出たゲームがあったり、パソコンやコンピュータの世界だったらもっとマニアックなたとえばその名もrobotなんていう初期のプログラムから、IBMがJavaベースで作ったrobocodeなんていうものまである。さすがにAIを作るなんていうマニアックなゲームとなるとプレイする人が限られているのであまり広くは知られていない。

今回は、Age of Empires II; Age of Kings(以下AOK)というマイクロソフトから出ているリアルタイムストラテジーゲームのおまけみたいな機能としてついてきたAI作成機能を使って行われた、アメリカの有名ゲームサイトが主催したAOK AI WarsというAI同士を戦わせる大会に参加するに至るまでの出来事とその後を書きたい。

Microsoft Age of Empires II The Age of Kings ホーム
http://www.microsoft.com/japan/games/age2/

■Age of Empires II

Age of EmpiresとはEnsemble Studioというゲーム会社が開発しマイクロソフトが販売する歴史物の戦争ゲームの人気シリーズだ。プレイヤーはいくつかの文明から好きなものを選び、自分の民族を発展させていき、軍備を整えて他の民族を征服する。

第一作目は紀元前の古代ギリシャやペルシャやバビロニアなどの時代からローマやカルタゴやアレキサンダー大王の時代までを扱っていた。今回扱う第二作目は、西ローマ帝国が滅びてヨーロッパがいわゆる暗黒の時代に入ってから再び文明が生まれて帝国が勃興しては滅亡する時代を中世まで扱っている。

このゲームが画期的だったのは、それまで欧米で支配的だった西洋中心の史観ではなく、初めて世界帝国を作ったのはモンゴルなのだという事実をきわめて冷静にフィーチャーしており、ヨーロッパだけでなく世界各国の文明を割と公平に扱っていることだった。もちろんゲームとしても、生産と軍事とが密接に結びついたリアルタイムの戦略ゲームとして完成度が高く、世界中のプレイヤーを魅了した。

■CD-ROMの中に

そのゲームのCD-ROMの中にひっそりと一つのファイルが入っていた。普通にゲームをするにはまったく必要のない英語のドキュメントファイルだ。そこにはこのゲームでAIを作るための説明が書かれていた。このファイルの存在について、マイクロソフトは公式サイトでちょっとだけ言及していた。でも本当にちょっとだけだ。

公式サイトの説明に従って私はDoug's Test AIというAIをダウンロードしてきて通常のコンピュータAIと戦わせてみた。実のところこのときの様子は、単にコンピュータ同士を戦わせたのとほとんど変わらなかった。唯一ハッキリ違ったのは、コンピュータがどんな思考をしているのか英語でログのように画面上にリアルタイムに表示されていくことだった。正直ログの内容にはそれほど興味が引かれなかったが、自分がダウンロードしてきたAIが確かに動いているということが確認できたことは大きかった。

■試行

そこから私の試行が始まった。

まず最初に私は空のAIを作ってみた。サンプルのDoug's Test AIは数十キロバイトもあり、これを元にしてAIを作っていくことは難しかったからだ。AIのファイルを空っぽにしてしまうとエラーが出てしまうので、一種の空文のようなものを一つ置いて完成した。数学的に言えばこれが1とか0に当たるものだろう。

空っぽのAIは何にもしないかと思われたが、予想に反して村人キャラが動き出した。村人ユニットは最初三人いて、そのうちの二人が探索に出かけ、一人が野いちごを摘みに行った。唯一の軍事ユニットである斥候はボーッと突っ立っていた。次に考えるべきは、なぜこのような状態になっているか法則を探ることであった。

CD-ROMについてきたAIのドキュメントファイルを読んでいくうちに、どうやら村人ユニットや軍事ユニットに対して役割を与えることが出来ることが分かった。村人は「探索」か「収穫」か「建築」のどれかに従事させることができ、それを割合と最大人数で指定できることがわかった。「探索」の割合をゼロにして収穫の割合を上げたら、村人が三人とも野いちごを収穫するようになった。これで序盤に必要な食料が有効に手に入るようになった。

軍事ユニットは「探索部隊」か「攻撃部隊」か「防御部隊」のどれかに所属させることができ、部隊はそれぞれ割合とグループ数とグループ構成人数を設定できることが分かった。とりあえず序盤は探索部隊の構成を100%にすることで、斥候が探索をするようになった。

あとは建物を建てたり食料以外の資源(木や石や金属)を手に入れたりするのは思いのほか簡単だった。

■ホームページ立ち上げ

ここまでこぎつけて手ごたえを感じた私は、ホームページを作ることを思い立った。それが以下のページである。2000年1月1日のことだった。

Automatic Intruder
http://www.din.or.jp/~gomi/ai/

出来るだけ同志を増やすため、サンプルのAIを公式サイトからダウンロードするところからAIをインストールして試しに動かすところまで、かなり丁寧に説明した内容のページを用意した。

私は出来るだけ原理的なものを説明する方向でコンテンツをまとめた。こういうところで技術自慢みたいなことをしてもしょうがないので、各自がそれぞれ自分のやり方でAI作りをやるための足場を用意することを目的とした。

AIの楽しさを伝えるために、AIが誤動作したときのこっけいな状態をわざとスクリーンショットとして画面を取って載せたりした。

ちなみに私のページはAge of EmpiresのAIを扱ったページとしては一番最初ではなく、既になるさすさんという人が仲間内で遊んでいたときのことをまとめたページがあった。

AOE
http://dragoon.jp/aoe/aoe.html

dragoon.jp
http://dragoon.jp/

■攻略本と仲間

一通りページが出来たところで、Age of Empiresのファンページのうちメジャーなところの掲示板に自分のページの宣伝を書き込んだ。ほどなくして何人かの人がやってきてくれた。

一番最初にやってきたのはCATさんという山形大学(?)の人だった。この人はのちにAOK AI Colosseumというホームページを立ち上げた人で、そのホームページについては後述するが、とにかく私が一番最初にAI対戦をした相手でもあった。初めての対戦はまだ互いのAIの出来が良くなかったため、攻撃部隊同士がマップの真ん中ですれ違ったり、強力な防御拠点に兵が逐次突撃してむざむざやられていったりと、まともな戦いが成立していなかったが、なにしろ初めての対戦なので興奮した。

前述のなるさすさんという人が早くからAIをやっていたので、私の方からこの人のページに出かけていって書き込みをして、自分のページの宣伝もしておいた。この人は前作に実装されていた簡単なAI編集の頃から知り合い同志で対戦で遊んでいたようで、当時の対戦記録がこの人のページに面白おかしくまとめてあった。この頃はあまりAIをいじれなかったらしく、限界を感じてすぐに廃れてしまったと言っていた。

私のページもある程度コンテンツが揃ってきたせいか、一ヶ月もしないうちにソフトバンク系のゲーム攻略本の編集をやっていると名乗る人からホームページの掲載依頼が来たので受けた。この本がいつ出たのか、というか私は現物すら見たことがないのだが、あまり宣伝せずマイナーなものを扱ったページの割にそれなりに人が来てくれたのはこの本のおかげかもしれない。まあゲーム関係のページというのは狙いがはっきりしているので意外と来る人が多いようである。

何人かの人が各種ツールを作成した。AIを自動作成するというものから、ExcelやVBで編集を助けるもの、秀丸というエディタのマクロ機能を使ったものなんかがあった。

ほかにも沢山の仲間がいたのだが、いちいち説明しても面白くないだろうし、私自身かなり忘れてしまったので、その後の展開に関係のある人だけをそのたびに登場させることにする。

■AOK AI Colosseum

私のページの掲示板に一番早く足跡(書き込み)を残してくれたCATさんもホームページを作った。それが AOK AI Colosseum である。

この人はAI関連のリファレンスマニュアルを作ることに力を入れていた。最初はゲーム付属の英語のマニュアルをただ訳していただけだったが、このマニュアルに書かれていないことなどを色々補足しつつhtml化し、結構本格的なリファレンスマニュアルに仕上がっていった。

この人の活力に目を付けた私は、自分のページではなくこの人のページをAI仲間の集まる場所にしたらいいんじゃないかと思って、自分のページのトップ付近に AOK AI Colosseum へのリンクを張って誘導した。そして自分もそっちの掲示板で積極的に発言していくようにした。その狙いは当たり、CATさんは仲間うちでAI対戦の大会を開いてくれて大いに盛り上がった。

ただ残念なのは、CATさんがAIをやめてから少しして、AOK AI Colosseumのページ自体が掲示板のログともどもなくなってしまったことである。WebArchiveからいくつかコンテンツや書き込みを発掘できたが、全体からするとほんの少しだけしか掘り起こせなかった。この点だけはちょっと悔やんでいる。

■戦略の変遷

▽決定力

まず最初の壁となったのは、既に書いたとおり「戦いが成立しない」ことだった。これはいつのまにか解決していた。多分、それまでのAIは帝国の時代に進化しなかったり、進化しても作りこまれていなかったため決定力が無かったからだと思う。帝国の時代に進化することで、遠投投石器という強力な攻城兵器が使えるようになるため、白黒がつけやすくなった。

▽壁

次の壁は文字通り壁だった。このゲームは壁を建設して自分の陣地を守ることが出来る。ところが最初はAIで壁を作る方法自体が分からなかった。ちょっと方法がややこしくて、自分の陣地を広めに囲むか狭いめに囲むかをあらかじめ設定した上で建設する必要があることに気づかなかった。というのは、あらかじめ壁を張るのだと決めて宣言しておかないと、ゲーム進行中に壁の建設予定地に他の建物を建ててしまい壁が建設不能になってしまうようだった。公式サイトにあったサンプルAIが壁を一切作らなかったのも研究が遅れた理由だった。ちなみに壁の張り方はCATさんが発見した。

壁の威力は大きかった。壁を前に強力な騎兵ユニットが足踏みをするので、そこへ投石器でもって攻撃を仕掛けるとボコボコに出来た。こうして守りに徹していると敵がどんどん自滅していき自軍が有利になっていく。ところが結局壁はAIにとっては使われなくなってしまった。扱いが難しい上に運に左右され効果が低いことが分かったからだ。資源の一つである石をある程度使うため、壁に石を使うぐらいなら城や塔を建てたほうがいいのではないかと考える人が多くなった。

▽文明特化

Age of Empires II ではプレイヤーは十数種類の文明の中から一つ自分の文明を選べる。選んだ文明によりその文明の特性を得られ、戦い方次第で有利にゲームを進められる。

CATさんは最初中国に特化したAIを作った。中国は進化が早くて連弩兵という強力な遠隔攻撃ユニットが使えた。中国の進化が早いというのはたぶん古代中国が他の文明と比べて進んでいたからだろう。連弩というのは諸葛亮孔明が発明したと言われる連射式の石弓(クロスボウ)のことだ。これらの特性を生かしてCATさんは、早めに進化して大量の連弩兵を作るAIを作成した。

それに対して私は早くから全文明対応のAIを作ろうとしていて、特に相手の戦略の偏りに付け込んで対抗して軍事ユニットを作る仕組みを組み込んでいた。なのでCATさんの連弩兵に対抗して散兵という弓系に強いユニットを大量生産して迎撃するといったことを行っていた。この仕組みは自分でもかなり気に入っていて突き詰めれば最強になるのではないかと思ったのだが、特定文明特化型のAIの作り込みのほうが上であまり勝率が上がらなかった。

■第一回AI大会

INTERNET ARCHIVEに運良く結果が残っていた。

AOK AI Colosseum 第1回AI大会
http://web1.omn.ne.jp/~cat/AI_league/index.html (INTERNET ARCHIVE)

私は自分が最初に作ったAIをNestorisと名づけたが、これはNestorというホメロスの叙事詩に出てくる賢い老人の名前を基にしており、たまたま辞書で見つけて以後ゲームとかで名前をつけるのが面倒なときに使いまわしていた。そのあとAIを一度作りなおして今度はBelisariosという名前をつけており、第一回大会に出場しているのはこれのバージョン0.90β2のようであるが、こちらは東ローマ帝国の将軍ベリサリウスの名前から取っており、当時読んだ松村劭「戦争学」の中で作者が世界戦史上最高の軍人だと褒め称えていたので使った。ちなみに正確なスペルは英語でBelisarius、イタリア語でBelisarioで、なぜかそれらが混ざってしまったようだった。ギリシャ語でのスペルかも。フィンランド語でのスペルとなぜか偶然一致した。

前置きが長くなったがこの大会で優勝したのは直前になって殴りこみを掛けてきたmakinomotoさんという人の臥龍Garyouという中国特化のAIだった。圧倒的な強さを見せ、見事全勝優勝を果たした。このAIのどのあたりが強かったのか残念ながらさっぱり思い出せない。中国なので速攻だと思うのだが他のAIと何か決定的な差があったのだと思う。他の人の残している資料から想像すると、強力な領主R(領主の時代という普通は内政に専念する時期から攻撃を仕掛ける戦略)を仕掛けてくるのだそうだ。

準優勝のAI二つはどちらもたまたまCrusadesがついていて、どちらも移動が速い騎士を主体としたAIだった。片方は騎士の攻撃力最強のフランクを、もう片方は守りの強いチュートン(ドイツと考えていい)を文明にしていた。騎士は実のところAIではあまり使えないのではないかと思われていたのでこの結果は意外だった覚えがある。

その次のNarusasuさんのMix Ramsは、地味で移動速度が遅いが建物に強い攻城鎚というユニットを笑えるほど多く作って相手の陣地を破壊しまくるという変わったAIだった。同点でSAUERさんというリアルで中国史を専攻している人が作った中国特化型のFirecrackerは確か速攻型のAIだった覚えがある。

その下の抹茶国皇帝さんのAIはゴートという戦士系の攻めに特化した文明を使った変わったAIで、のちにすさまじい破壊力の速攻を仕掛けるAIとして他のAIに多大な影響を与えることになるのだが、このときは決め手がなかったのか下位の順位に甘んじていた。この人はのちに面白いことをするので詳しくは後述する。同点でRelic The Luckという恐らく早期に聖職者を作ってRelicを集めて勝ちにいく変わったAIがあった。このゲームには勝利条件がいくつかあり、それを狙うという面白い着眼点を持ったAIだったが、さすがに全部で五つのRelicを集めて守りきるのは厳しかったと思われる。

続いてじゃわさんのWhite Knightは守りに強いビザンティンで文明独自ユニットのカタフラクトを主体にしたAIだった覚えがあるのだがそれ以上は忘れた。この人はjawaという名で一千万ヒットクラスのCGIスクリプトのサイトを運営していた人で、ここのCGIは他のサイトでも時々見かけた。

AI Creative Station
http://www7.big.or.jp/~jawa/hobby/aok/

そしてようやく私のBelisariosがこの位置に来る。言い訳として、当時のレギュレーション(大会ルール)が文明指定可能だったからだと思う。私のAIは早くからどの文明でも動くように作りこんできたのだが、その分だけそれぞれの文明への対応がおざなりになっていた。この敗戦の前後でようやく中国に最適化していこうと決めたのだが、ライバルのAIの作り込みに勝てなかった。

私より下に三つAIがある。akagiさんのTower Of Gray TypeARCは、上位AIに勝ったりしているが勝率は悪く、確かどこか調整が失敗していたと言っていたのを聞いた覚えがある。CD-BOMさんのLogger 0.30βとCooさんのNAOはまだ習作だったと言っていた気がするがよく覚えていない。

■抹茶国皇帝さんの遠征

時期は忘れたが第一回大会が終わってしばらくして抹茶国皇帝さんという人が AOK Heaven という海外のサイトの掲示板に遠征した。自分のAIを掲示板で紹介して勝負を挑んだのだ。もちろん英語で。このAIは強いと評判になり、コミュニティから賞賛された。

抹茶国皇帝さんのAIのどのあたりが強かったのかというと、領主の時代という従来は内政に専念すべきだと考えられていた早期の時間帯から、相手の領地内に塔という強めの防御施設を建てに行くところだった。塔の建設が成功すると相手の内政を1〜2分程度を止められてなおかつ村人数人を殺せてしまうため、相手との決定的な差を付けることが出来た。

この驚異の戦略に対してはほとんどすべてのAIが対策を迫られた。まず塔を建てさせないことだ。それには視界を広げる必要がある。そのために前哨という低コストの建物を領土の一定間隔ごとに建てる仕組みを私は取り入れたが、すべての領土をカバーするほど建てるには資源と時間が必要だった。それにどうしても運が絡んできてしまう。この対策をすることで地味に疲弊してしまい、速攻をしないで力を蓄えるAIに対してどうしても不利になってしまう。

そうなると今度は自分も同じように相手の陣地に塔を建てに行くという戦略を取る必要が出てくる。要は攻撃は最大の防御なりということだ。速攻に対して備えると同時に自分も速攻を掛けることで牽制する。

正直私のAIはこの抹茶国皇帝さんの戦略への対策のせいでかなり知恵と時間を費やしてしまい、あげく余計な処理を入れすぎて弱体化してしまったように思う。

■2on2

そんなこんながありながらもAI対戦がマンネリ化してきたので、私は2on2つまり二対二の形式を提唱しだした。Age of Empires II には互いに資源を融通しあう仕組みがあり、それをAIでも行うことが出来るのだ。つまり、攻撃のタイミングを合わせたり、片方の文明を踏み台にしてもう片方の文明に資源を集めて先に進化させることで、独立した二つのAIよりも強くすることが出来る。

当時の私のAIは素ではそんなに強くはなかったのだが、攻撃のタイミングを合わせるというそれだけの機能を追加したことで、2on2をやりだした初期の頃はかなり強かったらしい。何人かの人が2on2に興味を示してくれて、この新しいレギュレーションを取り入れる動きが出てきた。

■AOK AI Wars

そこへちょうど前述の海外のサイト AOK Heaven がAI大会の開催を告知してきた。

Age of Kings Heaven - The Conquerors
http://aok.heavengames.com/aiwars/

全世界からAIを集めて戦わせるという一大イベントである。この大会の開催にあたっては、恐らく抹茶国皇帝さんらが集っていたAI関係のコミュニティの盛り上がりが元になったのだと思う。私たちは興奮し、自分たちもAIを用意して遠征しようと呼びかけあった。

この大会のレギュレーションがちょうど2on2だったため、私たちはこの新たなルールで自分たちのAIの改良を始めた。そしてもう一つ特筆すべきなのは、選択する文明がランダムに決められるということだ。今までのような文明特化型のAIではダメになった。私にとってはもともとそのように作っていたため有利な展開だったが、他のAI作家さんたちは対応を迫られただろう。

結局私たちの中から11名が大会に参加した。全参加者が28人だったので結構多いと思う。私はフザけて「日本から沢山のAIが真珠湾に向けて出港した」とか拙い英語で書いて煽ったりした。

AIを締め切りまでに送ったらあとは向こうで全部やってくれるので結果が出るまで待つだけである。予想外に随分待たされた覚えがある。なんでも不正がないかどうかソースコードを全部チェックしたらしい。正直私は主催者側のその説明に半信半疑だった。

結果は、なるさすさんが作ったMissionary_Monkeyという聖職者を戦略の中心に置いたAIが、イギリス人hZ_Farmerという人が作ったfarmertronというAIと引き分けて優勝を分け合った形になった。farmertronは2on2のルールを利用して互いに資源を融通しあう仕組みが見事で、あとで自分のマシンで試しに動かしてみてその動きに驚かされた。

なるさすさんのAI
http://dragoon.jp/aoe/ai2/sample.html

ちなみに私はBelisariosをまた大幅に書き足してKanjiというAIで参加したが、一回戦でCotetiさんのcoteti_botに敗退した。Kanjiという名前は日本の戦略家・石原莞爾から付けた。名前倒れで申し訳なさで一杯だが、coteti_botは対人戦用のAIなんかも幅広く作っていたCotetiさんが作った強豪AIの一つで、Cotetiさんはのちに行われたAI tournamentで優勝したtorisanの作者でもある。

コテゴットと遊ぼ〜
http://www.interq.or.jp/pacific/coteti/vsAI.html

■bingman氏来訪

大会が終わって一段落した頃、ドイツ人bingmanさんが AOK AI Colosseum を尋ねてきた。なんか簡単な日本語で書き込んできてくれた覚えがあるがよく覚えていない。それを受けて AOK AI Colosseum の管理人CATさんがトップページのニュースに英語で併記したり、掲示板への書き込みにも簡単な英語を併記する人が目立つようになった。

bingmanさんはのちに AOK Heaven で angel というランクのスタッフになり、AI tournamentを主催した。この人の誘いでこの大会に何人かが参加した。私はこの頃になるとAIに対する興味が薄くなっていっていたのでよく知らない。

■夢のあと

AOK AI Colosseum で第二回AI大会が開かれたが、私は確か参加していないのでよく覚えていない。

それからいくらかして、日本のAOK AIコミュニティの中心地AOK AI Colosseumが閉鎖され、掲示板ログともども多くのコンテンツが失われた。保存しておけば良かったと後悔しているがもう遅い。CATさんはAOK AIコミュニティのためにリファレンスマニュアルを作成してくれるなど貢献の多い人だったが、この点だけは自分が掲示板を管理しておけば良かったと後悔している。

AOK AI Colosseumに限らず多くのサイトが2007年5月現在消滅している。Not FoundをみるたびにWWWの世界の寂しさを感じずにはいられない。

■heavengamesのBBSからSimaqian Studioまで

一方私は、AOK Heaven などのサイトを束ねる heavengames系の掲示板の中に、歴史を語る掲示板があるのを見つけたので読んでみたところ、韓国人や中国人らが日本を貶めるような書き込みを多くしているのを発見したので、乗り込んで行って反撃していった。最初の頃は面倒だったので翻訳ソフトを使って出来た英文をそのまま書き込んでいたが、これなら自分で英語で書いたほうがまだマシだと思って英語の勉強がてら自分で英作文するようになった。そこからはまた別の話で、既に「85.おとしめられる日本」「102.実用英語講座」などで書いているのでそちらを見てほしい。

そのあと、シンガポール在住の台湾人でハンドル名General_Zhaoyun(趙雲将軍)という人が立ち上げたSimaqian Studio(司馬遷スタジオ)にどういういきさつか参加し(因果関係は確かではないが私が司馬遷の史記について掲示板で書き込んだ)、第二次世界大戦以後の歴史を語ることが禁止されていた heavengamesの掲示板では書き込めなかった現代史についての書き込みを積極的に行い、ドイツ人相手に第二次世界大戦の枢軸国への不当評価に対しての共闘を呼びかけたり、ユダヤ人学生相手にシオニズムを批判したり、日本製の面白いCGIゲームの英語版を私が作ったときに粗く訳したマニュアルをインド人に訳しなおしてもらったりと、まあ色んなことがあったのだが、それはまた別の機会に書きたいと思う。

■おわりに

ライバルと頭脳を競い合うこの対決に私はとても多くの時間を使い、とても充実した時を過ごした。正直当時は半ば時間の無駄だとも思っていただが、こうしていま思い返してみると多くの人が集まって一緒に楽しい時を過ごしたことは、なにものにも代えがたいとても良い思い出になったと思う。

また同じようなAI勝負をやってみたいのだが、その後でた Age of Mythology はヨーロッパの神話を取り上げており日本では人気がなかった。また、Age of Empires III は高度なAIの仕組みを持っているようだったが、各自でAIを作るような仕組みになっていなかったため手が出せなかった。一方マイクロソフトが.NETの普及を目的に人工生命の生存競争をモチーフにしたTerrariumというAIゲーム大会を開き、私は一緒に参加すべく連絡がつく限り仲間に呼びかけたが、その頃になると人数が限られており、しかも扱っているテーマや技術的なしきいや興味の度にバラツキが見られ、結局たった一人で参加することになった。欠陥のあるシステムなのか、いい加減に作ってすぐ消滅したはずの個体がなぜか入賞してマイクロソフトのロゴ入りのヘンな七つ道具があとで送られてきた。

大学生の頃、麻雀のAIを作ってみんなで半荘一万回ぐらいやらせて競い合おう、なんてことを提案してみたのだが、議論が進むうちに結局くだらないプログラミングコンテストなんてものをやる方向で収束してしまい、うちの大学はしょせんこんなものかとガッカリした覚えがある。審査員がいて評価するようなコンテストじゃなく、ガチで戦うAI勝負のほうがずっと面白いのに。学生だけじゃなく先生も参加してくれそうだし。

AI対決の出来るゲームかなにかが新発売してくれないかなと大いに期待して待っているのだが、なかなか叶えられない。自分で作るしかないかなとも考えているが、それはそれで面白そうなのだけど、システムを作るので手一杯になって自分でAIを作ることに手が回らないような気がする。


戻る前回次回
gomi@din.or.jp