第17章

あれからどれくらいたっただろうか…?

MAZE HOUSEのときと同じように、 GOLD ATTACKが暗礁に乗りあげてしばらく、 私は全くといっていいほどゲームを作っていなかった。

いつの間にやら、学年は6に上がっていた。

「もう6年生なのだから、大人にならなくてはいかん。」

そう考え、学校でゲームを作ることもなくなっていた。 モノポリー、軍人将棋、大貧民といった 社交的な遊びや、 校庭での球技などが流行っていた頃でもあり、 パソコンにさわる機会も以前ほどではなくなっていた。

しかし、パソコンへの興味が失せていたわけではなくて、 情報誌などを読む機会は以前より増えていたかもしれない。

例えば、とある事情で、年末年始にかけて前述の親戚の家に泊まりにいった ときなどは、I/O別冊のマシン語プログラムを 逆アセンブルして「乱数ルーチン」「乗算ルーチン」などの 役に立ちそうなアセンブリ言語プログラムを手に入れることに熱中していたし、 もちろんベーマガはちゃんと買っていた。 マシン語の解説書も、より高度なものをいくつか手に入れていた。 (そのうちの一つは、「マシン語でインベーダーゲームを作ろう!」というのを 最終目標にしているもので、付録の命令表なども充実していてなかなか重宝した。) そして、ある日、その中でも最も有用な情報を手に入れることに成功したのである。

その雑誌は、「テクノポリス」と言った。どうして買ったのかは 未だに憶えていないが、サイズも大きく、盛り沢山の内容で、 なかなかお買い得感のある本であった。ちなみにその号には、中村光一インタビュー などがあった。

その号の一記事に、「マシン語プログラム入門」みたいなコーナーがあった。 何かのアクションゲームを作ろうというもので、「いくつものボールを動かす ルーチン」をマシン語で組んでみよう!というものであった。 そしてここに、マシン語でキャラクターを動かす方法がプログラム付きで 詳しく解説されていたのであった!

これはまさに、今の私にピッタリの記事ではないか!興奮気味に その解説を読むと、これまでの自分の方法が如何に駄目な方法であったかが わかる。これまでの方法では、自分の座標は常にVRAMアドレスで 持っていて、X座標、Y座標の値を調べることはほぼ不可能だった。 しかし、その記事にあった方法は、自分の座標をX,Yで持っておき、 VRAMアドレスをX,Yから計算するサブルーチンを用意するというものであった。 これはなかなか、目から鱗が落ちる出来事であった。 このようにして、プログラミングはせずとも、私のプログラム知識は 着々と増えていったのである。

そしてある日、「もう一度作ろう!」と思いたったのである。 誰もいない昼休みの教室、私は久々にプログラミングを始めた。 もはやあの頃のように、手に負えないプログラムではない。 IXレジスタやPUSH,POPなども自在に使える。(前の プログラムでPUSH,POPを使ってなかったというのもすごいが。) スクロールルーチンも、ブロック転送で一発である。 いつ書いたかは忘れたが、BASIC部分や音楽も一新していた。 「今度こそいける!」という手ごたえをつかんでいた。 一度作りそこねたロードランナーを成功させたときのような 自信に溢れた感覚である。

しかし、壁は再び立ちふさがる。「迷路データ」の問題はまだ解決していなかった。

私はあのあと、別の圧縮方法を考えていた。それは、「ライン式」 とでもいうべきもので、「壁を、始点と終点で表し、その間にラインを引くことで 実現する」というものであった。これはなかなか劇的な圧縮が期待できそうだったが、 いざデータを作ろうとすると、手動で始点・終点を作っていくのが予想以上に 面倒臭く、結局挫折した。依然として八方塞がりの状態は続いていた。

しかし、そんな私に、ついに朗報がもたらされた。

プリンタを買ってもらえることになったのである!

プリンタさえあれば、データを自動的に打ち出すことができる。 以前の方法をそのまま使って、驚くべき楽チンさでデータが入力できるというわけだ。

私の狂喜ぶりは、言うまでもないことだろう。プリンタが来て、早速データを 打ち出すことにした。そして、入力。もうすぐだ。もうすぐ この巨大な迷路の中をタンクが走り、ウジャウジャと敵が動く、 夢のようなゲームが動くのだ。そんなワクワク感に満ちていた。

打ち終わって、CSAVE。そして、run。

しかし…。「ピー」。ビープ音がした。思いがけないエラーが出た。

Out of memory in 300
「……」呆然とする私。Out of memory?何故だ? マウンテン・クライマーのときは平気だったのに…。しかも、 配列宣言したときではなく、面データを読み込んでいるときのエラーである。

わけがわからず、今度は圧縮方式をふつうの2進圧縮にして試してみた。 しかし、やはりメモリが足りない。そもそも、こんなに展開に時間がかるというのも かなり問題である。

しかたなく、添字を減らし、迷路の一部だけを読み込ませてやってみる。 こんどは動いた。しかし、一部だけを読み込んでみたところでしょうがない。 しかも、なんだか、敵が思ったように動いてくれない。迷路がスカスカだと、 直進ばっかりになってしまい、すぐに画面の外に消えてしまう。 狙っていたような面白さにするのは難しそうだ…という印象だった。

結局私の選んだ選択肢は、「違うゲームにしてしまおう」というものだった。 ようするに、「スクロールさせて、敵の本拠地に進んでいく」という設定は やめて、固定画面で敵を倒していくゲームにしてしまおうというわけである。 これなら十分実現可能である…しかし、同時に、平凡なゲームになって しまったことも否定できなかった。

プログラム的にはほとんど難しいことはなくなったが、代わりに、 「如何にして面白いゲームにするか?」ということに頭を悩ませた。 変更後のGOLD ATTACKは、敵がウジャウジャ動くという以外は 実にありきたりで、わりと退屈なゲームになってしまっていた。 スピードも少し遅かった。 (余談だが、このとき「マシン語部分のせいか?」と思って 敵移動ルーチンだけをループさせてみたら、目にも止まらぬ速さで 画面外に消えていって、マシン語のスピードを再び実感したということもあった。)

「あんまり面白くない…」製作中のゲームに対してこんな気分になるゲーム というのはこれまであまりなかった。ゲームの面白さについて 悩むというのは、ほとんど初めてのことだったと思う(それまでは、 悩む前に見捨てていたというのもあるが)。 流石に一年以上も作り続けて、飽きてきてしまったというのもあるだろう。

その状況を打破するため、アイテムを出すようにしたりしてみたが、 決定的な解決にはならず、ボーナスステージやボス敵ステージ( これらも全く別のルールに変更されていた)のほうが面白い、 などということになっていた。

プログラムは一応ほとんど完成していて、タイトル画面もあるし、 BGMもちゃんと鳴るし、ボーナスステージもできていたし、 感動的なエンディングも完成していた(ちなみに、 このエンディングは、当時の小中学生のご多分に洩れず、 ドラクエのエンディングに影響されたものであった。 はじめはドルアーガのようにスタッフロールはスクロールだったが、 このときはドラクエ式のフェードイン・アウト (COLOR 0〜7まで順に色を変化させて実現)になっていた)。

しかし、面白くなかった。なんとか面白くならないかと、 試行錯誤の日々が続く。もはや、惰性で作っている状態で、 これが突然面白くなるはずもなかった。

結局、最後までこの状態が続いていくことになる。


次回・番外編

次回もまた、見てくださいね!


16章へ

戻る