▲68通信vol.1のページへ


LODE RUNNER on X-BASIC の威力は?

個人的にソフトを作ってみた話です 腕だめしに、何気なく移植をするつもりで作り始めて2年 が経ちました。区切りをつけるべく、ソフトを完成させ、 ここに製作記をのせることにしました。障害の数々をここ にお送りしましょう。

- 何か作りたい -
68ユーザーなら、こんな願望を一度は抱きますが、いざ オリジナルソフトを作ろうとすると、多くの山々にぶつか るでしょう。どんなものにするか、どんな音楽にするか、 絵にするか…そして、68の機能を活かして、独自のシス テム自体を作れるのかな、ということになります。もし作 品を世に大発表しようとするならともかく、まず最初は個 人でいかに楽しみながら作品を作れるかが大切です。

まあ、それは理想的だなと思うでしょうが、実際そうでも ないように思います。68には移植物が多いです。それだ け、多種多様な要求に答えるあるパワーを持っているから です(速度以外は…)。移植されたものは、元と瓜二つであっ たり、さらなるアレンジを加えられて素晴らしいものになっ たものもあります。そういった多くの作品を目の当たりに して、ユーザーがそういったものをよりさらに求めていく のです。今日そのような気持ちから生まれた多くの同人ソ フトで遊ぶことができます。ああ、なんてしあわせ。

それはさておき、自分も作ってみたくなり、また、多くの ソフトへの疑問も生じます。「なんでここまで作れるのに、 こうなってしまうのかな。」「もう少し操作が良ければ。」 だから自分としてはマイペースで、自分の納得出来るゲー ムを物を作ってみようと思いました。オリジナルでなくて もいい、最初は簡単な移植でもいいではないか。個々の腕 を磨き、かつ、楽しめればそれにこしたことはないと。そ れは理想に留まらずきっと実現可能なことであると思いま す。

- 模倣してみよう -

LODERUNNERを作ろうとしたきっかけは、大学で知り 会った68の仲間内で何か1つのものを題として、個々そ れぞれ違った物を作って、個々の技量をつけて、お互いの 技量を量ろうというものでした。そして目標は学園祭展示!

さて何を題とするか。考えて出てきたものは昔のファミコ ンゲームです。アイディアに富んでいて楽しいゲームは多 く、かつ、簡単に作れそうだと考えたのでした。 その数多くの名作ゲームの中から3人が選んだターゲット はこの「LODERUNNER」だったわけです。

私を含む3人のプログラマは、タイトルこそ共通でしたが 各々の理想に向けて違った方向で作りはじめました。参考 にするものはアーケード版であったり、ファミコン版のも のであったり。この辺で製作者の好みやこだわりの違いが 出て、限定しない方が楽しいということで、個々にまかせ ました。また、他の2人がアセンブラを使用したのに対し、 私はBASICでした。(どどーん)

- BASICといえども -

んー?BASIC?と思うでしょうが、構造化BASICのX- BASICは結構使い物になると思います。アルゴリズムの 練り方によってはC言語で書いたものと、そう相違なくな ります。といっても、BASIC。遅いことは遅い、と。私 が作ったLODERUNNERのVer1、そしてVer2は最初のう ちは調子よく製作していたのですが、進めば進むほどプロ グラムがダルマ式に増えていき、どんどん遅くなっていき、 あえなく没となってしまいました。しかし、要はアルゴリ ズムを作るプログラマの腕次第。きちんと作られたものは コンパイルでC言語になっても綺麗にそのままの形でのこ ります。

BASICの基本−IF文を、あまりに便利だからといって多用 するとすぐにはまります。あたりまえのことですが、便利 なゆえにはまりがちです。これはBASICに限りません。 しっかりと動きを練っていかねばなりません。とにかく動 きを軽くするためには条件分岐を経由する事を極力減らす よう心掛けました。SWITCHを使い、場合わけをしっかり してそしてランナーの動作の状態を細かく場合分けしまし た。

- 走る・滑る・みごとに落ちる -

いかに状態の分木をうまく作れるかが条件分岐を減らすか のポイント。動作状態を場合分けするために、主人公の 動作モードを作りました。まず、パッド通りに動く状態か、 勝手に動いている状態かの2通りです。主人公は結構勝手 な動きをしていることが多いのです。穴に滑り落ちる、穴 を掘るといった動きは多くの条件分岐文を経由することな く勝手に動作モードに入ります。さらにその中で、主人公 の動きをちょっと複雑にしていた「ずれる」という動作を いかにスマートにするかことで、いろいろ考えました。

