Mapファイル

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 ")

改竄検知?

この値が不正な場合、ウディタで読み込もうとすると下図のような改竄検知ダイアログが表示され、強制終了してしまう。

改竄検知ダイアログ

ただし、必ず上記の値でなければならないということはない。

以下の条件だとダイアログが表示されることを確認。

  • オフセット 00 ~03 が 0x00 00 00 00 以外
  • オフセット 09 が 0x00 以外

オフセット 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以降のデータ形式は Ver3.330 以降とそれ以前で異なるため、表を分けて記載する。
オフセット サイズ 内容
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レイヤーとも完全に空白」な状態になる。