第4章

「はるみのプログラミング・レッスン」でゲーム作りのテクニックを学んだ私が、 「オリジナルのアクション・ゲームを作ろう」と思ったのは自然なところだろう。

それまでの経験から、「BASICは遅い」という事実については 薄々気が付いていた。当然、敵が多く出てくるようなゲームは難しい。 そんなことを考えているうち、「敵が動かなくてもゲームは作れる」ということに 気が付いた。

敵は動かない。動かないかわりに、画面上にウジャっといる。自機は、 いちど動きだしたら止まらない。敵にぶつからないようにしながら、レーザーで 敵を倒していく。

このような考えで、私は、自作アクションゲーム第1作「 ピラミッド 」を作りはじめた。 つまり、自機を、画面に散らばるピラミッドを避けながら、それをビームで破壊 していくゲームである。なぜピラミッドかというと、グラフィックキャラを 使ってできる中で、それが何となく見栄えがしたからである。

画面を作って、自機の移動ルーチンを作って、レーザーを発射できるようにして、 ピラミッド破壊ルーチンと面クリアの処理を入れて、スコアの処理をして、 ゲームオーバーを作る…と、基本的には「はるみのプログラミングレッスン」 に載っていたものと同じだが、ところどころオリジナルな処理もあって、 なかなか楽しいプログラミングだった。ピラミッドが重なって表示されてしまう ことがあるなど、多少のバグ(結局とれなかった)はあったが、特に大きく 悩むこともなくゲームは完成し、私のアクションゲームプログラミング人生は 順調なスタートを切った。

次に構想したゲームは、「敵が出ないシリーズ第2弾」、 MAZE HOUSE というゲームだった。これは、敵が全く出ないゲームで、主人公が ジャンプやはしご、リフト、ワープゾーン、トランポリンなどの さまざまな仕掛けを駆使して鍵を集め、ドアから脱出するというものだった。 当時これを構想した私は、そのあまりの面白そうさ の虜になり、夢中で製作を始めた。

このゲームは「ピラミッド」と違って、「はるみのプログラミングレッスン」 の通りにはいかない処理が多かった。ジャンプは放物線ぽく跳ばすために 計算を工夫したし、はしごに重なったときは、それを覚えておいて、次に 自分を移動するときに、移動跡に空白でなくはしごを書かなくてはいけない。 その他、リフトやワープゾーンの処理や、鍵を取る処理、落下の処理や、 死んだときの処理(1人死んだだけではゲームオーバーにならないように なっていた)などが目白押しで、そのうえ欲ばって2人用モードまでつけようと したから大変である。とくに2人用モードは、当時配列変数を知らなかったため、 2人目の処理を独立に用意して、プログラムが2倍になるという状態であった。

そのようにチャレンジングな試みであったので、プログラミングの最中は 常にワクワクする気分であり、非常に楽しかった。だが、いざ組みあげて みると異常にバカ長いプログラムになってしまっていて、しょうがないので 2人用モードを削ることにした。

そうして出来たプログラムを、今度はパソコンに入力する(当時私は、プログラムを 作るときは紙に書いていた)。そして、ついに入力が終わった。 いよいよ「 MAZE HOUSE」が動くのだ。私は、緊張しながらf・5を 押した。

…だが、当然のごとく、ちゃんと動かなかった。 初心者が組んだプログラムが一発で動くことなどまずありえないことで、特に このプログラムは当時の私の力量を大きく越えた大作だったので、バグは 次から次へと出まくった。それを1つ1つ根気よく退治していくのは非常に 骨が折れた(だいたい、バグ1つ1つが、当時の私にはあまり簡単に退治できる ものではなかった)。しかしそれでも、いつしか、わりとまともに動くように なっていた。

だが、「ジャンプしたあと自分が床を無視して落下してしまう」という致命的な バグが取れなかった。何度も挑戦したが、一向に直る気配を見せなかった。 何度もプログラムを見直したが、どこが間違っているのかわからなかった。 結局、ずっと後で、これはジャンプルーチンで自分の座標に0.5を足すという 無茶な処理をしたために起こるものだということがわかったが、当時の私には そこまで考えられる実力はなかった。

どうしてもとれないバグを前に、 cload”MAZE”を打ち込む回数は 次第に減っていき、ある日ついに、「ダメだ、もうやめよう。」と決心した。結局夢のゲーム「MAZE HOUSE」 は夢のまま終わり、順調なスタートを切った私のアクションゲームプログラミング 人生は早くも挫折を見たのであった。


5章へ
3章へ

戻る