NEROゲームがバージョン2.0への進化を達成

 昨年本サイトではNeuro-Evolving Robotic Operatives(NERO)というゲームを紹介したが、このゲームのプレーヤは自律行動型のロボット部隊をトレーニングして別プレーヤの軍勢と対戦させるのだが、その戦闘行動はすべて自分がトレーニングした人工知能(AI)の判断任せにするしかないという点で非常にユニークな存在となっている。今回のメジャーリリースは数週間前に行われたところだが、NEROをまつわる動きはそれだけに止まってはいない。

 そもそもNEROの開発は、テキサス大学オースティン校のコンピュータサイエンス学部におけるNeural Networks Research Groupにて進められたが、このプロジェクトは学生教育用の演習およびコンピュータにおける機械学習能力の研究という2つの側面を有していた。

 このゲームはプロプライエタリ扱いのTorqueゲームエンジンを使用しているが、Linux、Mac OS X、Windows用のバイナリがフリーで入手可能となっている。今回のリリースはバージョン2.0とされており、2005年の公開時から最初のメジャーアップデートリリースとなる。なお現状でも1.xシリーズのバイナリはダウンロードできるようになっているので、新旧両バージョンの違いを比べてみてもいいだろう。どちらのリリースも自己完結型の構成となっているので、両バージョンを同時インストールしてもコンフリクトの心配はないはずだ。

 Linux用バイナリはtarボールをgzip化した形態で配布されているので、各自のシステムの適当なディレクトリにダウンロードすればいい。ただしコンパイルされているのは32ビットIntelアーキテクチャLinux用のものだけであり、サウンド再生にはOpenALを必要とする。ゲームを起動するには抽出後のディレクトリで./nero.binを実行するだけである。

 ここで一言注意しておこう。私が手元の環境で試した限りにおいて、NEROにフォーカスを移動するとCPU処理能力が独占されてしまうのだ。実際、動作中のNEROをバックグラウンドに移動させると、CPU使用率が目に見えて低下することが分かる。オフィシャルなバグ/フィードバック用フォーラムも運営されているが、この問題が報告された形跡は見あたらない。それでもこの現象は今回試した2つのLinuxマシンで再現されているので、自分がプレイする場合はその辺を覚悟しておく必要があるだろう。元々このソフトウェアは研究プロジェクトの一環として作られたものであり、多少のバグの残留は致し方ないと言ったところかもしれない。とりあえず、かなり長期間のトレーニングセッションを実行中のNEROに対するコアダンプを取ることはできたので、これがどの程度の功を奏すかは今のところ不明だが、取得結果を保存するようにはしている。

 これから初めてNEROをプレイするユーザは、オンラインドキュメントに目を通しておくべきだが、ここに説明されているのは実質的にゲームのメニュー構成と設定オプションだけである。実際にプレイするには、ゲームに組み込まれたチュートリアルを実行する必要があるだろう。基本チュートリアルは、このゲームにおけるコントロールシステムの操作法およびロボット部隊のトレーニング法の基礎を解説しているが、上級チュートリアルはNEROの根幹を成す機械学習モデルを詳しく解説しており、少なくとも理屈上は、その辺の知識を押さえておくことでロボット部隊のトレーニングを効果的に行えるはずである。

 ゲームの進行はNERO 1.xと変わりなく、時間をかけて自分のロボット部隊をトレーニングしてから、対戦相手との間で集団戦を繰り広げさせてトレーニングの成果を試すだけである。ただしNERO 2.0では、ゲームを構成するこれら双方のセグメントにおいて大幅な変更が施されている。

ゲームのコントロールシステム

