ここではテラリウムにおいて生物をプログラミングする際に必要となる事柄を説明します。
まずは開発ガイドや@ITのテラリウム徹底攻略ガイドを読んで、
テラリウムの仕組みやAPIについて理解することが必要です。
意外と複雑に出来ているため、読んだだけで全て理解するのは難しいかもしれません。
場合によっては自分で試しながら身に付けていってください。
そして自分がどのような生物を作りたいのかを決めていきます。
具体的には、草食か肉食か、攻撃的なのか守備的なのか、といったことから考えると良いでしょう。
ちなみに前回のコンテストで私はlie005という草食動物で優勝しましたが、
その他にもlufasという肉食動物を作って、協力させていました。
両方とも作ってみるのが良いと思いますが、
どちらかと言えば最初は草食動物の方が作りやすいのではないかと思います。
以下では草食、肉食に共通する話題を取り上げます。
なにをやるにしても周囲の状態を常に把握しておく必要があります。
基本的にはScanを呼び出すだけで良いのですが、カモフラージュしている相手を想定して、
LookForを複数回行う方がより安全です。
次に、得られた情報を整理し、自分の行動を決定しなければいけません。
大きく分けて、攻撃する、逃げる、探す、食べる、何もしない、に分けられます。
この判断をいかに正確に行えるかが最も重要であり、そのための材料が周囲の状況です。
基本的には自分の視野の範囲の情報しか得ることが出来ませんが、
少し工夫することで、より広範囲の状況を把握することが可能になります。
例えば植物は移動しないので、視野から外れた後もしばらくは場所を記憶しておくと良いでしょう。
また遠くから高速で視野に入って来た生物がいれば、その向こうには敵がいる可能性が高いです。
草食動物のエネルギーが上がっているのを見かけたら、その向こうにはきっと植物があります。
繁殖できる生物を作るためには、障害物になるべくぶつからないように移動することが必要です。
そのため、上記で得られた周囲の情報をもとにして、自分の周りの2次元マップを作ることになります。
そして、自分が進む道に何もないときにだけ移動するようにします。
直進しているときに正面に障害物を見つけた場合は、なるべく早く進行方向を修正した方が、
移動距離をロスすることなく回避出来ます。
前回のコンテストで、あまり強くない生物を観察していると、植物にずっと引っかかっていたり、
無駄のある回り込み方をしていたりするものが多く見受けられました。
おそらく、障害物をうまく避けることはかなり重要な要素だと思います。
また、障害物が動物の場合には、相手も移動することが考えられます。
あらかじめその相手の移動する方向を予測して、ある程度の余裕を持って避ける必要があります。
とにかく障害物にぶつかることは極力避けるようにしましょう。
テラリウムでは、いかにエネルギーを手に入れるかというのも大切ですが、
いかにエネルギーを使わないか、というのも同じぐらい大切なことです。
エネルギーは、移動する、子供を産む、ダメージを回復する、などのために消費されます。
後の2つについてはほとんど節約することができないので、
いかに移動を少なくするかが重要となってきます。
同じ距離を移動する場合でも、速く動くより、ゆっくり歩いたほうが節約になります。
基本的には必要最低限の速さで移動するといいでしょう。
ただ実際には、どのくらいの速さで逃げれば逃げ切れるのか?とか、
逆に追いつくためにはどのくらいのスピードが必要か?というのは、やってみなければわかりません。
その辺の戦略が勝負に大きく影響してきます。
また、動物のサイズによっても、消費されるエネルギーが違ってきます。
いろいろ試行錯誤して、最適な移動速度を慎重に決めて下さい。
自分の生物を設計し、一通り実装したら、次は当然テストを行うことになります。
テラリウムでは生物はdllとして実装する必要があるため、
通常のプログラミングと比べ、デバッグ作業がやや煩雑になります。
基本的にはトレースウィンドウを使った、いわゆる"printfデバッグ"を行うことになると思います。
WriteTrace関数を使って、変数の内容をトレースウィンドウに出力し、
それが意図したものであるかどうかを追いかけていきます。
通常はこれで十分ですが、場合によってはやはりIDEを使ったトレースをした方が便利です。
VS.NETやSDKのDbgCLR.exeを使うことにより、これを行うことが出来ます。
詳しい手順については、こちらの140,146を参照して下さい。
[ テラリウム攻略法 ]
このページに対するご意見ご感想は (ara999 あっと gmail.com ) までお願いします