ぴたすちお、一人麻雀練習機などの自作フリーソフトの配布、数独などのパズル、麻雀、その他もろもろ
あらのHP 数独まにあ エクセルまにあ 麻雀研究所 賢く儲ける株式投資 お釣り ダイエット なたでぽぽ FX



2chで振り返る第1回テラリウムコンテスト

マイクロソフトは2002年5月1日(水)から6月28日(金)まで「テラリウム プログラミング コンテスト」を開催しました。
私はARA-ACとして参加し、学生部門、総合部門ともに優勝することが出来ました。

一方、日本最大の掲示板である2ちゃんねるのプログラム板では、テラリウムのスレッドが作られ、
コンテストについて意見の交換が行われていました。

ここではその過去ログを参照しつつ、コンテストを振り返っていきたいと思います。
すでにコンテストが終わってから1年近く経っていますので、記憶があいまいな点や忘れていることがあるかもしれません。
また話の流れ上、投稿の内容を一部削除しているものがあります。

1 名前: デフォルトの名無しさん 投稿日: 02/02/07 23:53

世界各国のプログラマーが向こう数週間,コード作成の腕前を競い合う 
――「インターネット経由で拡散し,同種のコードと対戦するソフト」の作成を目的とした 
イベントの中で。 
http://www.zdnet.co.jp/news/0202/07/e_terrarium.html 

テラリウムの最初のスレッドは米マイクロソフトのコンテストを紹介するZDNetの記事をもとにしたものでした。
スレッドのタイトルは"お前ら頃し合いしてください"というものです。
なんのことか分からないですが、2chらしいと言えない事もないですね。

しかし、日本語の資料がほとんどない状態ということもあって、しばらくは閑散とした状態が続きました。

私もまだテラリウムの存在を知りませんでした。

29 名前: デフォルトの名無しさん 投稿日: 02/04/19 20:17

来たな日本語版 
http://www.microsoft.com/japan/msdn/net/terrarium/

そして、4/19のこの投稿で日本でもコンテストが開催されることが紹介されます。
賞品は1位から10位までがX-BOXとのことです。

私もこの頃にどこかで情報を聞きました。
正直なところ賞品にはあまり魅力がありませんでしたが、
こういったコンテストみたいなものは結構好きで、
また学生で割と自由な時間があったので、参加してみようと思いました。

当時の私のプログラミング技術としては、C++が一通り使えるといった程度です。

.NETについては噂で聞いた程度で、全くの初体験でした。
とりあえずSDKをインストールして、環境を整えました。

言語はC++に近いからという理由でC#を選択したのですが、これも初体験です。

@ITのInsider.NetにあるC#の入門記事などを読んで、適当に勉強しました。
C#については本当に適当で、覚えたことといえばforeach文と多次元配列の書き方ぐらいでした。

次にやったことはテラリウムに関してのドキュメントを読むことです。
日本のHPに用意された開発ガイド、オブジェクトモデルなどを中心に、
目に入ったものはほとんど読みました。

テラリウムは基本的なルールが結構ややこしくて、この時点で一回挫折しそうになりました。
でも、実際にプログラムを書いているうちになんとかなるんじゃないかと楽観することにしました。
ドキュメントの中では、英語ですがGotdotnetのDiscussion ForumAnimal Farmが特に参考になりました。

さて2chでは、ひとしきりコンパイルなどについての話が出た後に、

165 名前: デフォルトの名無しさん 投稿日: 02/05/01 01:07

鯖発見 
http://www.terrarium.jp/ 

ということで、コンテストが始まりました。

私はまだ最初の生物が出来ておらず、必死にコーディング中だったので、
この頃はほとんどサーバーにつないでいませんでした。

コンテストのルールを読んでいろいろ想像した結果、
勝負は最後の1週間ぐらいではないかと考えていました。
なので当初は、6月中旬までは1匹も入れずにひたすら観察し、
最後に満を持して最強の草食を投入し、鮮やかに逆転勝利、というシナリオを描いていました。

さて、黎明期の日本サーバーの様子ですが、

