何とか庵日誌

本名荒井が毒にも薬にもならないことを書きつづるところ

「DISK ADVENTURE」

f:id:fukenko:20160730004025p:plain


 ここしばらく用事やなんやかんやで時間を取られることが多かったにもかかわらず、プログラムは毎日入力してました。本当にちょっとずつでも毎日続けていれば、けっこう入力できてしまうものです。というわけでこないだ入力し終わったプログラム「DISK ADVENTURE」のご紹介。例によって出典は電波新聞社MSXプログラム大全集。題名どおりのアドベンチャーゲームです。


f:id:fukenko:20160730004042p:plain


 舞台はとある豪邸OZUKA HOUSE。OZUKA家の莫大な遺産のありかを示したフロッピーディスクがこの家のどこかに隠されているので、それを探しだすことが目的です。スタイルは昔懐かしのコマンド入力式AVG。プレイヤーは「LOOK」とか「TAKE」など、取りたい行動をキーボードから入力し、ゲームを進めていきます*1
 MSXのゲームには非常に珍しく、スクリーン0を採用しています。グラフィック等が全く表示されないテキストアドベンチャーながら、画面には行ける方向を示した現在地マップが常時表示され、見た目の淡泊さを補っています。


f:id:fukenko:20160730010857p:plain
f:id:fukenko:20160730013019p:plain


 アマチュア制作の打ち込みゲームゆえ、ボリュームや内容が気になるところですが、心配はご無用。受け付けてくれる単語は少ないながらも様々なトリックがちりばめられ、頭を悩ませてくれます。屋敷内に置かれたアイテムは手に入れ方はもちろん、どこでどう使うかには意外な発想が必要です。鍵のかかったドアの開け方ひとつを取っても、鍵を使ったり、アイテムを使ってピッキングしたり、時に破壊したり等々、場所によって開け方が全く違っているので、プレイヤーは様々な手段を試すことになります。ゲームは全17場面。解法を知っていれば瞬く間に終わりますが、凝ったトリックは解きごたえ十分。謎解きの楽しさが存分に味わえます。言葉探しのトリックがあったりするのも当時ならではでしょう。


f:id:fukenko:20160730014036p:plain
f:id:fukenko:20160730014046p:plain


 この手の打ち込みAVGで大事なのは、入力中にネタバレしないことです。”IF C$="POLISH PILLAR" THEN PRINT "タカラ ヲ ミツケタ"”なんて具合に重要なメッセージがそのままプログラム中に埋め込まれていたり、入力すべきコマンドがそのまま記述されていたりすると、プログラムを打ち込むだけで答えが分かってしまい、面白さが激減してしまいます。プレイヤー=入力者であった当時、メッセージの暗号化は必須の配慮でした。
 その点でも本作は抜かりありません。コマンド判定処理や表示されるメッセージは暗号で処理されてあり、どんなコマンドを入力すればどんな反応が返ってくるか、ちょっとリストを見ただけでは分からないようになっています。
 暗号化と言っても本作の場合、けっこうかんたんなものです。入力する単語や表示されるメッセージは全て短い文字列として定義されてあり、各文字列は計算式によって短い固有のコードに置き換えられます。コマンドやメッセージはこのコードによって処理されているため、一目で分からないばかりか、リストの圧縮にも一役買っています*2


f:id:fukenko:20160730015627p:plain
f:id:fukenko:20160730015637p:plain


 かくして見事ディスクを手に入れればゲームクリア。エンディングは当時らしく、短い祝福メッセージが表示されるだけのあっさり仕様。ただし直後にリセットがかかって再起動してしまうため、入力し終わったら必ずセーブしてから遊ばなければなりません(笑)。
 オールBASICでシンプルに組まれた作品ながら、ツボを押さえた作りでボリュームも難易度も手頃。リストも一行が短く非常に見やすいのも、入力する身にはうれしい限り。アマチュア制作のMSXAVGでも、相当に出来がよい作品だと断言してしまいましょう。


 おまけ。このプログラム、リスト中に若干まちがいがありまして、それに由来する誤字や受け付けないコマンドが存在します。以下のとおりに手直しすると修正できますので、リストをお持ちの方はお試しください。

760行:IF D$="CH "~ => IF D$="CH"~
820行:IF D$="CHL"~ => IF D$="HHL"~
860行:~B$="2W3E1K3Q"~ => B$="2W3E1K3G"
1000行:~B$="4S4S4T3Y" => B$="4S4T3Y"
2300行:DATA ステデハ~ => DATA スデデハ~

*1:編集部コメントによればマイクロキャビンの名作「ミステリーハウス」を彷彿させる出来らしい。

*2:逆に言えば各コードは固有の文字列に1対1で対応しているため、どのコードがどの文字列に対応しているかさえ明らかにしてしまえば、暗号化された状態でもリストを見ただけで答えが分かってしまいます。おかげでデバグがはかどったぜ(泣)