Stage and Map unit: Difference between pages

From ZeldaMods (Breath of the Wild)
(Difference between pages)
Jump to navigation Jump to search
imported>Leoetlino
 
imported>Leoetlino
 
Line 1: Line 1:
{{Stub}}
{{Stub|what=Complete the contents section, the link system, mention static vs dynamic (and possibly other things)}}


== Types ==
== Contents ==
{| class="wikitable"
 
|+
=== <code>LocationPosX</code> ===
!Type
 
!Description
=== <code>LocationPosZ</code> ===
!Maps
 
=== <code>LocationSize</code> ===
 
=== <code>Objs</code> ===
Array of object structures. '''Must be sorted by HashId'''<ref>Technically, sorting is only required for Dynamic (non-group 0) map units. However, not sorting causes the game to fall back to a slower linear search.</ref> because the placement subsystem performs binary searches on the object array in various cases<ref>0x7101256E14</ref>.
 
=== <code>Rails</code> ===
Array of rail structures. Can only appear in group 0 maps (Static); this section is completely ignored for non-static map units.
 
== Link system ==
Map objects can be linked to other objects (up to 255 in a single generation group<ref>"一つの生成グループに 255 以上のアクタが指定されています。テストで無ければプログラマに相談"</ref>). These links allow implementing custom logic and callbacks (for example, DeadUp signals the destination object when the source object dies).
 
===Definitions===
{|class="wikitable sortable"
! ID !! Name !! Description !! Official description
|-
| 4 || -AxisX || - || マイナスX軸シグナル
|-
| 5 || -AxisY || - || マイナスY軸シグナル
|-
| 6 || -AxisZ || - || マイナスZ軸シグナル
|-
| 24 || AreaCol || - || エリア(センサ)指定
|-
| 1 || AxisX || - || X軸シグナル
|-
| 2 || AxisY || - || Y軸シグナル
|-
| 3 || AxisZ || - || Z軸シグナル
|-
| 37 || BAndSCs || - || ボール&ソケットCS
|-
| 38 || BAndSLimitAngYCs || - || Y角速度制限付ボール&ソケットCS
|-
| 0 || BasicSig || - || 基本シグナル
|-
| 9 || BasicSigOnOnly || - || オンのみ基本シグナル
|-
| 14 || ChangeAtnSig || - || アテンション変更時シグナル
|-
| 39 || CogWheelCs || - || 歯車CS
|-
| 21 || CopyWaitRevival || Use the destination object's revival flag || 配置自動セーブ継承
|-
| 15 || Create || - || 生成
|-
|-
|0
| 11 || DeadUp || - || 死んだらオン
|Invalid
| -
|-
|-
|1
| 16 || Delete || - || 削除
|Open world stage (except GameTestField)
|MainField, AocField
|-
|-
|2
| 29 || DemoMember || - || デモ参加
|Indoor stage
|CDungeon, MainFieldSpot, GameTestDungeon
|-
|-
|3
| 32 || FixedCs || - || 固定CS
|Open world stage (GameTestField)
|GameTestField
|-
|-
|4
| 26 || ForSale || - || 売り物
|MainFieldDungeon
|-
|MainFieldDungeon
| 19 || ForbidAttention || - || アテンションタイプ変更
|-
| 18 || Freeze || - || 凍結
|-
| 7 || GimmickSuccess || - || ネタ成功シグナル
|-
| 33 || HingeCs || - || ヒンジCS
|-
| 12 || LifeZero || - || ライフ0
|-
| 34 || LimitHingeCs || - || 制限付ヒンジCS
|-
| 27 || ModelBind || - || モデルバインド
|-
| 17 || MtxCopyCreate || - || 位置継承生成
|-
| 22 || OffWaitRevival || - || 配置自動セーブオフ
|-
| 30 || PhysSystemGroup || - || 物理システムグループ
|-
| 28 || PlacementLOD || - || 配置LOD
|-
| 36 || PulleyCs || - || 滑車CS
|-
| 40 || RackAndPinionCs || - || ラック&ピニオンCS
|-
| 23 || Recreate || - || 再生成
|-
| 41 || Reference || - || 参照
|-
| 10 || Remains || - || 遺物シグナル
|-
| 25 || SensorBind || - || センサバインド
|-
| 35 || SliderCs || - || スライダーCS
|-
| 13 || Stable || - || 安定
|-
| 31 || StackLink || - || スタック
|-
| 20 || SyncLink || - || 生成グループ
|-
| 8 || VelocityControl || - || 速度制御シグナル
|-
|-
|5
|Indoor stage or viewer stage
|?
|}
|}
Maps that have the same stage type typically use the same subsystems and share most characteristics. For example, all open world stages use the [[Tera]] height map terrain system and load [[Map unit|map units]] in the same way.
 