337 名前: デフォルトの名無しさん 投稿日: 02/05/01 21:03

tabata_02が大増殖 
↓ 
cham-reoが食いまくる 
↓ 
エサがなくなりcham-reoが減る 
↓ 
以下繰り返し 

ということです。

tabata_02については、テラリウム徹底攻略ガイドにソース付きの詳しい解説があります。
つまり攻略ガイドの作者さんが記事のためのサンプルとして開発した草食動物でした。
最低限の機能しか実装されておらず、それほど強いわけではなかったようですが、
競合相手がいないためすごい勢いで繁殖したようです。

一方のcham-reoはAnimal Farmに公開されている肉食のサンプルです。
tabata_02との相性が良かったため、繁殖したものと思われます。

445 名前: デフォルトの名無しさん 投稿日: 02/05/02 22:59

tabtaは少しずつ減少傾向か、 
まぁ今までの7000匹とか言うのがそもそも異常だったんだが。 

492 名前: デフォルトの名無しさん 投稿日: 02/05/03 02:03

buu_sou3増加中。 

529 名前: デフォルトの名無しさん 投稿日: 02/05/03 12:57

いつの間にか buu_sou3 がトップに。 

5/3にはbuu_sou3がトップになったようです。
これはAnimal Farmのサンプル草食です。

954 名前: デフォルトの名無しさん 投稿日: 02/05/05 22:57

gamma6だらけだ。。 

そして、5/5にはまたトップが入れ替わります。
gamma6はアメリカのコンテストで上位に入賞した草食で、gamma5とセットで長い間繁殖することになります。
非常に特徴的な動きをする攻撃的な虫です。
おそらくお互いに動きをチェックして、仲間かどうかを判断し、同士討ちをしないようにしているらしいのですが、
具体的にどうなっているのかは最後まで分かりませんでした。

この虫は攻撃的で、当時草食動物を作っていた私にとってはやっかいな存在だったのですが、
本当にやっかいだった理由は他のところにありました。

それは動きが重いということです。

自分の草食のチェックのために、他の虫たちと対戦させる作業が必要なわけですが、
こいつらが入るとテラリウムの動作が目にみえて重くなってしまうのです。
コンテスト終盤には他に強い草食が出てきたので、練習相手としてgammaを使う必要はなくなりましたが、
最初のうちはこれに相当苦しめられました。

しかし、gammaもすぐにトップから退くことになります。

129 名前: デフォルトの名無しさん 投稿日: 02/05/06 22:35

cmhare放った奴の顔が見てみたい。 

cmhareとはアメリカのコンテストで優勝した草食動物です。
攻撃的ではありませんが、肉食から逃げるのがとにかくうまいです。
優勝するぐらいなので強いに決まっています。

つまり、この時点でcmhareを投入すれば、当然大繁殖してしまいます。
そして、生息数トップになるためには、これよりも強い虫を作り上げなければなりません。
この時点ではそれはかなり困難だと思っていましたので、
いったい誰が何の目的でcmhareをいれたのかは私も知りたい所です。

ちなみに私はマイクロソフトの方が投入したものだと推測していました。
つまり、日本のコンテストをアメリカよりも高レベルなものにするために、
手始めにチャンピオンを倒してみろということかと思っていました。
しかし、表彰式の折に聞いてみたところ、違うということがわかりました。

いったい誰が何の目的で投入したのでしょう?

231 名前: デフォルトの名無しさん 投稿日: 02/05/10 10:04

Add 12146 cmhare01 CorwinXX Herbivore 
Add 3487 buu_sou3 Buu2Test Herbivore 
Add 1954 gamma5 Galina Glazko Herbivore 
Add 1896 gamma6 Galina Glazko Herbivore 
Add 905 honeymonster5c footballpitch Herbivore 
Add 413 shera05 ARA-AC Herbivore 
Add 325 cham-reo cham-reo Carnivore 
Add 212 inchworm ?? Herbivore 
Add 206 sht_01r01 SHT T.Higashiura Herbivore 
Add 198 ymherbi38 yoshidam

