連載

テラリウム徹底攻略ガイド(改訂版)

第1回 あなたのコードは生き残れるか


チーム東工大+デジタルアドバンテージ
2003/05/10
Page1 Page2 Page3 Page4 Page5

本稿は、以前の連載を大幅に加筆・修正し、Terrarium Ver1.1に対応したのもです

 マイクロソフトは、.NET Frameworkのデモンストレーションの1つとして、非常に興味深いシステムを構築した。マルチ・プレイヤー・ネットワーク対戦型ゲーム「テラリウム(Terrarium)」である。ネットワーク対戦型ゲームといっても、ゲーム・パッドを持ったプレイヤー同士が反射神経を競い合うゲームではない。テラリウムは、自分でプログラミングしたプログラム・コード同士をネットワーク上で戦わせるゲームである。つまり各プログラマーが考え出したアルゴリズムの勝負だ。

テラリウムの実行画面
テラリウムではプログラミングされた生物同士を対戦させる。画面には自分で記述した生物以外に、ネットワークからほかのプログラマーが記述した生物もやってくる。この世界で勝ち残れるのは優れたアルゴリズムを持つものだけだ。

 本稿では、テラリウムでのプログラミングの基礎から、生存競争を勝ち抜くために必要なテラリウムのプログラミング・テクニックまでを解説する。

 なお本稿は、2002年4月に公開された同名記事の改訂版である。オリジナルの記事は以下のリンクから参照することができる。

 このオリジナル版当時は、テラリウムのバージョンが1.0だったが、一部がマイナー・バージョンアップされたVer.1.1になり、再びコンテストが開催されることになった。本稿では、オリジナル版に対して、このVer.1.1の最新情報を新たに追加するとともに、Ver.1.1を前提として、すべての記事を最新の状態に改訂した(追加情報については、テラリムの概要を紹介した直後に解説している)。

テラリウムの世界

 テラリウム(水槽のことをアクアリウムというが、テラリウムは陸上生物のための飼育器といった意味)は、ネットワーク上に構築された、独自の生態系を持つ仮想的なフィールドである。そこには3種類の生物が存在する。植物(Plant)と草食動物(Herbivore)、肉食動物(Carnivore)である。

 植物は光合成を行って繁殖していく。草食動物は植物のみを食料をとする攻撃性の低い動物だ。そして肉食動物は、草食動物あるいはほかの肉食動物の肉を食べて生きていく。いずれの生物も成長し、子を産むことによって繁殖するが、餓死や病気、あるいはほかの生物に攻撃されるなどして死んでいく。これが最も基本的なテラリウムにおける生態である。

 プログラマーは、草食動物あるいは肉食動物をプログラミングすることができる(植物もプログラミングできるが、コンテストでの対象とはならないし、第一おもしろくない)。草食動物では、いかに肉食動物から身を守りながら植物を食べるかがポイントとなるだろう。肉食動物ではもっと複雑になる。いかに食料となりやすい動物を発見するか、そしていかに近づき攻撃するか。もちろん体力は限られているため、移動と攻撃で体力を使い果たしてしまえば、その後に我が身を守ることができない。

 どちらの生物を選択した場合でも、1つのプログラム・コードから生成された生物プログラムは、それが1つの種(species)となる。最も生息数の多い種を作ったプログラマーがテラリウムでは勝者である。ただし自然界と同じで、増えすぎた種はいずれ淘汰される。また強い種が常に強いとは限らない。そのときの生態系を構成する種によるのである。

テラリウム・プログラマーのためのリソース

 テラリウムについて具体的な話をする前に、ゲームを始めるにあたって必要となる情報をまとめておこう。

 まず、テラリウムに関する基本的な情報はマイクロソフトのサイトである

にすべて集められている。

マイクロソフトの「Terrariumサイト」
テラリウムに関する基本的な情報はすべて集められている。まずここからチェックしよう。

 ここからは以下の情報について知ることができる。

 セットアップ方法やゲーム画面の操作方法はもちろんだが、生き残るプログラムを作るためには「Terrarium開発ガイド」に目を通し、オブジェクト・モデルで解説されているクラス群をひと通り眺めておく必要があるだろう。これらを読めば一見シンプルそうに見えるテラリウムの世界も、実はかなり奥の深いゲームであることが分かるだろう。

 本サイトでも、「連載:世界のWebサービス」の中の「第10回 マルチプレイヤー・ネットワーク・ゲームTerrarium」でテラリウムの紹介を行っている(ただしVer.1.0当時のもの)。そこではテラリウム・システムの話から、簡単な生物プログラミングの解説までをコンパクトにまとめているので、本連載と並行して参考にしていただきたい。

 それでは、テラリウムの概要が分かったところで、今回改めて開催されることになったテラリウム・コンテストの内容と、テラリウム1.1で追加・変更された機能についてまとめよう。

 

 INDEX
  テラリウム徹底攻略ガイド(改訂版)
  第1回 あなたのコードは生き残れるか
   テラリウムの世界
     テラリウム 1.1 最新情報
     インストールとセッティング
     見えざる神の手「テレポーター」
     Ecosystemデビューから絶滅まで
 
インデックス・ページヘ  「テラリウム徹底攻略ガイド(改訂版)」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間