Data/MapData/XXX.mpxファイル
オフセット | サイズ | 内容 |
---|---|---|
00~0F | 16 bytes |
0x00 00 00 00 00 00 00 00 00 00 57 4F 4C 46 4D 00(" WOLFM ") 改竄検知? この値が不正な場合、ウディタで読み込もうとすると下図のような改竄検知ダイアログが表示され、強制終了してしまう。 ![]() ただし、必ず上記の値でなければならないということはない。 以下の条件だとダイアログが表示されることを確認。
オフセット 04 ~ 08、0A ~ 0F は適当な値を入れてもダイアログが表示されない。 どんな値を入れていても、ウディタ上で編集して保存すると初期値に戻される。 |
10~18 | 9 bytes |
【Ver3.00以前】00 00 00 00 64 00 00 00 65 【Ver3.00 ~ 3.324】55 00 00 00 64 00 00 00 66 【Ver3.330以降】55 00 00 00 65 00 00 00 67 ファイルフォーマット定数? Ver1.10で作成したデータをVer1.20以降で読み込み、編集して保存してもこの値になる。 値を変更してウディタで読み込むと改竄検知ダイアログが表示された後フリーズしてしまう場合がある。 正常に読込が完了する場合もある。 どんな値を入れていても、ウディタ上で編集して保存すると初期値に戻される。 |
オフセット | サイズ | 内容 |
---|---|---|
19~1C | 4 bytes(Int32) |
展開後のサイズ(バイト数)
|
1D~20 | 4 bytes(Int32) |
展開前のサイズ(バイト数)
|
21 | 可変 |
圧縮したマップデータ
LZ4形式で圧縮されている。
展開後のデータ形式については下記「マップ情報データ構造」欄参照
|
オフセット | サイズ | 内容 |
---|---|---|
19~ | 可変 |
【マップ情報】 詳細は下記「マップ情報データ構造」欄参照 |
マップ情報
Ver3.330 以前の場合、このデータ構造が mps ファイルに直接格納されている。
Ver3.330 以降の場合、mps ファイルに格納された圧縮データを展開するとこのデータ構造となる。
「オフセット」は Ver3.330 以前の情報。Var3.330 以降は -19 した値となる。
オフセット | サイズ | 内容 |
---|---|---|
19~ | 可変 |
謎文字列。 【Ver3.330以前】「なし」 【Ver3.330以降】空文字 バイナリエディタなどで文字列長を変更してもウディタは正しく読み取る。 この場合、ウディタ上で編集して保存しても文字列の内容は保持される。 空文字でもOKだが、サイズ0の場合タイルチップ以降の読み込みが正常に行われず、どこかでエラーが出るかフリーズする。 |
4 byte(Int32) |
タイルセットID |
|
4 byte(Int32) |
マップサイズ横 Ver3.330以降、ウディタ上で10000以上の値を指定するとエラーとなる。 Ver3.330以降、マップサイズ横*マップサイズ縦が 1000万 を超える値を指定するとエラーとなる。 |
|
4 byte(Int32) |
マップサイズ縦 Ver3.330以降、ウディタ上で 10000 以上の値を指定するとエラーとなる。 Ver3.330以降、マップサイズ横*マップサイズ縦が 1000万 を超える値を指定するとエラーとなる。 |
|
4 byte(Int32) |
マップイベント数 |
|
マップサイズ縦*横 or 4bytes(Ver3.00以降のみ可能性あり) |
マップチップ(レイヤー1)のID オートチップでない場合:0~(1~16も含む) オートチップの場合: オートタイル最初の透過チップをID1とし、ID1~16。 ID * 100000 をベースに、以下数値を加算する。 左上のパーツコード * 1000 右上のパーツコード * 100 左下のパーツコード * 10 左下のパーツコード * 1 ※パーツコード ウディタのオートタイルの仕様に則って5種類の画像を縦に並べたとき、 上の画像から順に0~4 (0,0)(0,1)(0,2)…(0,Y)(1,0)(1,1)…(X,Y)の順に並ぶ。 【Ver3.00以降】 「3レイヤーとも完全に空白」の場合、0xFF FF FF FF 固定。 「3レイヤーとも完全に空白」の詳細については後述。 |
|
マップサイズ縦*横 or 0byte(Ver3.00以降のみ可能性あり) |
マップチップ(レイヤー2)のID 値の法則はレイヤー1と同じ。 【Ver3.00以降】 「3レイヤーとも完全に空白」の場合、0 byte。 |
|
マップサイズ縦*横 or 0byte(Ver3.00以降のみ可能性あり) |
マップチップ(レイヤー3)のID 値の法則はレイヤー1と同じ。 【Ver3.00以降】 「3レイヤーとも完全に空白」の場合、0 byte。 |
|
続き | 可変 |
【マップイベント】 詳細は下記「マップイベントデータ構造」欄参照 マップイベントの数だけ連続する。 |
1 byte |
0x66 ファイル末尾を示す? |
マップイベント
マップイベント一つにつき以下のデータセットが一つ。
オフセット | サイズ | 内容 |
---|---|---|
00~04 | 5 byte |
6F 39 30 00 00 |
05~09 | 4 byte(Int32) |
マップイベントID |
0A~ | 可変(文字列) |
イベント名 |
4 byte(Int32) |
X座標 |
|
4 byte(Int32) |
Y座標 |
|
4 byte(Int32) |
イベントページ数 |
|
4 byte(Int32) |
00 00 00 00 |
|
可変 |
マップイベントページ イベントページ数連続する |
|
1 byte |
70 イベント末尾を示す |
マップイベントページ
イベント1ページにつき以下のデータセットが一つ。
オフセット | サイズ | 内容 |
---|---|---|
1 byte |
0x79 |
|
4 byte |
タイルセット指定時タイル番号 キャラチップを指定している場合、-1(0xFF FF FF FF) |
|
可変(文字列) |
チャラチップ名 キャラチップ未指定時、空文字。 グラフィック未指定時、 タイル番号=-1 キャラチップ名=空文字 となる。 |
|
1 byte |
キャラ画像初期向き テンキー1~9に対応した方向 |
|
1 byte |
キャラ画像初期アニメーション番号 歩行アニメーション左から順に0~4 キャラ画像初期向き、初期アニメーション番号は キャラ画像がT規格やTX規格の場合、歩行/停止は問わない。 |
|
1 byte |
キャラチップ透過度 |
|
1 byte |
キャラチップ表示形式 |
|
1 byte |
起動条件 決定キー:0x00 自動実行:0x01 並列実行:0x02 プレイヤー接触:0x03 イベント接触:0x04 |
|
1 byte |
条件1条件演算子 & 使用フラグ 上位 4 bit :条件演算子 より大きい:0x00 以上:0x10 同じ:0x20 以下:0x30 より小さい:0x40 以外:0x50 ビットを満たす:0x60 下位 4 bit :使用フラグ 使用する:0x01 使用しない:0x00 |
|
1 byte |
条件2条件演算子 & 使用フラグ 値の法則は条件1条件演算子 & 使用フラグと同じ |
|
1 byte |
条件3条件演算子 & 使用フラグ 値の法則は条件1条件演算子 & 使用フラグと同じ |
|
1 byte |
条件4条件演算子 & 使用フラグ 値の法則は条件1条件演算子 & 使用フラグと同じ |
|
4 byte(Int32) |
条件1左辺 変数呼び出しで使用する100万以上の値 条件1~4左辺について、0が格納されているパターンが存在する。 条件不明。 |
|
4 byte(Int32) |
条件2左辺 値の法則は条件1左辺と同じ |
|
4 byte(Int32) |
条件3左辺 値の法則は条件1左辺と同じ |
|
4 byte(Int32) |
条件4左辺 値の法則は条件1左辺と同じ 条件1~4左辺はデフォルト(セルフ変数0)のまま一切編集しない場合、 0x40 42 0F 00 (100万)が入っている。 一度別の値にして再度セルフ変数0を選択すると 0xE0 C8 10 00 (110万、セルフ変数0を表す数値)になる。 |
|
4 byte(Int32) |
条件1右辺ウディタ上では100万以上の値を入れられない |
|
4 byte(Int32) |
条件2右辺ウディタ上では100万以上の値を入れられない |
|
4 byte(Int32) |
条件3右辺ウディタ上では100万以上の値を入れられない |
|
4 byte(Int32) |
条件4右辺ウディタ上では100万以上の値を入れられない |
|
可変 |
移動ルート |
|
4 byte |
イベント行数 最後の"■(空白)"の行も含んだ行数 "イベントコマンドの数"ではなく、"ウディタ上で見えている行数"? ■条件分岐(変数): 【1】 このEvのセルフ変数0 が 0 と同じ -◇分岐: 【1】 [ このEvのセルフ変数0 が 0 と同じ ]の場合↓ |■文章:うでぃた |■ ◇分岐終了◇ ■ これで6行となる。 |
|
可変 |
イベントコマンド |
|
4 byte |
03 00 00 00 イベントコマンド終端? |
|
1 byte |
影グラフィック番号 |
|
1 byte |
接触範囲拡張X |
|
1 byte |
接触範囲拡張Y |
|
0 or 1 byte(【Ver3.00以降】) 0 byte(【Ver3.00以前】) |
前Page方向引継 Ver3.00以降のみ存在する可能性があるデータ。 このイベントページを持つイベントのページ数が2以上の場合のみ存在する。 このイベントページを持つイベントのページ数が1の場合このデータは存在しない。 |
|
1 byte |
7A イベントページ末尾を示す |
ウディタ上でマップファイルを新規作成した直後は「3レイヤーとも完全に空白」な状態として扱われる。
この状態から1マスでもチップを配置すると、「3レイヤーとも完全に空白」な状態ではなくなる。このとき、配置したチップが透明チップであったとしても、「3レイヤーとも完全に空白」状態ではなくなる。
「3レイヤーとも完全に空白」ではない状態で保存すると、チップを編集しなかったマスには 0x00 01 86 A0 が敷き詰められる。一度「3レイヤーとも完全に空白」ではなくなった保存を再度「3レイヤーとも完全に空白」にして保存すると、初期と同じようにチップ情報の代わりに 0xFF FF FF FF が保存される。
ただし、一度「3レイヤーとも完全に空白」ではない状態になると、「3レイヤーとも完全に空白」の状態に戻すには特定の手順を踏まなければならなくなる。(=3レイヤーとも透明チップを敷き詰め直したとしても「3レイヤーとも完全に空白」な状態には戻らない)
「3レイヤーとも完全に空白」であるためには、すべてのレイヤーのすべてのマスのチップ情報の値が "100000" である必要がある。1マスでもこの値以外のマスがあると「3レイヤーとも完全に空白」とはみなされない。
この値は、「周囲4マスのいずれとも結合していない透明チップ」である。しかし、ウディタ上で範囲選択や塗りつぶしなどで透明チップを配置した場合、大抵はいずれかの周囲のマスと結合した状態の透明チップが配置される。 レイヤー全体を透明チップに置き換えた場合は大抵「周囲4マス全てと結合した透明チップ(チップ情報の値は "104444")」が配置されることになる。 その結果、単純にすべてのマスに透明チップを配置しただけでは「3レイヤーとも完全に空白」ではないと判定されてしまう。
「周囲4マスのいずれとも結合していない透明チップ」でレイヤーを敷き詰めるには、オートタイルの境界を自由に描きたい(WOLF RPGエディター パーフェクトガイド)(別タブで開きます)で紹介されている、「オートタイル機能解除状態」を使用する。
以下に手順を掲載する。なおここでは、何が起きているかわかりやすくするため、透明チップではなく「周囲4マスのいずれとも結合していないオートタイル1」で敷き詰めることとする。
まずは周囲4マスと結合していない透明チップをマップ上に用意する。
これを右クリックする。マップチップ一覧上でクリックした透明チップ(※ここではオートタイル1)が選択された状態になる。
ツールバーの「四角塗りつぶしツール」を選択。
マップ左上でShiftキーを押しながら右クリック、そのままマップ右下までドラッグして、右下で放す。
このとおり、周囲4マスのいずれとも結合していないチップが配置できる。
これを3レイヤーともに対して行うと、「3レイヤーとも完全に空白」な状態になる。