予想通りcmhare01は圧倒的な強さを見せ、大繁殖しました。
また、上位は外国勢で占められています。

ちなみにこの表の見方ですが、2列目から、総数、動物名、作者名、Herbi/Carniです。
一番左のAddというのは統計のHPからのコピペの都合でついているだけです。

6位に入っているARA-ACが私です。
すでにこの時点で私の最初のシナリオは崩れ去っています。
ゴールデンウィークを使って一応草食が出来あがったので、嬉しくてついリリースしてしまいました。
cmhareたちにかなわない事はローカルの実験で十分わかっていたので、
この結果には別にショックを受けたりはしませんでした。
逆にある程度増えたので少し手ごたえを感じました。

結果的にはこのシナリオ変更は正解だったと思います。
リリースしてみなければ分からないことというのもありましたし、
なにより長い期間テラリウムを楽しむことが出来ました。
自分の虫が増えていく様子を見ているのは、意外に面白いものです。

616 名前: デフォルトの名無しさん 投稿日: 02/05/16 11:04

2881 cmhare01 CorwinXX 
2350 xxxxxx01 XXXXXXXX 
1724 gamma5 Galina Glazko 
1616 honeymonster5c footballpitch 
1453 gamma6 Galina Glazko 
1370 shera06 ARA-AC 
1306 shera09 ARA-AC 
1293 shera11 ARA-AC 
1268 shera05 ARA-AC 
839 ztest ztest 
478 buu_sou3 Buu2Test 

5月の中旬になって、少し様子が変わってきました。

草食動物の種類が増えたことによって、いままでのcmhareの独占が崩れ、
上位が拮抗してきたのです。

xxxxxx01については詳細は分かりませんが、ildasmで覗いてみたところ、
cmhare01と非常に似通っていることが分かりました。
どうやらcmhare01のdllをハックして作り上げたクローンのようです。
どうせ入賞資格はないだろうということで、当時はあまり気にしていませんでしたが、
一体誰の仕業だったのでしょうか?

さてsheraの方はバージョン11までリリースされています。
生息数を増やすことを考えれば、多くの種類の草食を投入するのは賢くないことです。
しかし、どうせこのレベルで勝負がつく訳がないという事情もありました。
ということで、このあたりでは新機能を付ける度にリリースを繰り返していました。
新バージョンが旧バージョンよりも上にいくことで、少しずつでも進歩しているということを実感できました。
この時期に草食を作っていた人たちにとっては迷惑だったかもしれません。

sheraシリーズは11で終了し、この後私は新たな草食lieの開発に取り掛かっていきました。
sheraは私の初めてのC#プログラムということもあって、
かなりぐちゃぐちゃな状態だったので、もう1度最初から作り直すことにしました。

これは賢い判断だったと思います。
当面の目標は打倒cmhareです。

76 名前: デフォルトの名無しさん 投稿日: 02/05/23 08:10

1  nasb_tama   4282 
2  xxxxxx01    2178 
3  cmhare01    1952 
4  shera11     964 
5  gamma6      934 
6  gamma5      895 
7  ztest       694 
8  buu_sou3     643 
9  shera06      492 
10 shera09     489

ところがnasb_tamaの出現によって状況が一変します。
なんとcmhareをあっさり抜いてしまったのです。

慌ててnasb_tamaを研究してみると、攻撃的な草食動物でした。
どうやらcmhareを倒すには積極的に攻撃するのが良いということを勉強しました。
これまでsheraでは肉食から逃げることに重点をおいており、
草食を攻撃することはほとんど考えていませんでした。
このnasb_tamaの戦略はlieの開発に大きな影響を与えました。

shera11がそれなりに順調で、XBOXは貰えそうだということで、
私はそれほど焦ることなくlieの開発を続けていました。

lieの出来具合のチェックは、当時cmhareが支配していたアメリカサーバを使って行っていました。
lie01,02と返り討ちに合いましたが、03でなんとかcmhareを倒すことができ、04,05とさらに改良を加えました。
しかしnasb_tamaとローカルで対戦させてみると、若干分が悪いようです。
時間をかけて地道に改良を続けていけば、そのうちにはなんとか勝てるようになるんじゃないかとも思いましたが、
それよりも他にやってみたいことがありました。