nero_1_thumb.jpg
NERO 2のトレーニングモード。ヘッドアップ表示部が縮小され、放射状のコンテクストメニューが採用されている

 古参のNEROプレーヤが最初に気づくのは、ゲームのコントロールシステムが一部変更された点だろう。

 トレーニングモードにおけるヘッドアップ表示部はかなりの縮小化が施されており、プレイフィールドに対する見通しが改善されている。ここには、本ゲームの中核であるペナルティ/リワード(賞罰)のスライダが表示されるが、これは次世代以降に誕生するロボット部隊の能力をも規定する非常に重要なパラメータである。これらスライダへの設定変更は、Applyボタンが押されるのを待つことなく直ちに適用されるようになった。

 画面表示の改善については、NERO 1.x版のトレーニングセッションの一隅を占めていたPlace Enemiesツールボックスの廃止が大きく寄与している。そこに割り当てられていた機能は放射状のコンテクストメニューでアクセスする方式に改められており、オブジェクトの追加操作は、トレーニングマップ上の任意の場所を右クリックして必要なものを選択すればいい。訓練用の敵兵、障害物となる壁、フラッグなども同様の手順で配置できる。

 その他のトレーニングコントロール(approach enemy rangeやlifetimeスライダなど)でも、ラベル表示を廃止することで画面スペースの節約に成功している。その反面これらの操作性は悪化しており、どれが何のコントロールであるかを確認するには、小型アイコン上にマウスポインタを移動してツールチップ方式で表示される説明文を読まなければならない。またスライダの設定値は数字表示されないため、すべての調整は目分量で行うしかなくなっている。

 新規にトレーニングモードに追加されたのがGraphsボタンであり、これを使うとロボット部隊の能力試験を行う際に、そのニューラルネットワークの学習データをリアルタイムで確認することができる。もっともこのグラフに関しては、ゲームの付属ドキュメントなりチュートリアルなりでの説明を欲するところである。これらの示す意味は、NEROのプログラマ陣や人工知能研究者には説明不要の事柄なのかもしれないが、ゲームで役立てるにはプレーヤに対するそれなりの説明が必要なはずだ。実際、fitnessやbrainなどのカテゴリ分けがされた16ものメトリックが用意されており、これらの具体的な意味が分かればより有効な活用ができるはずである。

 1つ大事なことを言い忘れていたが、トレーニングモード時の敵兵を描画する3Dモデルもアップグレードされている。旧バージョンのNEROでは、自軍に向けて砲撃してくる“turret”(ターレット=砲塔)という名称の敵兵として3種類を選ぶことができたが、これらの描画モデルはどれも同じであり、しかも砲撃してこないタイプの敵兵と同じモデルが使い回されていたのだ。新バージョンにおいては、ターレットという名称に相応しいデザインに改められた上で、これら3種類のモデルが区別されるようになっている。欲を言えば、これらのモデルが本番の戦闘画面において動き回る姿が見られないのが残念なくらいだ。

ゲームのプレイモード

 NERO 1.xで行えた対戦はデスマッチ形式のバトルだけであり、これはマップ上で両陣営が戦闘して、敵軍をすべて殲滅させるか、あるいは制限時間内により多数の敵兵を倒した方が勝利するというゲームである。

nero_2_thumb.jpg
NERO 2の“テリトリーコントロール”対戦モード。手前にそびえ立っているのが陣地を示すコントロールポイント

 そしてNERO 2.0では新たに“テリトリーコントロール”という対戦モードが導入された。テリトリーコントロールの対戦では、戦場に配置された多数の陣地を占領することが両軍にとっての目的となる。コントロールポイントのデザインは鋼鉄製の街路灯とでもいった姿になっているが、これらはロボット部隊の集結地かつ量産拠点として機能する。つまり占領したコントロールポイントの数が多いほど、1度に配備できる兵員数が増えることになる。

 プレーヤとしての熱の入り方で比べると、先のデスマッチバトルよりもこのテリトリーコントロールの方に軍配が上がるだろう。デスマッチバトルでプレーヤにできるのは事前のトレーニングがすべてであり、その後の戦闘ではトレーニングの成果を戦場で確認するだけの傍観者としてしか参加できないからだ。それに対してテリトリーコントロールの対戦では、事前にトレーニングしたロボット部隊を量産するごとに、どのコントロールポイントを攻撃目標とするかを指示できるようになっており、プレーヤはリアルタイムでの判断を迫られることになる。

 プレーヤが傍観者とでしか参戦できないNERO 1.xのデスマッチバトルを拍子抜けだと感じたユーザであっても、このテリトリーコントロールなら楽しめるのではないだろうか。逆に、人工知能の自律判断による対戦を目的としているユーザにとっては、不完全な人間の判断が介在するテリトリーコントロールなどは意に染まない対戦モードかもしれない。よくよく考えてみるとこのソフトウェアは、人間の代わりにロボット部隊に自らの行動を決めさせて対戦させることが目的のゲームであったはずである。