図1:

最初に注目したのは図1の状態のときにどう動くのか。最 初にあまりに真面目に考えて、左右の下がはしごだった場 合はどうするか、とか、片方の穴が開いていた場合には… と、多種多様の場合を想定しました。想定しすぎて、まと もに実行していたらたまらなくなりました。様々な状態を 合わせて考え、まず最初に考えることは、穴の掘れる位置、 まっすぐ下に落ちれる位置、すなわち、ランナーの座標が 16で割り切れる位置にいるようにすることでした。ブロッ クの半分より左ならば左へずれ、右であれば右へずれると。 この結果、上下左右の移動も、穴を掘ることもスムーズに 実行できるようになりました。

加えていうならばここで考えたことはしっかり後で役に立 ちました。それはジョイスティックが斜め方向にはいって いたときの処理です。ここをちょっと工夫するだけですば らしく操作性を向上出来ました。斜めに階段が続いている 場合でもちゃんと昇ってくれます。こういったところで意 表をついてうまく動いてくれると作っている側も非常にう れしい。

さて次に注目したのは周りの状態をいかに読むかというこ とでした。正直に一回一回、周りのデータを BGGET か何 かで取ってくるのはあまりにスピードを食い過ぎます。 (PowerPCマシンならパワーを湯水のように使えるのに…) 最低限の回だけgetするためにはどうすればいいのか? ここも先程同様 mod 16を使っていまして、図2.1から図 2.2に移るとき、すなわち余りが7から8になるとき、も しくは8から7に移るときだけにbg を get することを、そ れぞれX、Y座標に対して行うようにしました。(え?わざ わざBGGETなんてものを使わないで配列を使えって?まあ、 それはそれ。)

図2:

また同時にX、Y座標を調べる必要はないわけで、主人公 の状態として考えられるのは図3.1〜3の3状態で、図 3.4ということは決してないのです。ゆえに常にX、Y 座標のどちらかは mod 16 が0になっているということで す。

図3:

- ロボットの頭上で踊ろう -

これも一回の動作毎に、ロボットが丁度下にいて、かつ、 16ドット下で、なんてことをやっていてはきりがない。 これを最低限にするためには、ロボットの居場所を先程の BGGETで得られるデータ群と同じようにしました。 ロボットもいろいろ動いているわけで、ロボットに対して も mod 16 で存在する座標軸がずれるごとに、その座標に 物があるというデータを与える様にしました。このあと主 人公がBGGETした時にはそこにはものがあるので落ちな いよ、ということになります。これであっさり乗れてしま いました。原作より異様に乗りやすく、移動しやすいです。 ま、いいか。

- FCと同じことができるか -

これだけ自分なりに作っているのですから、当然バランス はFCと全然変わってきます。私がもっと腕をもっていれば FCのROMから吸い取って、アルゴリズムを解析してエミュ レーターでも作ってしまうのですが(やばいぞ)、まあ自分 なりにやりたいことを再現方法を考えるのも楽しい。 さて、まずは主人公の足の速さを基準として、ロボットの 速さと穴の復活時間を決め、さらにそこからロボットがは い上がる時間を決めていきました。ここまでやってFCでで きることができなくてはうそ。このLODEの制作時間の2ヶ 月近くを微調整に掛けました。もちろんFCのEDITで流行っ たあの超技の数々が出来るようにですが、「逆転掘り」の ような詰めLODERUNNER(ロボットのいない純パズル面) はまだしも、ロボットの特有の動きを利用した「抜き足差 し足」のような技は無理。また仕様的にはあの「素通りレ ンガも出来るようになっていますが、ブロック復活時の処 理をちょっと加えるのが面倒なので、使えなくしてます(ほ んの1つサブルーチンを作るだけなんですけど)。だからタ イトルにTinyがついていると。ともかく簡単な詰めLODE RUNNERはできるようにバランスをとりました。

- 色付けはゲームの命 -

さてここまで作ると、1つのゲームとしての完成をめざし たくなります。タイトルを作って面クリアーを作って、全 面クリアーを作って、ゲームオーバーを作って…。これら のものはゲームを初めてから終わるまでの流れの道です。 これらがそろうことで1つのゲームの世界、イメージがで きていくのです。だからこれらの内の1つでもおろそかで あったり、欠けているとそれだけで楽しさが半減してしま います。たとえば、立ち上げ後に出てきたタイトル画面が 綺麗な絵であるのと、真っ黒な画面にテキストにノーマル フォントのカクカクな文字だけ描かれているのと、どちら がゲーム欲をかりたてるでしょうか。大袈裟な例ではあり ますが、おしみなく全部に自分のパワーを生かして欲しい とおもいます。

