マップシステム

現在、開発凍結されています。ここに記載されている内容は、現在実現の目処はたっていません。

マップ表示#

マップの表示はいったん全てのマップチップを3D座標系に配置し、その中にキャラクターを配置してから奥にある物体から順に表示する。
旧[[三層構造]]のマップ層にあたる。

当たり判定#

当たり判定は120mMUを一単位として通行可・通行不可の状態がマップ情報に対応して存在している(予定)。

キャラマップ#

キャラマップ、それはキャラがどこにいるか、ではなくその場所に何のキャラがいるか、というデータで、あるキャラが移動しようとしたとき、移動先のキャラマップに何らかのキャラが登録されていると移動できません。
だからその場合は、相手キャラにそこをどくよう通知して、どいて進める状態になったら自分が改めて進みます。

これらを総合すると、次のようになります。

ちなみに、どくという作業もまた移動を伴うので、どくほうのキャラも同じ方法で移動を試みます。

座標系#

座標系のイメージ図

3D内部座標#

X軸を幅方向、Y軸を高さ方向、Z軸を奥行きの逆方向とした3D座標系を内部的に使用する。
3D座標系での長さの最小単位はmMU(micro Map Unit)であり、1cm=6mMUとほぼ同等。

2D画面座標#

3D内部座標ベクトルをWorld、2D画面座標ベクトルをScreenとすると、Screenは次のように計算される。

Screen.X[pixel] = World.X[mMU]/12[mMU/pixel]
Screen.Y[pixel] = -World.Y[mMU]/15[mMU/pixel] + World.Z[mMU]/20[mMU/pixel]

これは以下のようにも書き換えられる。
1pixel=2cm(幅)=5/2cm(高さ)=10/3cm(奥行き)
1cm(幅)=1/2pixel
1cm(高さ)=2/5pixel
1cm(奥行き)=3/10pixel

マップチップ#

マップチップの大きさは、3D内部座標でX=Y=240mMUを基本単位とし、Z軸を任意可変とする。
すなわち、2D画面座標では幅20pixel、高さ12pixel以上を基本とする。

マップ描画の概念#

壁越しに人がいるのを見ると
体の一部が隠れる
壁の前に人がいると
壁の一部が隠される
両方いたとき
壁の下半分→人→壁の上半分の順で描画すると辻褄が合う
でも上半分と下半分に分けて描画するのはちょっとおかしい
奥にあるものから順に描画すれば意味的にもまともだが実は大変

マップチップデータ#

マップチップ一つ一つは16bit長の数値で識別され、最大65536種類のマップチップが利用できる。
16bitは、最初の8bitでマップチップ集の番号を指定し、最後の8bitでマップチップ集内部の番号を指定する。

マップチップ集では、一つ一つのマップチップの詳細な設定を行い、マップチップ集は最大256個、一つ一つのマップチップ集に含まれるマップチップも最大256個である。

マップデータ#

マップ名、マップの大きさ、マス目単位のデータ、イベントなどの要素を記述する。
詳しくは[[データ形式/マップ]]にて。