新出した問題点

 私はこの新バージョンについて、テリトリーコントロールの対戦に関するヒントを解説できるほどやり込んではいない。もっとも、今回新たに発生した問題点についていくつか確認しているので、その点を説明しておこう。

 その1番目だが、NERO 1.xにおいては対戦画面上で敵と味方を区別しやすくするため、両軍のロボットを異なるモデルで描画する、攻撃時の砲煙を異なる色で表現する、各ロボットごとに明るいリングを表示させ移動時にも追跡するようにしておくという3種類の措置が取られていた(いずれの表示も、各陣営ごとにブルー系とレッド系の配色で統一)。

 NERO 2.0では、各個体を目立たせるためのリング表示が廃止されたため、対戦時の識別が行いにくくなっており、目を凝らさないと見分けが付かないくらいだ。この問題から生じるフラストレーションは、テリトリーコントロールの対戦においては倍増することになる。それというのも、ロボットの量産はコントロールポイントのクリックで実行できるのだが、どちらの陣営が占領しているかはズームインしないと確認できず、またコントロールポイントを操作するには再度ズームアウトさせる必要があるからだ。いずれにせよ個体識別用のリング表示は、ユーザ設定可能なオプションにしてもらいたいところである。

 2番目の問題は、カメラコントロールに柔軟性がない点である。視点移動は一般的なw-a-s-dキーに割り当てられているが、これは水平方向の移動だけで、上および下方向の移動はできない。もっともmキーを押してマウスビューに切り替えれば、上と下方向からの俯瞰とwおよびsキーによる移動ができるようになる。実際、移動するだけならマウスモードの方が楽なのだが、このモードではオブジェクトにアクセスできないため、テリトリーコントロールモードでの対戦で使うには非常に不便である。

 こうした不備はトレーニングモードでも顕在化している。ここでもオブジェクトが区別しにくいためズームインする必要があり、また見下ろす位置によっては一部のトレーニング情報にアクセスできなくなるのだ。例えば、現在のトレーニング成績はID番号別で示され、各ロボットのID番号はスペースバーを押すことで表示させることができるのだが、こうしたID番号もある程度ズームインしないと識別できないため、トレーニングの進捗を確認するには頻繁にポーズをかけてズームインとズームアウトを繰り返すことになる。

オープンソース化に向けての動き

 こうしたID番号表示の問題は純然たるバグであって、デザイン上の仕様などではないだろう。こうした問題も仮にNEROのコードがオープンソース化されていれば、次のリリースまで待つことなく即座に改善されていたはずである。この件に関しては、明るい展望を予感させるニュースが流れている。

 NEROの人工知能部を司っているアルゴリズムについては現状でもソースコードが入手可能であり、同ゲームの残り部分についても、開発陣は以前よりオープンソース化を歓迎するという発言をしている。それを妨げている最大の障壁は、同ゲームの根幹を成しているプロプライエタリ系のTorqueエンジンの存在である。

 そしてこの夏にNERO開発陣の一部グループが手がけ始めたのが、NERO 2.0のオープンソース版クローン作成であり、これは非公式にOpenNEROと呼ばれている。現状での進捗状況はソースコードを一般公開できるレベルまでは進んでいないそうだが、今後OpenNEROが目指す方向についての概略はリリースされている。

 初期目標として掲げられているのは、オープンソース版のゲームエンジンを用意して既存NEROのクローンを作成することである。その次の目標はゲームの人工知能部を入れ換え可能にして、異なる学習モジュール間での競争を実現することだとされている。

 プログラマの1人であるIgor Karpov氏は「最初のステップはNERO 2.0の主要なコア機能の再構成をすることですが、その次はより一般化を進めて、現行のNERO/NEATだけではなく様々なAIメソッドを搭載したバリエーションを作成できるようにしたいですね」と説明している。もう1人のプログラマであるJohn Sheblak氏がNEROフォーラムのコミュニティで語っているのは、対戦モードをユーザレベルでデザインできるようにしたいという構想である。

 NEROファン待望のこうしたオープンソース版ゲームのリリースは、実現するとしてもしばらく先の話になるだろう。同ゲームの開発陣は、その多くが現役の大学生であるが、現在この構想を実現するために鋭意作業を進めているところである。またゲームのソースコードが公開された暁には、外部から多量の支援を得られることになるのは間違いないはずだ。

 当座は、NERO 2.0で新たな対戦モードが追加されたことが、Linux用ゲームのプレーヤにとっての恩恵でもあることに満足しておこう。

 NEROのようなタイプの対戦ゲームのいったい何が面白いのかさっぱり理解できないという方もおられるかもしれないが、これ以上の思考力を要求される対戦ゲームというのもざらには存在しないはずである。自分は一線級の戦略家であると自認しているゲーマであれば、NERO上でその腕前を試してみることで、このゲームの完成度を実感できるはずだ。

Linux.com 原文