パズルゲームを作ってみた

Ver 1.0.0 (2015/01/05)

  1. iceballer-bin-20150105.zip (実行モジュール一式)
  2. iceballer-src-20150105.zip (ソースファイル一式)

●概要
・NESのエミュレータや実機で動作可能なパズルゲームを作ってみました。

●動作環境
・nesファイルが実行可能なエミュレータか、NX(Nsf eXtend)アーキテクチャ仕様に準拠したTNS-HFCシリーズ。

●実行
・圧縮ファイルに対応しているエミュレータは、実行モジュール一式のファイルをそのままエミュレータで開いてください。

・圧縮ファイルに対応していないエミュレータの場合は、展開後、.nesファイルをエミュレータで開いてください。

・TNS-HFCにて動作させる場合、拡張子を.nsf、ファイル名は8文字以内に変更してください。

・JavaScript版エミュレータであるJSNESで動作確認できる環境を用意しました。
 下記のリンクを開き、「Select a ROM」から「Ice Baller」を選択してください。
 なお、実行速度の問題からサウンドなしのバージョンです。

  Family Web Computer

 実行は、FireFox、Google Chromeにて確認しています。

取扱い説明書

ICE BALLER

2人同時プレイが可能なアクションパズル! 2匹のペンギンを操作して、春を呼ぶ赤いボールをゴール目掛けて運び込め!

ストーリー

ある氷原の一角にあるペンギンランド。 寒いながらも春夏秋冬があって平和な場所だったのですが、 ある年の冬、何者かが季節を司る赤の宝玉を祭壇から持ち出し、氷原のあちこちに散らばってしまいました。 このままでは寒さが緩まず春が来なくなってしまい、卵から生まれたばかりのヒナが凍えてしまいます。 そこで2羽のペンギンが、氷原に散らばった赤の宝玉を大地の祭壇に運び込むために飛び出していきました。

起動方法

・iceballer.nes を、NESエミュレータにて開いてください。 ・TNS-HFCシリーズで起動する場合は、拡張子を .nsf に変更してSDカードに書き込んでください。  電源を投入し、プログラム読み込みが完了してからリセットボタンを押下すると起動します。

操作方法

タイトル画面

・LEVELはA、Bボタンで切替 ・SELECTボタンでシーン選択開始 ・十字キーの左右でシーン選択 ・STARTボタンでゲーム開始

ゲーム画面

・1Pは青ペンギン、2Pは赤ペンギンを操作 ・十字キーでペンギンの移動 ・Aボタンで、ブロックやボールを押すことができます。ただし、押した先に氷柱やモンスターがいると動かせません。 ・Bボタンでペンギン操作を入れ替え、1P側で2P側のペンギンが操作できます。2P側は1P側の操作となります。

ルール

・制限時間内に、赤の宝玉を大地の祭壇への入口へ運んでください。祭壇の入口には目印の旗が立てられています。 ・赤の宝玉や大地の祭壇入口以外に様々な障害物があります。壊せるものや動かせるものを上手に活用してください。

キャスト

・青ペンギン 本編の主人公。散らばった赤の宝玉を捜している。宝玉を運べるのは彼だけ。 ・赤ペンギン もう1人の主人公。青ペンギンと共に赤の宝玉を探している。宝玉は運べないが、大地の祭壇の入口を変える特殊能力を持つ。 ・スライム ちょっとおっとりしたモンスター。冬の間は凍って動けないはずなのに赤の宝玉の影響で動き出した。近くにいる動物達にじゃれつく。 ・ウィザード 炎の魔法を会得した魔術師。なぜか青ペンギンを目の敵にして魔法を放ってくる。 炎の魔法は凍ったものを溶かしてしまうし、ペンギン達は熱すぎて混乱状態になる。 ・赤スライム ときどき炎の魔法を吐き出すモンスター。スライムと同じで近くの動物に擦り寄ってくる。 ・ソーサラー リバースの魔法を会得した上級魔術師。やっぱり青ペンギンに向けて魔法を放ってくる。 リバースの魔法は凍ったものを溶かし、凍っていないものは凍らせ、ペンギン達は意識が入れ替わってしまう。

マップ上の配置物