== File formats ==
 
=== Map unit binary ===
In ''Breath of the Wild'', map units are stored in a binary format and given the ''mubin'' (Map Unit Binary) file extension. All map object IDs are replaced with CRC32 hashes as a space optimisation. [[BYML]] is used as the serialisation format.
 
=== Source map unit ===
Source map units have muunt<ref>The executable has remnants of functions that can load map units with the following path: <code>Map/Project/%s/Data/%s/%s.muunt</code> (in what appears to be development code)</ref> as their file extension and use strings for map object IDs such as <code>F-5_challenge.muunt/obj760</code> instead of CRC32 hashes of the IDs in map unit binaries.
[[Category:Internals]]
[[Category:Internals]]
<references />
[[Category:File formats]]

Revision as of 19:56, 2 December 2018


Contents

LocationPosX

LocationPosZ

LocationSize

Objs

Array of object structures. Must be sorted by HashId[1] because the placement subsystem performs binary searches on the object array in various cases[2].

Rails

Array of rail structures. Can only appear in group 0 maps (Static); this section is completely ignored for non-static map units.

Link system

Map objects can be linked to other objects (up to 255 in a single generation group[3]). These links allow implementing custom logic and callbacks (for example, DeadUp signals the destination object when the source object dies).

Definitions

ID Name Description Official description
4 -AxisX - マイナスX軸シグナル
5 -AxisY - マイナスY軸シグナル
6 -AxisZ - マイナスZ軸シグナル
24 AreaCol - エリア(センサ)指定
1 AxisX - X軸シグナル
2 AxisY - Y軸シグナル
3 AxisZ - Z軸シグナル
37 BAndSCs - ボール&ソケットCS
38 BAndSLimitAngYCs - Y角速度制限付ボール&ソケットCS
0 BasicSig - 基本シグナル
9 BasicSigOnOnly - オンのみ基本シグナル
14 ChangeAtnSig - アテンション変更時シグナル
39 CogWheelCs - 歯車CS
21 CopyWaitRevival Use the destination object's revival flag 配置自動セーブ継承
15 Create - 生成
11 DeadUp - 死んだらオン
16 Delete - 削除
29 DemoMember - デモ参加
32 FixedCs - 固定CS
26 ForSale - 売り物
19 ForbidAttention - アテンションタイプ変更
18 Freeze - 凍結
7 GimmickSuccess - ネタ成功シグナル
33 HingeCs - ヒンジCS
12 LifeZero - ライフ0
34 LimitHingeCs - 制限付ヒンジCS
27 ModelBind - モデルバインド
17 MtxCopyCreate - 位置継承生成
22 OffWaitRevival - 配置自動セーブオフ
30 PhysSystemGroup - 物理システムグループ
28 PlacementLOD - 配置LOD
36 PulleyCs - 滑車CS
40 RackAndPinionCs - ラック&ピニオンCS
23 Recreate - 再生成
41 Reference - 参照
10 Remains - 遺物シグナル
25 SensorBind - センサバインド
35 SliderCs - スライダーCS
13 Stable - 安定
31 StackLink - スタック
20 SyncLink - 生成グループ
8 VelocityControl - 速度制御シグナル

File formats

Map unit binary

In Breath of the Wild, map units are stored in a binary format and given the mubin (Map Unit Binary) file extension. All map object IDs are replaced with CRC32 hashes as a space optimisation. BYML is used as the serialisation format.

Source map unit

Source map units have muunt[4] as their file extension and use strings for map object IDs such as F-5_challenge.muunt/obj760 instead of CRC32 hashes of the IDs in map unit binaries.

  1. Technically, sorting is only required for Dynamic (non-group 0) map units. However, not sorting causes the game to fall back to a slower linear search.
  2. 0x7101256E14
  3. "一つの生成グループに 255 以上のアクタが指定されています。テストで無ければプログラマに相談"
  4. The executable has remnants of functions that can load map units with the following path: Map/Project/%s/Data/%s/%s.muunt (in what appears to be development code)