それは、lie005だけを攻撃しない肉食動物を作ることです。

このときまで肉食は全く作っていませんでしたが、
優勝するためには強い肉食を作る必要があると思っていました。
そうして6月のはじめに、最初の肉食letyが完成しました。
letyは攻撃的な性格で、lety同士で攻撃し合わない仲間機能を搭載しています。
仕組みは単純でSkinにARA-ACの文字列が入っていれば仲間であると見なします。

肉食に草食を守らせるこの戦略は想像以上に効果的なようでした。
例えばnasb_tamaが80匹、lie005が10匹の状態のところにletyを入れると、
結構簡単に逆転したりすることがローカルの実験で確かめられました。

早い時期にこれらをリリースしても、あまりいいことはないと思い、
lie005とletyシリーズを作った後しばらくの間は投入のタイミングを待っていました。
出来るだけ遅い時期に投入した方が得だと思っていたのですが…。

509 名前: デフォルトの名無しさん 投稿日: 02/06/05 12:34

shera11の作者の新型lie005が出てきてるね。 


514 名前: デフォルトの名無しさん 投稿日: 02/06/05 18:46

sasorin0a、確実に増えてるね。20匹/時ぐらいか。このまま行くと… 

2chではlie005の方が先になっていますが、実際はsasorin0aの方が3時間程早く投入されました。
ある晩何気にテラリウムを見ていると、投入されたばかりのsasorin0aが
ものすごい勢いで増えていくのを目撃したのです。
すぐに取り寄せてローカルで戦わせて見るとlie005よりもほんの少し強いように見えました。

この頃はnasb_tamaがずっとトップにたっていたこともあり、そろそろ動いてもいいかなということで、
lie005を投入しました。

その後sasorin0aと共に結構な勢いで増えていったのですが、やや負けている感じでした。
そこで温存しておくつもりだったletyもついでに投入してしまいました。
堪え性がないと言えばそれまでですが、仲間機能の効果を実戦で試すことと、
偽装についての他の人の反応を見るという目的も一応ありました。

結果的にはこの段階で肉食を出したことが、私に有利に働いたと思います。

568 名前: デフォルトの名無しさん 投稿日: 02/06/07 00:12

lie逆転したね。 

その結果あっさりとトップになることができ、しかも

583 名前: デフォルトの名無しさん 投稿日: 02/06/07 14:28

うちのEcosystemでは今、lieが70匹、letyが3種10匹ずつで独占状態だよ。 

のように独占状態を築くことが出来ました。
lieもletyもSpiderのスキンを使っていたので、

584 名前: デフォルトの名無しさん 投稿日: 02/06/07 14:42

がめんが真っ黒コロスケナリ〜 

という状態になりました。
このレスにはちょっと笑ってしまいました。

しかし、これは長くは続きませんでした。

585 名前: デフォルトの名無しさん 投稿日: 02/06/07 15:57

偽装して殺せば、いーじゃん。 

という意見がすぐに出てきます。
これは実に簡単なことで、スキンに" ARA-AC "と書くだけでletyは全く反撃せずに殺されます。
最初のletyを入れた時点で、偽装される可能性があることはわかっていたのですが、
対応するのが面倒でやっていませんでした。
今考えれば偽装対策をきちんとやっていれば、もっと楽に勝てたのではないかと思います。
これについては結局最後までちゃんと実装することはありませんでした。

またこの段階で、本当に誰か偽装してくる人がいるのかを知りたいという理由もありました。
自分のコードの中に"ARA-AC"という他人のハンドルネームを入れるのは結構な抵抗があるのではないか、
ということです。

しかし、非常にあっさりと偽装されてしまいました。

615 名前: デフォルトの名無しさん 投稿日: 02/06/08 01:26

Cleanerを肉食に作り変えたSweeperですけど、偽装してるだけあって結構な 
勢いで増えてますね。このまま月曜までにletyを壊滅できるかな? 

