進捗報告 – マップの作成

システム面の作成段階で割と悩んだのはマップの作成方法についてです。マップチップを使った方法ではマップエディタ(またはそれに類する編集手段)を作成する必要があるのですが、ゲーム内にどう組み込むかという問題もあり、操作性のいいエディタを作成するのはなかなか難しいです(現に数回心が折れてる)。

以前まで採用していた「ベクターグラフィックスとHitTest関数を使った作成法」は非常に実装が簡単ですが、

  • 床の法線や情報(素材によって足音が変わる、とか)を取得することが困難
  • 厳密な当たり判定が取れない
  • グラフィック面がチープになる(繰り返しのパターンなどを動的に描画できない)

などの問題があります。

sdpo_progress_map_daydream
過去作DayDreamでのマップ。床のテクスチャはビットマップによる塗りつぶし(手作業)で表現

それを踏まえて、今回は「コンポーネント・ムービークリップのクラス情報を利用した動的生成」という手法を取ることにしました。具体的な手順は以下のとおりです。

  1. マップとなるムービークリップ上に配置したいムービークリップをFlash CS4でマウスでグリグリ配置し、swcとして書き出す
  2. 各オブジェクトを表すクラス(「岩」とか「木」とか)とムービークリップを紐付ける(抽象メソッドでクラスを返すようにしています)
  3. 紐付けに従ってマップロード時にオブジェクトを生成する

sdpo_progress_map_editer
1. でのマップ。床(紫色)はコンポーネントのパラメータで属性(「雪原の床」とか)を指定

sdpo_progress_map実際に生成されたマップ。木は「雪原の床」クラスで初期化時に動的生成

sdpo_progress_map_snowedge
「雪原の床」の単位タイル。床の動的生成時にはこれをちょうどいい間隔で拡大縮小して敷き詰める

これによって適当にオブジェクトを配置するだけでそれっぽいマップを作ることができ、作者のモチベーションが保たれます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です