・赤の宝玉 ペンギンランドに古くから伝わる宝玉。青ペンギンしか動かせないが、大地の祭壇に戻すことで四季のバランスを戻すことができる。 ・旗 氷原の下に眠る大地の祭壇の入口に立てられている。なぜか赤ペンギンは入口を変えることができる。 ・茶色のブロック 青ペンギンは壊せるが、赤ペンギンは動かすことができる。 ・凍ったブロック 青ペンギンは動かすことができるが、赤ペンギンは壊せる。 ・氷のブロック 押すとつるつる滑っていく。 ・氷柱 押しても動かない氷の柱。魔法があたっても変化しない。

テクニック

・スライムやウィザードも押せます。 ・氷のブロックや赤の宝玉が移動して他の氷のブロックやモンスターに当たった場合、当てられたブロックやモンスターが動きます。 ・氷のブロックが連なったところに氷のブロックを当てると、連なった先のブロックが動きます。 ・ボールの先が行き止まりの場合、更に押すと引っ張り出すことができます。 ・動かせるブロックの先が氷柱以外の障害物で更にその先になにもなければ、障害物を動かせます。
タイトルからプレイデモまで。

ビルドについて

プロジェクトをビルドするには、cc65とmsysのインストールと環境変数の設定が必要です。 配布時は、以下のディレクトリ構成を想定しています。 c:\home\fwc ... プロジェクトを含むディレクトリ c:\home\fwc\iceballer ... プロジェクトディレクトリ c:\home\fwc\nsdl ... NES Sound Driver Library のディレクトリ c:\cc65 ... cc65のコンパイラ、ライブラリのディレクトリ c:\MinGW\msys ... msysのディレクトリ c:\opt\virtualnes ... VirtuaNESのディレクトリ(動作確認用でビルドには不要) 各自のインストール先に応じて setenv.bat を編集し、 コマンドプロンプト上にてビルド作業を行う前に一度だけ実行してください。 後は、各プロジェクト配下で、make を実行すればビルドできます。 なお、VirtuaNES のパスが設定されていれば、make run で自動実行できます。 操作手順の例: > setenv > make Makefileはmsys及びWindows依存です。 LinuxやMacで利用する場合は、適宜修正してください。

カスタマイズ

build.def

makeを実行する際、build.defを書き換える事で定数定義を外部から指定できます。 現在テンプレートとして用意しているのは、以下の定義ファイルです。ファイル名を build.def に変更して使います。 ・build-normal.def サウンドありの通常コンパイル用 ・build-silent.def サウンドなしのコンパイル用 ・build-padrec.def プレイデモ記録用(1シーン分のパッド入力情報を1P側0x7000から、2P側0x7800から記録)

シーンマップの変更方法

シーンのマップ情報は、map.c の 322行目あたりからバイト配列で用意しています。 1シーンは横12マス、縦11マスから構成されており、全30シーンです。 277行目あたりで定義しているシンボル定義の文字列(_ や Oなど)を配置してコンパイルしなおしてください。 LEVEL B の場合は、スライムとウィザードが、強制的に赤スライムとソーサラーに置き換わります。 テキストエディタで xyzzy を利用されている方は、コメント側を修正後、マクロ実行で配列側に反映することができます。 1. M-x: load-file にて、cmt2map.l のLispファイルを読み込む 2. メインメニュー>ツール>キーボードマクロおまけ>読み込み を選択 3. cmt2map を選択し、読み込みボタンを押下 4. 変更したコメントのある行の先頭でマクロ実行

注意

・キャラクタはNPC含めて8体まで配置できますが、画面中に魔法の玉が2つまでなので魔術師の配置時に注意してください。 ・水平方向にキャラクタを4体並べると、ブリンク制御を行っていないため5体目以降が表示されません。 ・エラーチェックはほとんどありませんので、クリア不可能あるいは実行不可能なマップにならないよう注意してください。 ・プレイデモのシーンを変更した場合、恐らくクリアできなくなります。 プレイデモ用にコンパイルしたバージョンをエミュレータにて実際にプレイし、 メモリビュアーやステータスセーブファイルよりパッド情報を取得して、demo.c の冒頭にある配列へセットしてください。
●免責事項 ・作者は本プログラムの使用によって生じた損害の一切を補償しません。  個人の責任において使用してください。 ●謝辞 ・NES及びFamily Computerを支えている皆様に感謝。