見出し画像

ぴゅう太のBASICでドルアーガの塔を60面まで作ってみた!

ドルアーガの塔を60面まで作ってみました。
ぴゅう太のBASICで、出来るだけ実機でも動くように作りました。
その内容について書きたいと思います。

なぜ作ろうと思ったのか?

個人的にはドルアーガの塔が上手い人間ではない。。
40面まで行って、さじを投げた思い出がある。
Windows版のドルアーガの塔を所持して遊んでいた。

ドルアーガの塔は完成したのか??

過去にぴゅう太のBASICでいくつかのゲームを作った。
前回、ゼビウスっぽいゲームを作った。
その流れで、次はドルアーガの塔しか選択になかった。
そんな流れで、ドルアーガは再現可能なのか?
そんな疑問がでてきた。
しかし、ここからが地獄のはじまりだった・・・

なるとさんのG-BASICエミュレーターを使用しています。
画面はエミュレーターのものです。

51面 ローパーだらけ

ドルアーガの塔がBASICで作れるのか?

まず最初にそんな疑問があった。
そもそも、ぴゅう太のプログラム容量はわずかしかない。
8KBもないかもしれない。
そうなると、できる事が限られている。
60面まで作るのは無理かもしれない。
そんな懸念を持っていた。
作るのであれば、全60面を作ることは絶対なのである。
もし1面だけ作れたとして意味があるのだろうか?
60面すべて遊べなければ意味がない。
そう思っていた。

17面 ブルースライムが不気味

基本1面から60面まで同じ?

ドルアーガの塔のゲームの流れを考えてみる。

・宝箱を出して取る
・鍵を取る
・ドアに行く

この流れは60面まで同じなのである。
ならば1面さえ作れれば60面まで作れるかもしれない。
でも、作ってみないと何とも言えない・・・

試しにグラフィックを作った

そもそも、どの程度のグラフィックが再現できるのか?
グラフィックを作ってから考えてみる。
それで、はじめに迷路とギルを作ることにした。
迷路もどの程度再現できるのか疑問だった。
結果的に、何度も作り直してこのパターンになった。
動いていて飽きないパターンに工夫したつもりなのだが。
迷路じたいは各面で変化する訳でない。

24面 ブルーウィルオーウィスプが登場

何しろ、ぴゅう太のグラフィックは16色しかない。
だけど、迷路だけはしょぼくしたくなかった。
実は、迷路のタイル床がいちばん苦労した部分だったりする。
このタイル床は単純なパターンに見える。
しかし、タイル床の形や色で見た目が大きく変わる。
タイル床は、画面全体に占める割合が大きいのである。
何度も作り直した結果、このようなタイル床になった。

単純に見えるタイル床だが色や形に試行錯誤した

また、本家では迷路の壁が紺色なんですが。
ぴゅう太で紺色にすると、見た目が悪くなった。
あえて壁を灰色にして、メリハリをつけた。
比較のためアーケード版も載せておく↓↓
色合い違うが、ぴゅう太ではこれが限界だと思っている。

アーケード版 18×9マス
ぴゅう太版 15×7マス

ギルは、いちばん手を抜きたくない部分だが。
8×8ドットでは作るのも限界があった。
出来ればもう少し大きなキャラが望ましいのだが。

敵キャラクターはできるだけ雰囲気を再現してみた。
カイが本家とは違うが、本家のカイがあまり好きではない。
キャラクターはまだ改善できるかもしれない。

60面までのモンスター達
スライムも2色で表現してみた

剣の判定は難しい?

ギルは剣を出せるが、これが一番難しかった。
ギルは動かせて、ギルの方向に剣を出す。
たったこれだけですが、バグがでて試行錯誤していた。
結果的に、ギルは背景で剣はスプライトで表示している。
剣のスプライトは1枚で縦と横剣を表示している。
ギルの座標に合わせて、スプライト1枚を動かしている。
だから、別の剣がギルの近くに表示されてしまう。
プログラムを節約するためにこうなった。

29面 ブラックスライムの色が難しかった

敵の動きなど断念した

プログラム容量の節約のため断念した部分が多い。
プログラム容量は8KBあるのだろうか?
当初、敵は動かせるように作ったのだが。
その部分はカットしたので、敵は動かなくなった。
断念した部分を以下に書きます。

・敵は動かない(当初動く予定だった)
・ギルの剣は常に表示(鞘に納めない)
・アイテムはなし
・マトックで壁が壊せない
・迷路は各階で変化ない
・時間切れでウィルオーウィスプは出ない(即ゲームオーバー)

面クリアのルールが違う

面クリアーのルールは本家と違うのですが。
以下の条件を達成すれば面クリアとなる。

・敵をすべて倒す
・鍵を取る
・宝箱を出して取る
・ドアに行く

時間切れになる前に達成すれば面クリアになる。
時間切れになれば、即ゲームオーバーになる。
コンティニューはない。

31面 宝箱はギルがいた場所に出る

なぜ敵を全て倒すのか?

全ての敵を倒さなければ面クリアできません。
本家とは違うルールになります。
敵が残っていると、最後に敵を消す処理が必要です。
敵を消す処理はプログラム的に大きいです。
だから、その処理をカットする必要がありました。
マトックで壁が壊せないのも同じ理由です。
壁を壊すと、壁を元に戻す処理が必要になります。
その処理もカットしたかった。

最終面は再現可能なのか?

最終面だけは、しっかりと完成させたい。
そんな思いが当初からあった。
しかし、ここでもプログラム容量が問題となる。
少なくてもクリスタルロッドとカイを取る。
そして、エンディングになる。
この流れは最低必要だと思った。
最終面のプログラム容量を確保する必要があった。
そのため敵の動くプログラムをカットした。
結果的に、すべての面で敵は動かなくなってしまった。

