FEZMAP format

Overview

.fezmap file contain map tree structure stored in JSON format. It's mostly similar to in-game's MapTree structure; however, in order to improve data readability, it was slightly changed: instead of directly storing children nodes in node connections, they're stored in parallel as a directory, with unique integer as an identifier for each node.

Property definitions

Root object

The root object of .fezmap JSON file is a Directory<int, MapNode>. MapNode with index 0 is expected to be a root node in the map tree. Map tree cannot create a loop and some connection may be ignored if that happens.

MapNode

Property name Type Description
LevelName String Name of a level this node represents. Used to determine a thumbnail.
NodeType LevelNodeType Type of the node.
Conditions WinConditions List of values determining what is required to turn this node as completed.
HasLesserGate Boolean If true, displays lesser gate icon next to this node.
HasWarpGate Boolean If true, displays warp gate icon next to this node.
Connections MapNodeConnection[] List of connections this node branch to.

WinConditions

Property name Type Description
ChestCount Integer Number of chests required to be opened in this level.
LockedDoorCount Integer Number of key doors required to be opened in this level.
UnlockedDoorCount Integer Number of normal doors required to be opened in this level.
ScriptIds Integer[] List of integers representing IDs of level's scripts required to be marked as completed.
CubeShardCount Integer The number of golden cubes required to be collected.
OtherCollectibleCount Integer The number of collectibles that are not in chests, not golden cubes, and not cube shards, and are already floating in the level (i.e., floating maps, floating anti cubes, keys not in chests, etc).
SplitUpCount Integer The number of cube bits required to be collected.
SecretCount Integer The total number of tuning forks, QR codes, volumes with code patters, bit doors, scripts with the action Level.ResolvePuzzle, and hardcoded puzzles.

MapNodeConnection

Property name Type Description
Face FaceOrientation The direction which given connection is branching towards.
Node Integer ID of a node this connection links to.
BranchOversize Float Adjusts the length of the line connecting the level.

Enum

All enums are stored as PascalCamelCase string parameters.

LevelNodeType

Enum specifying how level should appear in the map. It can take one of three values:

  • Node
  • Hub
  • Lesser

FaceOrientation

Enum specifying one of six possible trile face orientations - Left, Down, Back, Right, Top or Front.