昔遊んだゲーム、友人の家で遊んだゲームで「あー、そんなのあったなあ」となぜか時々思い出すというゲームがある。”COMSIGHT”もそんなゲームの1つである。
COMSIGHTは、当時としてもかなり地味なゲームだった。ポリゴン状のタンクがフィールド上で戦うというゲームなのだが、戦闘中にプレイヤーがやることは見るだけなのだ。このゲーム、タンクの動きをプログラミングして、そのプログラムの強さを競うというゲームなのである。しかし、地味ではあるが実際に始めてみるとこれが面白いんだな。
Wikipediaによると、
『COMSIGHT』(コムサイト)は、1987年にテクノソフトより発表されたアルゴリズム構築型シミュレーションゲームである。
本作は3Dポリゴン表示されたタンク同士の対戦ゲームである。本作最大の特徴は「プレイヤーはタンクを直接操作するのではなく、タンクに指示するためのアルゴリズムをプログラムとして記述することで、間接的にタンクを操作する」「タンクを操作するプログラムを、対戦プレイ中は変更できず、対戦前に事前に作成しておく必要がある」という点にある。つまり、タンク同士の対戦プレイ中、プレイヤーはタンクの挙動を見守ることしかできないというわけである。
Wikipediaより
とある。ゲームのあらましについてはWikipediaの説明のとおりで、BASICライクな言語でタンクの制御プログラムを開発する。開発環境や動作チェックをするためのシミュレーションフィールドが用意されている。特筆すべきは1987年という時期にこのようなシステムのゲームを発売していたことと、当時の8bitPC上でポリゴンを動かしていたことだろう。
このゲームの難しさは、搭載されたエネルギーを移動と攻撃の両方にうまく振り分ける必要がある点だと思う。エネルギー切れは即負けなので、無闇やたらな攻撃はできない。敵を索敵し、確実に敵にダメージを与えるようアルゴリズムを工夫する必要があるのだ。最初からそういう難しいことを考えるのは無理なので、まずはいくつかのサンプル機体とプログラムを参考にしながらプログラムの開発を行う。
タンクにはいくつかのタイプがあり、それぞれ防御特性が異なる。正面のみ防御シールドの高いタイプ、前後が強いタイプ、全周まんべんないシールドを持つタイプ、斜め方向に強いタイプ、後方のみ強いなんてタイプもある。この中から、自分のスタイルにあったものを選択して、その特性にあった攻撃スタイルを考えるのだ。
攻撃手段は、ビームとミサイルの2種類があり、射撃コマンドにおいてはそれぞれ投入するエネルギを指定することが出来、これが威力に直結する。ビームは弾速が高く、発射から命中までのタイムラグが少ないので敵が正面にいれば外すことはないが、投入エネルギに対する威力もミサイルに比べて劣り、正面にしか撃てないので相手との位置関係をうまく制御する必要がある。さらに、距離が離れると威力が落ちるという欠点がある。ミサイルは全方向に撃つことができるが弾速が低く、敵に回避される可能性が高いどころか移動中の敵に当てるのが難しい。その一方でミサイルは投入エネルギに対する威力が高く、しかも威力が距離によらないため、もし命中が得られれば効率よく相手にダメージを与えることが出来る。
このゲームでは割と簡単に強いタンクを作ることができ、前面装甲の厚いタイプを選択し、相手を見つけたらとにかくビームを叩き込むといったアルゴリズムを採用すると以外に強い機体になる。サンプルの中にそういった機体があるので、これをベースとして開発すると相当強いタンクになる。ただ、このタンクに勝てるタンクを作ろうとすると意外と大変なことになる。
前面装甲の厚いタンクは、正面からレーザーを撃たれても完全破壊することはできないこともあるので、このようなタイプのタンクに対抗するためにはミサイルをいかにうまく使うかが重要となる。ところが、常に動き回る相手のタンクにミサイルを命中させるアルゴリズムを考えるのはかなり難しく、私も結局のところミサイルをうまく使うアルゴリズムを考えつくことができなかった。
だが、時々このゲームのことを思い出し、遠距離から敵にミサイルを当てる方法を今から考えたら思いつくだろうか?などと考え、もし機会があればもう一度やってみたい、今度こそミサイル巧者なプログラムを作ってみたいと思うのである。
後になって1つ思い出したことがあり、どうしても書いておきたくなったので付け足し。COMSIGHTで使われるBASICライクな言語についてだが、マニュアルには各命令を実行するのにかかる時間が明記されており、”IF THEN”文の実行にはやけに時間がかかることになっていた。そのため、”IF THEN”の条件分岐ではなく、変数をうまく使ってできるだけ条件分岐を避けるなど、ローカルなプログラムテクニックが必要だった。複雑な処理をやろうとするとなかなかうまく行かずに随分と悩んだものである。


コメント