[航空講座 Level0]『動けスパンキー!』
1・ソフトウェアとは?
2・攻撃
3・索敵:旋回:移動
*・改良について
4・回避
5・機体組み上げ
zeus2でoke(=このゲームでのロボットのこと)を設計するには,
・まず「機体」を選択し
・次に「装備(cpu・装甲・武装・オプションなど)」を決め
・最後に一番大切な「ソフトウェア」を組み立てる,
という手順が必要になります。
ソフトウェアっていうのは,okeたちがどう動くかをプログラムしてあげることで,わかりやすくいうといろんなゲームでコンピュータが操る敵キャラを作るようなものです。ほら,よくボスキャラでホントは強いくせにバグ持ちで変な動作を繰り返す奴とかいるでしょ?あの子たちは与えられたソフトウェア通り一生懸命動いてるんです。でも,ソフトを組んだ人間がアホだったためにああいうことになっちゃってるんです。今までああいう愛嬌ある子たちを笑っていたあなた,そのうち手痛いしっぺ返しが返ってきますよ。。。(^^ゞ)
(「ソフト」って単語と「プログラム」って単語がごっちゃになってますが気にしないでください。筆者がごちゃごちゃに使ってるだけです。)
でそのソフトウェアを作るのがこのゲームで一番楽しい(苦しい?)部分なんですね。
でも,どうやって組んだらいいのか?
初心者にはまるで見当がつかないことでしょう。
一応は,機体の目的をはっきりさせて出来上がったイメージをもつことが大切だといえます。例えば,とにかく強引に近づき相手をどつき倒す格闘家を作る,とか,弾を華麗に避ける美しい紙飛行機をつくる,とか。
しかし,ゲームを始めたばかりでは「イメージを持て」といっても酷な話です。とりあえず,一緒に作っていきましょう。
ゲームをはじめて,延々と続くデモを見終わったあなたの手元には,2種類のロボットが用意されています。
ASE(無人偵察機)である「スパンキー(飛行型)」と「キューケン(2脚型)」です。ん,ASE?ものすごく注意深い方なら気づくかもしれません。さっきロボットのことはOKEって呼んでなかったか?と。
そう,あなたはいきなり戦闘能力が激弱な偵察機で戦場に送り出されます。
(安心してください,相手はちゃんとした戦闘用のOKEを繰り出してきますが,コンピュータがアホなので何とかゲームには勝てます。が,爽快感にはかける作業が待っています。)
わけのわからぬままゲームを進めても何とかなるとは思うのですが,ここまで読んでくださった方を見殺しにはできません。2種類の弱弱偵察機コンビでよりましな戦力を持つ飛行型「スパンキー」の制作を行いましょう。
とりあえず,マニュアルを読むかカンを駆使して機体設計画面まで持っていってください。
そこで,ラミレス中尉の説明やら何やらを聞いて設計の操作だけはなれて下さいね。ソフトの作り方は話半分で流すこと。
1番ハンガー(格納庫のこと。シナリオでは20機、VSモードでは25機まで制作・保存ができます。シナリオモードでは使える機体が厳しく制限されてます。敵を捕獲したら増えるんですが。)には、かわいいマスコットキャラ「キューケン」が組みあがっています。しかし、彼に用はないので無情に削除しましょう。ここに、スパンキーを一機組み上げていきます。
まず、「HARDWARE」で「BODY」を選択します。
ここで、スパンキーを選んでください。
装備は初期状態のままでけっこうです。
さあ,スパンキーにソフトを載っけましょう。
「SOFTWARE」ってとこを開けると、なんかチップを置くとこが山ほどありますね。
ここにチップ(この世界の命令言語。アイコン型をしてるのでなんとなくわかるはず。詳しくは次講座で)をおいていくことでソフトを組み上げます。
ソフトを作るためには目的が必要だと先に述べました。
このゲームでは,とりあえず敵と戦って勝つことが目的ですね?勝つにはどうするか?敵のロボットを壊さないとダメです。とりあえずスパンキーくんの目的は【敵を壊すこと】です。(え?どこが偵察機なんだ,って。私もそう思うけど。)
さて,敵を壊すためにはどうしたらいいのか?もちろん攻撃したらいいですね。
攻撃のチップには今のところ2種類あります。いまのところは「*m以内,角度*度以内の敵に弾を#発撃つ」っていう攻撃チップを使って下さい。
ゼウスでは円を512分割しています。つまり現実の360°=512ゼウス°ということです。ネットでは全てこのゼウス°で話が進められています。
このゲームで重要な要素に射角があります。
スパンキーの攻撃範囲は前方のみですが、わかりますか?射撃チップの影でわかるので確認してみた下さいね。
じゃ,やってみましょう。
comment:1チッププログラム「明日のために、打つべし!打つべし!打つべし!」
・・・一応,これでもプログラムです。バグもなく正常に動作します。
プログラムの解説:
「距離120m以内、真正面(方向角度0ゼウス°)、角度96ゼウス°の中に敵(種類は気にしない)がいたら、1番武装を2発撃ちなさいよ〜〜〜。」
(武器にもよりますが、だいたい120mぐらいが有効射程となっています。ビームやカノンはもうちょっと遠くてもいいです。ミサイルは無限に届きます。)
これで、固定砲台が完成しました。正面からのこのこと敵が近寄ってきたなら蜂の巣にします!
え、近寄ってこなかったら?横から襲われたら?
何も反応しません(^^ゞ
う〜ん、攻撃するためには相手の位置をつかんで移動できないとどうしようもないですね。
##激しく注意##
これはあくまで初めてソフトを組む人向けの説明です。よって飛行型で最初に攻撃チップを持ってくることが正しいという意味ではありません。断じてちがいます。後の講座ではちゃんとした順番で制作しています。
が,今はこの順番で制作します。誰でも初めのうちは攻撃したくてしょうがなかったでしょ?
じゃ,移動を考えましょう。
動くためには目的地が必要です。今は,弾の届くとこまで近寄るのが目的だから,先ず敵を探さないとダメですね。
今は相手に近づきたいから、近寄れる方向=前に相手が入るかどうかを考えてみます。
便利なことに相手を捜すチップというものが存在します。方向は正面0°。角度は96ゼウス°にしておきましょう。
この世界での戦場は一辺320mの正方形に限られてます。で、OKEのレーダーは最大探知距離が320mしかないんです。逆に言えば、対角線上にでもいない限り320m以上離れることはありません。つまり、「320m内に敵がいるかどうか」≒「その方向に敵が入るかどうか」ってことです。
それを利用して、こんな感じでソフトを組んでみます。
・前に敵が居たら前進して近寄ります。
・居ないときはその場で右にぐるぐると回ります。いつか前方に敵を見つけるでしょう。
・そして,近くに敵がいたら攻撃!
チップを並べるとこんな感じ。
comment:修正プログラム「移動して打つべし!打つべし!打つべし!」
このプログラムは,
1・前に敵がいるかどうか?(A01)・・・いない→2 いる→3
2・右に回る(B01) →1へ
(つまり敵が前に見つかるまでは右にぐるぐる回り続ける。)
3・敵がいたら前進(A02) →4へ
4・敵が近い(120m以内)かどうか?(A03)・・・いない→1へ戻る いる→5
5・攻撃!(A04)
という動きをするわけですね。
このゲームでは、チップ置き場(テーブル)の外に矢印が流れるとスタート地点に戻ります。
ソフトを賢くするには、状況判断が必要です。チップには主に「行動命令を実行するもの」と「判断してYESかNOに分岐するもの」の二つがあります。
A01とA03にあるのが「判断チップ」です。YES とNOで行き先が変わっていますね?
逆にA02(移動)、A04(射撃)、B01(旋回)などは行動命令を実行するチップです。
さあ、組みあがった機体を実験してみましょう。
機体制作画面の下に「SIMULATOR」ってありますね。そこで実験できます。この辺は説明書読んでください。
で、自陣にスパンキー君を配置、敵陣にはてごろな相手を配置しましょう。SIMULATORの「FORMATION」で十字キーの左を押すと、弾を撃たないターゲットくん(TARGET)と、弾を撃つ砲台(HITMAN)との二種類の敵を設置できます。とてもとても弱いので、慣れないうちはストレス解消用に便利です。
さあ、弾を撃たないターゲット君を3機相手に演習開始!
、、、一応、動きましたよね?
もしかして、スパンキー君は爆発しませんでしたか?
そう、OKEは熱が80%を越えるとオーバーヒートによりダメージを受けます。
*このゲームは熱の制限がけっこう厳しいです。
攻撃したら自分が発熱します。特に飛行型は熱が上がりやすいので要注意です。また被弾しても発熱します。ダメージよりも熱を与える目的の武器まであります。
よって、弾を撃ちすぎると自滅するんですね。気をつけましょう(^^ゞ
*熱制御はソフトウェアの基本です。自分の機体状況を判断するチップで熱をチェックできます。
comment:熱チェック。 *0%は極端です。5%にするべきでした。
こんな感じ。熱が低くて安全なら、射撃をしてもいいですよ〜〜、ってことです。
*注意
「オーバーヒートが熱80%以上」なら75%以下で射撃でもいいんじゃない?って思うひともいるでしょう。深追いは禁物です。仮に2発弾を撃つときの熱上昇を10%とすると、どうなるか?
そう、射撃前は安全圏でも、射撃後にはオーバーヒートして自滅が始まりますよね。
しかも、さっきも言いましたけど敵の攻撃でも熱が上がります。だから、高い熱状態を保つような設定は危険が高いんです。
それに、攻撃面でもマイナスです。いざ攻撃をたくさん当てられるチャンスがあるときに、自分がオーバーヒートしてたら十分に射撃できないですよね?ソフトウェアの熱制御は心持ち厳しめに設定してくださいね。
次は,ぐるぐる右に回るのはかっこわるいから,ちゃんとした旋回プログラムを組みましょう。
どうしたら左右の旋回を使い分けられるか、考えてみましょうね?4チップです。
チャートはこんな感じ。
1・正面にいる? YES→前進命令へ NO→2へ
2・右にいる? YES→3へ NO→4へ
3・右旋回
4・左旋回
実際にチップを並べると、
こうですね。
ここで覚えておいて欲しいのは、この場合、相手が左にいるかどうかのチェックはいらない、ってことです。
「右半分にいない=左半分にいる」
という考え方は、このゲームできわめて重要になります。数学の帰納法などが苦手だった私にはきついんですが、ネット上の熟練プレーヤーは信じられないほど洗練された論理を組み上げています。
さぁ、先ほどの
「前に進んで打つべし!」君に、この二つのルーチン(機能をソフト化したもの)を加えてみましょう。
comment:改良!「熱にも気をつけて、打つべし!打つべし!打つべし!」
これで賢くなりました。(^^)
改善点
・お利口さんに,右にも左にも回って敵を探します。
・ちゃんと熱で自爆しないように自分の熱を確認します。
だいぶマシになったはず。じゃ,より実戦に近い敵を探します。HIMAN君です。ただし,今度は相手も攻撃してきます。HITMAN3機を相手に、スパンキー「打つべし君」は勝てるのでしょうか?
さぁ、ついにこのソフト最大の欠陥が明らかにされます!
いざ,勝負!
・・・・・。あなたの「うつべし君(スパンキー)」は生き残りましたか?
つまり、前や後ろから弾が飛んでくるなら、右か左に逃げりゃいいんですね。
私のは落ちました。あっというまに。いくらスパンキーが弱いとはいえ・・・。儚い。
スパンキー「打つべし君」は<敵を前にとらえて前進>か<射撃>以外の行動をとりません。そして、敵が前にいるなら敵弾も前から飛んできます。つまり、スパンキーは敵弾に真正面から飛び込んでいくのです。まさに飛んで火にいる夏の虫。
そう,実はこのソフト,全く回避を考えていないのです。【相手を倒したい】のは敵も同じ。攻撃してくるのはお互い様。何でもかんでも自分の思う様には行かないよ〜〜♪ってことを教えてくれる有難いゲームなんですね。
ともかく,【相手を倒す】ために最も必要なことは何かといえば,攻撃ではなく【倒されないこと】だったんです。少なくとも,相手が倒れるのを見届けるまでは生きていないとダメですよね。
しかも、飛行型の特性とはこうです。
長所
☆高い機動力≒高い回避力
☆3次元機動による回避力
短所
×少ない搭載量(火力が低い)
×低い耐久力
ずばり、美しく華麗に舞う紙飛行機のようなもの、といえます。
積載量に優れた(≒火力が高く、耐久力もある)地上型OKEと正面から打ち合えば、飛行型に生きる道はありません。相撲取りに捕まったキックボクサーのように、為すすべもなく沈みます。
勝つときは華麗に、負けるときは潔く。なんとなく右翼型日本人の琴線をくすぐりますね(^^ゞ
教訓:生き残るためには回避。負けないためには回避。勝つためにも回避。
航空機は油断した瞬間、足を(移動を)止めた瞬間、死が待ってます。
え?どんなときに「油断=移動が止まる」かって?単純に言えば、移動以外の行動を実行しているときは移動できません。このゲームは一度に二つの行動が実行できないのです。だから、旋回や射撃をしているときには移動ができません。射撃命令を実行中に、並行して移動は行えないのです。
少し詳しく説明すると、行動命令には優先順位があります。「射撃」の方が「移動」より優先順位は高いです。だから、
○ 移動中に射撃命令をだした。→移動は中止、射撃が【実行】される。
× 射撃中に移動命令をだした。→射撃続行、 移動命令は【無視】される。
となっています。基本的に飛行型は移動で回避を行います。しかし、射撃命令を実行中は射撃を終わらせる命令がないのです。よって、危険な状態(敵弾が迫ってる)ときに射撃命令が出ていると、一生懸命回避するための移動命令を出しても、全〜〜〜〜〜部、無視されちゃいます。
そう、だから攻撃(=射撃命令)は全ての安全を確保した上で一番後回しになるんですね。
ともかく回避を考えましょう。
回避の基本は,危険な方向を避けること、言い換えたら安全な方向に移動することです。
まずは危険を感知してみます。「危険物判断チップ」というものが存在します。
Comment:危険物判断チップ 「見える!(-_☆)」
解説:
全周囲の距離60m以内に、高速で飛んでくる物はあるかないか?
(「高速物」:弾速の速い弾丸やビームを始め、ゆっくりしたミサイルまでほとんど全ての敵弾。機雷と地雷以外の危険物のこと。一番よくチェックする。全部チェックするときは「発射物」)
このチェックで、危険が感じられたなら即座に回避を実行しなきゃいけません。
きゃー,大変だ、どうしましょ?
落ち着いて冷静に安全な方向を探しましょう。
<回避の考え方>
今、前方より弾がきているとします。
すると、危険な位置は、
1・その場。(当たり前ですね)
2・弾の侵入方向=前方(前から弾が来るのに前に向かっていくのはアホです。)
(*ただし、細かい設定を駆使すればうまくすり抜けることができる可能性もありますが。)
3・弾の軌道上
(前から来る弾は後ろへと抜けていきます。よって、後方に回避しても弾は追っかけてくる形になるので賢くないです)
以上のことから考えると、安全な方向は、弾が飛んでくる方向と直角の方向、が妥当です。
図示してみましょう。
右や左から飛んでくるなら、前か後ろに逃げろ、と。
え?斜めからきたら?「右斜め前」を「右の一種」と解釈するか、「前の一種」と解釈するかは機体の特性と動きとプログラムによります。慣れないうちは「右」と考えるのが妥当でしょう。
では、回避をプログラム化してみましょう。
通常スパンキー君は敵に向かって「前進」しています。これが危険なことは上の図で示すとおりですが、逆に考えると、左右からの攻撃は回避し続けていることになりますね?
要は、正面からの攻撃さえ回避できたら、前に突っ込み続けても問題ないのです。
正面の攻撃はさっき見たように右に飛べばかわせます!
すると、回避プログラムは、
「単純右回避プログラム」
こうなりますね。
つまり、B01の判断で、
1・前が安全な限り前に飛べ!
2・前が危険なら右へ飛べ!
というプログラムです。
え?右の安全は確認しなくていいのか、ですって?
非常〜〜〜に良い質問です。
べき論でいうのなら安全確認した方がいいです。でも、よく考えてみてくださいね?
「前が危険」で、かつ「右も危険」ていうのはこういう状況です。
いわゆる、十字砲火、って奴です。
こういう場合、完璧に安全に逃げることは難しく何らかの攻撃を食らうので、それならいっそ単純に動かす方がよい、という割り切りもこのゲームでは必要です。
前も右もだめなとき、複雑に(^^ゞ回避を考えていけば前後左右の4方向に回避することを考えることはできます。(スパンキーが移動できるのは前後左右の4方向。)
前は危険か!
ならば右は?何ぃ!?右にも敵弾がっ、、、!
では、左はどうだ!??左に危険物はあるのかぁあああ??
おおぉおぅ、後ろは、後ろはどうだぁああ?????
という風に叫びながら考えてみると、こんな感じになります。
(厳密には飛行型が4方向回避する必要はありません。しかし、回避の考え方として全てのOKEに適用できます。よってここでは4方向回避を導入します。)
Comment:4方向回避 「ど、どこに行こう?」
ここで注意して欲しいのは、「4方向回避」といっても4方向の中から最も安全な方向を探して回避するのではなく、優先順位を決めて安全な方向があればその方向に進むことになります。
この場合、航空機なら前進することで左右からの攻撃を回避できるわけだから、最優先で前方の安全をチェックしてます。この、「優先順位」という発想がとても重要になるので覚えておいてくださいね。
*また、前方優先の回避とは、積極的に敵に近づくことを意味します。よって、格闘指向の高い脚つきOKEは積極的に前に回避することが多いです。逆に、敵に近づくことを嫌う、遠距離砲戦型の機体は、極力前への回避を避けます。
この4方向回避、飛行型には実用性が低い上に、実装するとバグが出やすく、あまりおいしくないので考え方の題材として提示だけしておきますね。
今回のレベル0講座では、先に提示した「単純右回避」を採用していきます。
さて、この単純右回避、タイマン勝負ならそれなりの回避能力を持っています。
しかし、、、重大な落とし穴があるのです。
右移動で正面からの弾はよけられます。でも、右にばかり移動すると・・・?
【敵】
戦
場
弾 の
↓ 端
で
【自機】→ す
(右に移動)
あっという間に戦場の右端へ追いつめられます。そして、この戦場には目に見えない壁が張り巡らされているのです!
《敵》 壁
壁
壁
弾 壁
↓ 壁
壁
【自機】→×壁
壁
(壁にぶつかり右移動できない=回避できない)
(→死が待っている状態・・・)
状況、わかりますか?
あなたの命令を忠実に実行し右に飛び続ける健気なスパンキー。しかし戦場には見えない壁が。
壁に阻まれもがくスパンキーに敵弾は雨霰と降り注ぐ・・・。バカ!左には自由な空間が待ってるのに、何でそっちに行かないんだよ〜〜〜。
画面に向けて怒鳴ってはダメです。OKE達が馬鹿な動きをしたら、それは全部組んだあなたの責任なんです。スパンキー君に左移動命令を搭載していないのは確認済みですよね(^^ゞ
(怒りのぶつけどころが無く、とても精神衛生に悪いゲームです。)
よって、回避の時は壁を確認することも基本になります。弾が無くても、安全だとは言えないのです。壁があったらその方向に移動しちゃダメだよ、って指示すればいいんですね。
(他に、地雷機雷をチェックしたり、陣形を整えるために味方をチェックしたり、敵を確認したりします。)
壁は「障害物判断チップ」で確認できます。画面内の「目に見える障害物」と、戦場の境界をつくる「ゲームご都合主義の壁」とは同じチップで感知できます。ご都合主義の壁だけを区別するなら「高さ24m以上の障害物」を検知したらいいのです。
(そう、この世界の飛行きはせいぜい数10mしか上昇できないのです・・・。まぁ武器の射程も100mそこそこしかないから大丈夫なんですけど。火星や木星は地球と物理法則が違うのかもしれません。あるいは、外惑星へ植民できる時代になったら、イギリス植民地時代の古いメートル法とは違う単位を使ってるのかも・・・。1ゼウスm=20m、とか。)
じゃ、右に移動するとして壁にぶつかったらどうしよ?ぶつかるのはこういうときだよな?
「状況A」
ここで左に旋回したら、
おお!脱出できそうだぞ?
それに、こんな時でも、
「状況B」
やっぱり、
おおお!!大丈夫だ。
すると、
1・前から弾はきてないかな? yes→2へ NO→3へ
2・右に移動。壁にぶつかりそうなら左旋回
3・とにかく前方へ移動
これで何とかなるんじゃないのか!!?
チップにすると、こうなりますね。
「単純右回避・壁では左旋回:ちょっと賢いでしょ(^^ゞ」
右の壁のみならず、前方の壁もチェックしてます。どんな図になるか考えてみてくださいね。
(本当は、前進で壁にぶつかった時の旋回を少しだけいじった方が賢いです。)
これで、なんとか戦場を移動するでしょう。
さて、これだけでは回避の面で飛行型の長所を発揮しきれていません。
飛行型にとって最大の長所は「空中にいること」です。マンガ「沈黙の艦隊」で海江田艦長は「三次元航行のできる潜水艦に二次元航行しかできない艦船は勝てない」といいきりました。スパンキー君も高度を変えましょう。
【高度変化】
単純に言えば、同一平面上にいるとき被弾する要素は、X軸とY軸の二つだけ。自機の移動軸と敵の攻撃軸線があっている場合、思いの外簡単に被弾します。
ところが自機が空中にあるとなると話は別。もう一つ、Z軸が加わるので、命中するにはさらに複雑な条件が必要になります。例えば、横スクロールシューティングと、3Dのバーチャロンとではどちらが弾を回避しやすいか、考えるまでもなく答は明らかですね。
しかも、高度変更命令は、その他の行動と並行して実行できるすばらしい特徴があります。このことを生かして、常にゆらゆらと高度を変える人もいます。つまり、航空OKEは他の機種と違い、「いつ何時であっても回避行動をとり続けることができる」とも言えます。
では、その高度変化の使い方。
とりあえず、普段は「中空」にいて、敵弾がきたら「上空」に逃げる機動を加えておきましょう。
(「低空」は、いろいろと危険が多いんです。攻撃には向いてるんですけどね。慣れるまでは中空でガマンしましょう(^^ゞ)
(*用語説明:「上空」「中空」「低空」・・・飛行型の高度。といっても最高で30m程度。しかし、「上:低」ってなんでだろう?)
高度変化回避はいろいろな方法があります。試してみてくださいね。
さぁ、これらの回避要素を加えて、ソフトを完成させてみましょう。
組み上げる順番は、
1・危険察知+回避
2・敵補足・旋回+移動
3・攻撃
です。例えば、下のようになりますね。
・ A01,02,03,B02が旋回
・ C列〜F列が回避です。
また、A05に残弾チェックをいれておきました。弾切れでも射撃命令は実行されます。弾切れなら撃たない、という指示も出してあげないとダメなんですよ(^^ゞ
それから、このプログラムではわかりやすさのために、あえて「NOPチップ(なにもしないつなぎのチップ)」を使っています。
まだ実感できないと思いますが、ソフトウェアは無駄なチップがないほど反応が早くなり強い機体が作れます。
気力のある人は、パズル遊びをかねて、NOPチップを削ってみてください。
ここまでプログラムが読めるようになっていれば、あとはネット上の機体にふれたり、説明を読んだりしてもわかっていくのではと思います。
次の講座では、ソフトを組むためのチップ解説と、シナリオプログラム検定試験の解説を行います。
その上で、次の次の講座でより実用的な飛行型の作り方を説明していきます。
楽しいゼウス2ライフをめざして頑張ってください!