このsweeperによってletyシリーズはあっという間に壊滅しました。
この後2chでは偽装賛成派と反対派の間で議論が展開されます。
私はどちらかと言えば賛成派だったのですが、話がややこしくなると思ってROMっていました。
ルールで禁止されていないことは基本的にやっても良いはずです。
ただしポートを閉じる行為などはかなりグレーに感じるので、
ルールなりシステムの強化が必要だということでしょう。

さてletyがやられた後、新しい肉食を入れる必要があるということで、
この頃は次の肉食シリーズlufasの開発に一生懸命でした。

708 名前: デフォルトの名無しさん 投稿日: 02/06/11 23:49

1906 nasb_tama 
1849 lie005 
1816 sasorin0a 

そして上位3種がいい勝負になった頃を見計らって、lufasの投入を開始しました。
学生部門の順位決定が6/14だということもあって、このときのlufasはてこ入れの意味合いが強いものでした。

その結果、学生部門では危なげなく優勝することが出来、とりあえず一安心です。

その後、適当にパラメータを調整したり、仲間判定方法を変えたりしながらlufasをほぼ毎日投入し続けました。
そして終了まで1週間となった頃、恐れていたものが来ました。

100 名前: デフォルトの名無しさん 投稿日: 02/06/23 07:35

nasb_yuzuってのが来たよ 

106 名前: デフォルトの名無しさん 投稿日: 02/06/23 19:08

nasb系がいっぱい来たな

それはnasb系の新種です。
nasb_tamaの作者さんが、tama投入後に肉食を作りこんでいるとしたら、
おそらくlufasよりも強いものが出来ているはずです。
そもそもlieよりtamaの方が強いのですから、もし肉食と協力されたらかなわないかもと思っていました。
しかし、理由はよくわからないのですが、yuzuをはじめとするnasb系が大繁殖することはありませんでした。

lieの方はlufasの健闘のおかげで順調にトップを走っています。
特にlufas018,019の頃はほとんど独占状態を築いていました。
しかし実は、18,19は私の失敗だったのです。
仲間の判定を甘くしすぎていました。その結果として、

163 名前: デフォルトの名無しさん 投稿日: 02/06/24 23:58

sweeper07_が思い出したように増えてるけど、これ 
ARA-ACの偽装なんだっけ? 

という事態を招いてしまいました。
以前にsweeperに偽装されたことをうっかりして、
同じ過ちを繰り返してしまったわけです。
少し慌てましたが、次のlufasで18,19を駆除することが出来、事なきを得ました。

そして最後にremover,eraserなどの作者さんが、本命の草食imomushiシリーズを入れてきましたが、

201 名前: デフォルトの名無しさん 投稿日: 02/06/26 01:15

imomushi伸びないね。 

ということでした。
理由はよくわかっていないのですが、
おそらくlufasの効果が予想以上に大きかったということではないかと推測しています。

lie005は十分なリードを保ったまま最終日を迎え、

338 名前: デフォルトの名無しさん 投稿日: 02/06/28 08:43

速報です、当確が出た模様です。 
Terrarium日本区、ARA-AC氏当選確実です! 

6/28の朝には当確を出してもらえました。

そしてそのまま12:00を迎え、無事に優勝することが出来ました。

結果をみれば圧勝ですが、早い時期にトップにたったこともあり、
最後までいろいろ心配してしまいました。

その後の2chではimomushiの作者さんなどが、大会を振り返ったり、
技術情報を公開したりしてくれました。

蛇足ですが、

360 名前: デフォルトの名無しさん 投稿日: 02/06/28 21:08

robocodeにいってくる

というような投稿もあり、私もこの後robocodeの方に流れていきました。
これはこれで面白いゲームなので、興味のある方は試してみてください。

なにはともあれ、非常に楽しい2か月間を過ごさせて頂き感謝しています。

[ テラリウム攻略法 ]


このページに対するご意見ご感想は (ara999 あっと gmail.com ) までお願いします

あらのHP 数独まにあ エクセルまにあ 麻雀研究所 賢く儲ける株式投資 お釣り ダイエット なたでぽぽ FX