60面 クリスタルロッドを取るだけではクリアできない

最終面に最大の謎が?!

60面はいちばん難しくなっている。
クリスタルロッドを取ることは勿論。
それだけではクリアできない。
詳しい内容は謎としておく。
60面まで行けた人なら多分わかると思う。
時間切れになれば即ゲームオーバーになる。
コンティニューもないので悲劇が襲う。
クリアすればエンディングになる!

エンディングで終わらない?!

60面で終わるはずだったのですが。
最後に気が付いたことがある。
エンディングのときXボタンを押すと。
何と2週目がスタートするのである。
リスタートするのは当然なのだが。
そうなると思っていなかった。
2週目はいったいどうなるのか?!
2週目もクリアーできるのだろうか?
誰か検証してみてはいかがだろうか。

7面 レッドスライムが登場

最後に奇跡が起こった?!

実は宝箱は出すことができなかった。
宝箱は最初から表示するしかなかった。
これもプログラム容量が足りない為だった。
宝箱を出す醍醐味が消えてしまったのである。
残念なドルアーガになったと思っていた。
しかし、最後に奇跡が起こった。
簡単にできるアイデアが浮かんだ。
宝箱の場所に、特別な床を置けばいいのでは?
床を通過したら宝箱が表示される。
これなら簡単なプログラムで済むはず。
何とか、そのプログラムを追加できた。
本家と同じく、宝箱はギルがいた場所に表示される。

宝箱を出す方法は?

あるポイントを通過すれば宝箱が出る。
ポイントは毎回ランダムに変わる。
どこで宝箱が出るのかまったくわからない。
時間内に宝箱を取らないとゲームオーバーになる。
そのため効率よくポイントを探す必要がある。
効率よく探すには、記憶力も必要になってくる。

全面クリアは過酷

この時点で、最後にやってないことがある。
1面~60面までをテストプレイしてない。
修正する部分が多かったため、全面プレイできてない。
1面から60面まで最低50分はかかると思う。
50分を必死にプレイしなければならない。
宝箱を効率よく出すには、記憶力も必要になる。
頭をフル回転させる必要がでてくる。
コンティニューがないので、時間切れで即死ぬ。
想像以上に過酷なゲームになると思う。

15面 クオックスはいるのだが・・・

ギルを動かすプログラム

ギルを動かす部分がメインプログラム。
ぴゅう太では1行を長く書けない仕様になっている。
IF命令で判定条件1つのみ、THENの後ろはGOTOしか使えない。
方向キーに対応するセル値を読むことで、
ギルが移動する座標を計算している。
ギルの4方向キャラクターも同じ仕組みで表示している。

700 キイ1 K,KK  キー方向を入力
705 TI=TI-10  タイムを-10
706 カケ 505,TI  タイムを座標表示
707 モシ TI=0ナラバ1500ニイケ  タイム0ならばゲームオーバーへ
710 モシ K =0ナラバ 700ニイケ  キー入力なしなら700行へ
720 Z =セル(552+K)+G-32  キーに対応するセル値を変数Zに
730 C =セル(Z)  Z座標の値を変数Cに

750 モシ C=T1ナラバ 800ニイケ  C座標が敵1なら処理へ
760 モシ C=T2ナラバ 800ニイケ  C座標が敵2なら処理へ
770 モシ C=T3ナラバ 800ニイケ  C座標が敵3なら処理へ
780 モシ C=61183ナラバ 800ニイケ  C座標がカギなら処理へ
790 モシ C=15615ナラバ 800ニイケ  C座標がポイントなら処理へ
794 モシ C=65534ナラバ 800ニイケ  C座標がドアなら処理へ
795 モシ C<>65535ナラバ 700ニイケ  C座標が床でないならば700行へ

800 セル(G)=セル(768)  ギル座標にセル(768)を移す
810 G =Z  ギル座標を変数Gに入れる
820 セル(768)=セル(G)  セル(768)にギル座標を移す
830 B=セル(768)  変数Bにセル(768)の値を入れる
850 セル(G)=セル(544+K)  ギル座標にギル向きのセルを移す

最後に

ぴゅう太でドルアーガの塔とは何だったのか?
意味があるのか自問自答していた。
出来た所で意味はないかもしれない。
しかし、作っている瞬間は面白かった。
夢中になって作っていたと思う。
意味がないが、作るのが面白い。
だから、やめなかったのかもしれない。
どこまで再現できるのかわからなかった。
当初は、もっと再現できると思っていた。
でも、こうなったのは仕方ない。

ぴゅう太BASICとグラフィック機能

ぴゅう太のRAMは16KBしかない。
RAM16KBはかなり少ないと感じている。
しかし、グラフィックとBASIC機能は分けられている。
背景やキャラクターをBASICで書く必要がない。
スプライトパターンもBASICで書く必要がない。
背景やキャラクターはたくさん描ける。
これは、メモリ的に効率が良いと思う。
もし、グラフィックとBASICを十分に使いこなせば。
実質、24KB以上のBASICに相当する可能性がある。
グラフィックはぴゅう太の最大の強みかもしれない。

ゲームファイルはこちら

なるとさんのG-BASICエミュレーターを使用しています。
エミュレーターとゲームファイルをダウンロードしてください。
G-BASICエミュレーター 
エミュレーターはこちらからダウンロードしてください。
ゲームファイルは以下になります。

この記事が気に入ったらサポートをしてみませんか?