Celaria uses two binary map formats:Documentation Index
Fetch the complete documentation index at: https://mintlify.com/BunnyNabbit/celaria-formats/llms.txt
Use this file to discover all available pages before exploring further.
.cmap files are finalized maps used by the game server and contain medal times for timed runs, while .ecmap files are editor maps opened in Celaria’s built-in map editor and do not require medal times. Both formats are parsed with a static parse(buffer) method that returns a fully populated map instance.
Reading .cmap files
Use CelariaMap.parse(buffer) to load a finalized map. Pass a Node.js Buffer — typically read from disk with fs.readFileSync.
mode property reflects the game mode: CelariaMap.gameModes.freeRoam (0) or CelariaMap.gameModes.timeTrial (1). The default is timeTrial.
After parsing, every checkpoint and goal Block in the map has its medalTimes property populated with { platinum, gold, silver, bronze } values (in ticks).
Version differences are handled automatically by
parse. In versions 0 and 1, positions and scales are stored as scaled integers; in version 2 they use 64-bit doubles. You always get consistent floating-point values regardless of the source version.Reading .ecmap files
Use EditableCelariaMap.parse(buffer) to load an editor map. The API is identical to CelariaMap.parse.
CelariaMap, an EditableCelariaMap does not store or require medal times — checkpoint and goal blocks will have medalTimes as undefined after parsing. Checkpoints are still ordered via checkpointOrder.
- CelariaMap (.cmap)
- EditableCelariaMap (.ecmap)
Filtering instances by type
map.instances is a flat array containing every object in the map. You can filter it by instanceId to work with a specific type:
instanceId | Class | Description |
|---|---|---|
0 | Block | Solid rectangular prism geometry |
1 | Sphere | Collectible gem |
2 | PlayerSpawnPoint | Player start position |
3 | Barrier (wall) | Invisible wall barrier |
4 | Barrier (floor) | Invisible floor barrier |
128 | TutorialHologram | Tutorial hologram object |
instanceof is more readable when you have the class imported; filtering by instanceId avoids the import when you only need the number.