市販の物でもそう感じる物が少なくなかったからですよ、 システム自体はいい出来なんだけど、グラフィックが〜 とか、スピードが〜!ということがね。 どうしたらあんなツ○ンビー(68版)になるんだろう…。 なんであんなプリ○ル(68版)になるんだろう…。うらめし やー。作る側にソフトに対しての愛があれば絶対にあんな 作り方はしませんよ。

さて話を戻して、出たな!ツインビーのアイキャッチ、あ れっていいですよね。ゲームを楽しく華やかにしてます。 ああいうのが私の理想のひとつで、作る側もプレイする側 も楽しい演出の一つです。RUNの中で面セレクト時に、主 人公とロボットがいろいろ動き回らせたいと作り始めた頃 から思っていました。実際に付けられたのは2年後になっ てしまいましたがね。

次にしたかったのは、ランナーをより表現豊かにすること です。ゲームの主人公はいわばゲームの中に生息する自分 の分身。ランナーがもたもたしていては、プレイする側の 気分も重くなります。まず、FCよりも駒数を増やしました。 フニフニ歩いている感触がなかなかグーです。それにあわ せてキャラクターの方もディフォルメが入っていて、ロボッ トもだいぶまるまるフニフニになっています。「フニフニ」 したもので、私の好みのものは、プリペルや、チェルノブ や、デスペラードです。めざせ!「フニフニ」!

- 音もお忘れなく -

システム以上に試行錯誤したのが、効果音です。FCと並べ て聞くとだいぶ違いますが、走っているぞ、落ちてるぞ、 金塊をとったぞ、といった音を精一杯表現したつもりです。 また、そのままの音楽を使うだけでなく、アレンジしたり して、ただの模倣では終わらないように、目一杯色付けし ました。音楽の私の理想の1つは、68で言えば、ファン タジーゾーンです。そっくりに表現していたし、アレンジ も凝っていたし、音楽だけでなく、あのスペハリ面なんか も制作者側の「遊び」を感じる物ですね。

ゲームと音はまったく次元の違う物といえます。それは音 もそれ単体でゲームとして成り立つことができるからです。 音楽の出来の良さについつい立ち上げてしまうゲームもあ るのではないでしょうか。先程のファンタジーゾーンや、 ボスコニアンは何度立ち上げたことでしょう。ボスコニア ンのゲーム内容はいたって単純で、システム自体そんなに のめりこむような物ではないとおもいます。オリジナルモー ドをやってみましょう。ほらね…。

- プログラマ集え! -

長きに渡ってお送りしてきました私のLODERUNNERと、 その制作の背後にあった、いや、原動力となった私のゲー ムに対する理想のお話しでしたが、きっと同様の物をこれ を読んで下さったユーザーの方々は抱いているでしょう。 きっと皆さんもその気になればこの様な話を何十ページで も書いてしまうでしょう。

私でもこれぐらい作れたんです、簡単簡単。

3、4年前と比べて周りで68をいじっている人の数は減 りました。それは、単に見限ってやめた人もあり、暇が無 くなったりしたためでしょう。しかし、私はまだ恵まれて いる方で、減る方にもまして68ユーザーに出会うことが 多いです。それぞれMIDIをしたり、BSDをしたり、マチッ たり(CGツール「マチエール」で遊ぶ事)、PANICったり さまざま。商業的に消え行くのが信じられません。信じた くないです。周りに増えるのは、MacユーザーやDOS/V ユーザー、残された同好会のメンバー、さてどうしたもの か。

もう一度理想に向かって何か作ってみませんか?

- LODERUNNER勝手に自己評価 -

      :0        100
動きのよさ :★★★★★★★
グラフィック:★★★★★★★★
サウンド  :★★★★★★★★★
似ている度 :★★★★★★★★
総合評価  :★★★★★★★
こんなところでしょうか。

やり残したことはまだまだあるけどここで一区切り。頑張っ て次を作ります。制作に協力して下さった方々にたいへん 感謝致します。なおこのレビューにある私の自作ソフトを 手にいれても、絶対に営利、商業目的で使用してはいけま せん!あくまで個人レベルで遊びながら作った物です。 勝手な使用により、ハドソンその他から苦情を受けても、 一切責任を追いません。


1995/11 著:Kiyotaka Ishii kiyo@gulf.cs.uec.ac.jp

▲68通信vol.1のページへ