前回の数独の制作でゲームボーイのゲーム作りが楽しくなってきたので、引き続き何か作ってみたくなりました。
数独と同様にテンキーを利用できるゲームにしたかったので、シミュレーションかアドベンチャーがいいだろうなと思い、比較的プログラミングがやさしそうなアドベンチャーゲームを作ってみることにしました。
とはいえ本格的なゲーム制作はとても敷居が高いので、まずはアドベンチャーゲーム黎明期に幾つも発売されていたミステリーハウス風のゲームを目指してみたいと思います。
アドベンチャーゲームを作るにあたって、まずは各場面の画像データを用意しなければなりません。ゲームボーイはドット絵のタイルパターンを敷き詰めて1画面を作るようなハード構成になっているのですが、ドット絵を作り込むような技術は持っていないので画像データを白黒4色に変換して取り込んでいく方法を取ることにしました。
ミステリーハウスもどきを考えているので、元となる画像データは家の3Dデータを画像にして取り込むことに。ところがゲームボーイの背景画像用のビデオRAM(VRAM)の容量が8KB(8x8ドットのタイルが256個分)しかなく、実際に画像を変換して取り込んでみると、複雑な画像データは容量オーバーで表示することが出来ないのです。ここにさらに文字のビットマップデータも収納しなければならないのでかなり容量が厳しいことになります。
VRAMには他にスプライト用があるのですが、そのうち4KBは背景画像と共用な上にスプライトは1ライン10個、最大40個までしか表示できないのであまり画像表示や文章のような長い文字列表示には向いていません。
ここから試行錯誤の繰り返しで、画像表示領域を小さくしたり、画像の空白部分を増やすなどして画像ごとにデータ量を調整するという面倒なことになってしまいました。
さらに面倒なのは、アドベンチャーゲームはプレイヤーのコマンドによって状況がどんどん変化していくので、それに対応してコマンドやメッセージも変化させなければならない点です。行き当たりばったりでプログラミングを行っていくとこれらの処理ルーチンがごちゃごちゃになり、あとで修正する必要が出ても簡単には修正できないようなスパゲッティプログラムになってしまいます。
いや〜、アドベンチャーゲーム制作がこんなにめんどくさいものとは思いもせず、甘く考えていました。
そんなこんなでなかなか制作がはかどらず、いまだ完成には至ってはいません。
とはいえ何もないのは寂しいので、とりあえず動作する部分のみアップしてみました。
mhouse.gb
大したものではないので、テストプログラム程度のものと思って下さい。
ゲームはテンキーで操作しますが、エミュレーターなどでも遊べるようにゲームボーイのコントローラにも対応しています。遊び方は以下の通りです。
テンキーの場合:
5 ... 「移動モード」と「コマンド入力モード」の切り替え
[移動モード]
8246 ... 前後左右
[コマンド入力モード]
82 ... コマンド選択
Return ... 決定
コントローラの場合:
Bボタン ... 「移動モード」と「コマンド入力モード」の切り替え
[移動モード]
十字キー ... 前後左右
[コマンド入力モード]
十字キー ... コマンド選択
Aボタン ... 決定
ゲームの完成を考えると気が遠くなりそうですが、嫌気が差さないように少しずつ進めて行こうと思います。
最新の画像[もっと見る]
- ラスベリーパイのベアメタル環境でLVGLを使う 5日前
- ラスベリーパイのベアメタル環境でLVGLを使う 5日前
- ラスベリーパイのベアメタル環境でLVGLを使う 5日前
- ILI9341搭載のタッチパネルをLVGLで利用する 2週間前
- ILI9341搭載のタッチパネルをLVGLで利用する 2週間前
- ILI9341搭載のタッチパネルをLVGLで利用する 2週間前
- ILI9341搭載のタッチパネルをLVGLで利用する 2週間前
- ILI9341搭載のタッチパネルをLVGLで利用する 2週間前
- ILI9341搭載のタッチパネルをLVGLで利用する 2週間前
- ILI9341搭載のタッチパネルをLVGLで利用する 2週間前
※コメント投稿者のブログIDはブログ作成者のみに通知されます