MCL(40)

インデックスに戻る

前のMCLへ  次のMCLへ

▼ My Computer Life (40)

40. 初RPG

 で、ちょこっとX-BASICのマニュアルのサンプルを打ち込んだくらいで、私の中では「もうマスターした」という気になっていた。マスターしたからには、RPGを作ってみようかなどと大それた計画を考えたりもした。
 そんなわけで、X68kを買ってから数日、もう1990年も暮れようかという頃、私はRPGを作り始めた。見た目からしてドラクエ風のゲームだ。「DRAGONAUT」というタイトルだった。このタイトル自体は、MZ-2000やMSXの時代からちょこまか作ってきたゲームに由来している。

 今でもソースコードが残っているから、当時の苦労が分かる。
 やっぱりまず、X-BASICという言語の仕組み自体でつっかかってる部分がチラホラ見受けられる。プログラムの書き方自体が幼稚なのはもう仕方ないけど、どうも書く順番とか、処理の並べ方とかがグチャグチャで、いかにも試行錯誤しながら作ったなというのが見え見えだ。変数や関数の命名の仕方もバラバラで、保守性は非常に低い。適当にローマ字混じりでつけた変数名を、ほとんどグローバル変数として使用している。典型的なBASICerである。
 しかし、その当時のマシンの慣れ具合から考えると、非常に頑張ってたと評価はできる。将来的に大規模なプログラムになる事を想定して、多くのデータを外部に持ってやり取りできるように工夫してある。町の人が吐くセリフをどう実装するかなんて事も一応考えられており、最初に組んだゲームプログラムとしては異例なくらい頑張っている。

 ドラクエのようなRPGを目指していたので、まずは主人公がそのへんを歩いて、背景がスクロールするというところから着手する事にした。
 背景は、BGを使っている。なんとなく、グラフィックを使うよりいいかな、と思ったのだ。ただ、BGの管理はちょっと難しく、慣れないうちは上手く表示できなかった。

 ちなみに、スプライトデータは自作のコンバータを使ってバイナリ化していた。元のデータはどうするかというと、テキストファイルに数値を並べて作る。なんと涙ぐましい努力なんだろう。
 一応、X-BASICのディスクには、シャープ謹製の簡易スプライトエディタがついてくる。これはデータをBASICの配列形式として吐き出す事ができ、またそのローディング部分も作ってあるので、今考えるとこちらを使った方が早かったのかも知れない。ただ、結局バイナリで外から読む形にしないと動的な差し替えができないので、最終形態を考えた場合私のやり方は間違っていない。ただ、元データをテキストファイルで作るなんて事をしなければ、だが。

 そういや、キャラクタもイラストからデザインしたんだけど、そのへんに転がってた書道の半紙に描いた。ほら、時期的に書初めだなんだという頃だったし。半紙ってのがまたペラッペラの薄い紙でさ。そんなものにイラスト描くなよ、って今は思う。

 マップデータは兄弟で作ったな〜。
 確か方眼紙を持ってきて、適当に大陸を描いて、「あと中を色鉛筆で埋めろ」とか言って。私の大陸と、弟の大陸と、妹の大陸があった(大陸と言っても、全体が小さいので、そんなたいしたもんじゃない。ドラクエIのアレフガルドよりも小さかったような記憶がある。マップの大きさが方眼紙のサイズに依存していたのだ)。弟はその時あまり乗り気じゃなかったのか、ちゃんとやらなかったので、私が勝手に「これお前の大陸な」とか言ってお墓だのなんだので埋められたマップにした。妹はちゃんと作ってくれた。
 もちろん、マップデータを作るに先立ち、それぞれのパーツの画像を作った。主人公のスプライトと同様、元はテキストデータである。非常に高い集中力を持って、「この数値はこの色」というのを脳に焼きつけて、データを脳内で映像化しながらやらなければいけない。かなり大変な作業であった。
 今見ると、城とか町とか、まんまドラクエなんだよね。わざとそうしてたって部分はあるけど、やっぱりその時やってるゲームの影響とかは強いんだな、って思った。

 で、プログラムを作る時というのは、まあ人それぞれだとは思うが、たいていの場合細かく動作テストをしながら進めていく。解決しなきゃいけない問題にだいたいあたりをつけておき、ここまで作ったらこの問題のチェックができる、という部分まで作ってチェックをする。そういう事をしながら、完成されたプログラムに近づけていく。
 もちろん私も、このゲームを作っている当初は、小さな部分とそのテストを繰り返していた。入力受け付け、データ読み込み、スプライトやBGの表示、これらを小さな部分に分割し、それぞれの動作実験を行った。
 しかし、それらパーツを作り上げてから、序盤の山場である「背景するスクロールの中を主人公が動き回る」という部分を作るまでの間は、ほとんど動作実験は出来なかった。というのも先ほど書いたとおり、将来的にまともなRPGとして動作するように柔軟性を持って作られているので、結び付けなければいけないパーツが多いからだ。
 そういうわけで、実際に主人公がマップ上を歩き始めるまで、どう動作するのか分からないという状態だった。大変でもあるが、その分楽しみな作業でもあった。

 結局スクロールルーチンが組みあがったのが、X68kを買ってからちょうど1週間目くらいの時だった。おいおい、頑張りすぎだろって思うな。普通、買って1週間でこんなもん作らないだろ。
 それはともかく、初めて完成したスクロールルーチンを動かした時のあの気持ちは忘れられない。感動した? いや、違う。初めて動かした時の私の感想は、「遅い」という一言に尽きる。
 とにかくね、すごく遅かったのよ。動作が。見た目は確かに普通のドラクエ風RPGな感じになってたんだけど、歩くのが素晴らしくとろい。1マス動くのに何秒もかかる。それに、最初の画面表示時にチップを敷き詰めていくのが分かる。分かるというレベルじゃないな。敷き詰め終わるまでやたら待たされる、という状態。…超大昔のアドベンチャーゲームかよ…。

 これには愕然とさせられた。結構ショックだった。
 いやー、所詮はBASICだから、遅いんだろうとは思っていた。が、ここまでは思わなかった。まだ特別な処理は何も入れてなく、単に画面がスクロールする程度の事なのに、もう超絶的な遅さになっている。これは、コーディング上ちょっと工夫すればなんとかなるという問題ではない。

 タイムスタンプを見ると、これが1990年の12月28日かな。私の最初の大きな挑戦は、こういう形で打ちのめされてしまった。


前のMCLへ  次のMCLへ

戻る

TOM 2005