2010年02月14日

着々とアイテム・モンスター図鑑作成中

エンディングを作り終えてゲーム作成終わりとならないところが不思議なもんだけど、
こういうのって作ってみないと分からないもんだね。

現在アイテム図鑑・モンスター図鑑を作成中。
基本的なシステム周りはほぼ作り終えたので、あとは55種類の敵と59種類のアイテムの説明文をがりがりと書いているところ。
  
アイテム・モンスター図鑑の仕組みについて

これだけだと単なる状況報告だなあ。それ自体は全然悪くないんだけど、記事にするほど面白くもないんで図鑑の実装方式について説明しよーーー

アイテム・モンスター図鑑は、それだけでひとつのシーンとして独立させてみた。あ、そうそう、以前エンディングシーンをシーン7として独立させたって話をしたと思うけど、いざ実装してみるとオープニングシーンと別立てで実装するほど動作に違いがなかったんで、エンディングとオープニングはまとめてシーン0にしました。

で、開いたシーン7を図鑑シーンとして独立。オープニングシーンで「おまけ」を選ぶと、図鑑の種類を選べるようにしたのだ。

zukan.jpg

いつものオープニングシーンの画像に選択肢追加ね。

図鑑のテキストは02mapEvent.strおよび03mapEvent.strに書きこむことにした。これによって、「loadMap」関数でイベントスクリプト一覧に図鑑の説明書きを読み込むことができるわけだ。

ちなみに、「loadMap」関数は、マップ情報やら敵情報やら、他に余計なファイルをいくつも読み込もうとするんだけど、そこらへんは当然図鑑シーンにはいらないので、「loadMap」関数を修正。
最初に「0」がつくマップでは「mapEvent.str」ファイルだけ読み取れば終了するようにした。

モンスター図鑑のためのちょっとした工夫

さて、アイテム一覧はソレ専用の命令が用意されているから問題ないんだけど、今の今まで5つの宝島にはモンスター一覧のための一覧出力命令なんてのはない

そのために適当に文字列の配列を間借りして、シーン7のときだけそいつをモンスター一覧のために使う必要がある。今まで一覧として使用している文字列一覧は

  • menuEvent メインメニューに使用している。要素数16固定
  • mgcEvent 魔法や特殊行動スクリプトに使用している。要素数64固定
  • mapEvent 各マップイベントスクリプトに使用している。要素数可変
  • saveList 保存一覧に使用している。要素数可変

要素数可変で自由に使えるのはmapEventかsaveListだけで、mapEventはモンスターの説明一覧に使用しているため、消去法でsaveListを使うことにしよう

さらに、各モンスターのHPや攻撃力などを保存する領域もそんなに多くない。各マップには最大10種類程度のステータス保存領域はあるけど、55種類ものモンスター用のステータス保存領域はない。

これは、モンスター説明一欄にスクリプトを自動注入することで対応した。HPやMPなどをスクリプト用汎用int配列の_args[]に保存し、詳細画面ではその汎用配列からステータスを読み込むようにしている。

宝箱回収率は?

そうそう、最後に書き忘れたことを。宝箱回収率はおまけ画面ではなく、最後の財宝の部屋で確認できるようにするつもり。なぜならモンスター・アイテム一覧は全ゲームで1個あればいいけど、宝箱回収率はセーブデータがあるならあるだけ作れるからだ。

ああ、そうそう、宝箱回収率を効率的に計算するために、宝箱フラグをひとかたまりのところに集中させるコンパクションもやっておかないと・・・

やることいっぱいあるなあ。まだまだ作成は終わらないっぽい

実に充実したバレンタインデー
だ。
posted by LoyalTouch at 19:10| Comment(0) | TrackBack(0) | 5つの宝島 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック