Level Format Levels are made of objects. Object data is stored under , as an array of arrays. The top-level delimiter (between object arrays) is "|" (pipe symbol); within object arrays, the delimiter is "," (comma). As an example: 3,150,30|1,0,0 ..is equivalent to this array: [[3, 150, 30], [1, 0, 0]] The project XML document format is defined in CreatorProject.buildDocument alongside the converse buildProject decode function. The contents format is defined in Creator.levels.exportEnvironmentData. The term "environment" refers to the objects stored in a level. Each environment object follows this format: ID, XPOS, -YPOS[, ROTATION[, TILEID[, graphics stuff ] ] ] Coordinate Grid The object grid is more or less a cartesian coordinate system. Each object has an X and Y position (its "coordinate"), which represents where it is placed in the scene. The X value determines its position on the X axis, which runs from left to right. The X value of 30 denotes 30 units right from the center. The Y value determines its position on the Y axis, which runs from top to bottom. Note, however, that in the save format, an object's Y position is the opposite of its actual game value. If an object's saved Y value is 30, it is really positioned at -30 on the Y axis, which is 30 units above the center. The positioning of tile-like objects along the "snap" grid may best be described with a diagram of a number line: -180 -120 -60 0 +60 +90 +180 |---*---|---*---|---*---|---*---|---*---|---*---| -150 -90 -30 +30 +90 +150 Each tick line in the diagram (pipe symbols: "|") mark the visible edge of two tiles. Stars ("*") mark the actual coordinate of tiles. In simpler terms, a tile's coordinate values are physically placed in the center of the displayed shape (not on a corner). Most tiles have a physical size of 60x60 units. Large Tiles also have coordinates that represent their centers; since they are twice the size of normal tiles, their center is offset respectively. Where a normal tile may be positioned at (30, 90, 150) a Large Tile may be positioned at (60, 180, 300). Level Verification When a level is loaded and there is no player object, a new player object will be placed at the coordiantes (0, 0). List of Objects Following this paragraph is a list of objects and their format, sorted by object ID. It only contains objects from the categories "Blocks & Tiles", "Walls & Decoration", and "Switches & Doors" currently; and is only guaranteed to be up to dat through to the date of April 18, 2017. - [1, XPOS, YPOS] Player - [3, XPOS, YPOS] Floor - [4, XPOS, YPOS] Pipe - [5, XPOS, YPOS, 0, TILEID] Tile - [6, XPOS, YPOS, 0, TILEID] RampTile (slope top -> right) - [7, XPOS, YPOS, 0, TILEID] RampTile (slope top -> left) - [8, XPOS, YPOS, 0, TILEID] StairTile (slope top -> right) - [9, XPOS, YPOS, 0, TILEID] StairTile (slope top -> left) - [10, XPOS, YPOS, 0, TILEID] BackWall - [11, XPOS, YPOS, 0, TILEID] BackWindow (triangle) - [12, XPOS, YPOS, 0, TILEID] BackWindow (circle) - [13, XPOS, YPOS, 0, TILEID] BackWall (alternate style) - [14, XPOS, YPOS] BackLight - [15, XPOS, YPOS] Water - [16, XPOS, YPOS] WaterTop - [17, XPOS, YPOS] Log - [18, XPOS, YPOS] Bouncer - [19, XPOS, YPOS] IceBlock - [20, XPOS, YPOS] WeakFloor - [21, XPOS, YPOS] Sandblock - [22, XPOS, YPOS] LamWall (black style 1) - [23, XPOS, YPOS] LamWall (black style 2) - [24, XPOS, YPOS] LamWall (black style 3) - [25, XPOS, YPOS] LamWall (black style 4) - [26, XPOS, YPOS] LamWall (brown style 1) - [27, XPOS, YPOS] LamWall (brown style 2) - [28, XPOS, YPOS] LamWall (brown style 3) - [29, XPOS, YPOS] LamWall (brown style 4) - [30, XPOS, YPOS] LamWall (red style 1) - [31, XPOS, YPOS] LamWall (red style 2) - [32, XPOS, YPOS] LamWall (red style 3) - [33, XPOS, YPOS] LamWall (red style 4) - [34, XPOS, YPOS] TechWall (style 1) - [35, XPOS, YPOS] TechWall (style 2) - [36, XPOS, YPOS] LEDWall (style 1) - [37, XPOS, YPOS] LEDWall (style 2) - [38, XPOS, YPOS] LEDWall (style 3) - [39, XPOS, YPOS] LEDWall (style 4) - [40, XPOS, YPOS] Statue (1x3, "metal"-style) - [41, XPOS, YPOS] Statue (2x2, "stone"-style) - [42, XPOS, YPOS] Statue (1x3, "stone"-style) - [43, XPOS, YPOS] Sign ("DANGER - CRITICAL - RAD LEVEL OVER LIMIT") - [44, XPOS, YPOS] Sign ("DRINK - ZANPO") - [45, XPOS, YPOS] Sign ("right arrows"-style) - [46, XPOS, YPOS] Sign ("left arrows"-style) - [47, XPOS, YPOS] Meltblock - [48, XPOS, YPOS] NearLight - [49, XPOS, YPOS] Ladder - [50, XPOS, YPOS] Slider - [51, XPOS, YPOS] Elevator - [52, XPOS, YPOS] Dynamo - [53, XPOS, YPOS] Windmill (clockwise) - [54, XPOS, YPOS] Windmill (counter-clockwise) - [55, XPOS, YPOS] Gear (clockwise) - [56, XPOS, YPOS] Gear (counter-clockwise) - [57, XPOS, YPOS] BigGear (clockwise) - [58, XPOS, YPOS] BigGear (counter-clockwise) - [59, XPOS, YPOS] Rod - [60, XPOS, YPOS] TriGear - [61, XPOS, YPOS] Teleporter (green) - [62, XPOS, YPOS] Teleporter (orange) - [63, XPOS, YPOS] Teleporter (purple) - [64, XPOS, YPOS] Crate - [68, XPOS, YPOS] Large Water - [69, XPOS, YPOS] GoldPanel (style 1) - [70, XPOS, YPOS] GoldPanel (style 2) - [71, XPOS, YPOS] CyberPanel (style 1) - [72, XPOS, YPOS] CyberPanel (style 2) - [73, XPOS, YPOS] Wire Wall - [74, XPOS, YPOS] HotWire Wall - [75, XPOS, YPOS] Angular Wall - [76, XPOS, YPOS] Rainbow Wall - [77, XPOS, YPOS] Aqua Wall - [78, XPOS, YPOS] Rock Pile (slope top -> left) - [79, XPOS, YPOS] Rock Pile (slope top -> right) - [80, XPOS, YPOS[, ROTATION]] Tunnel ("dirt"-style) - [81, XPOS, YPOS[, ROTATION]] Tunnel Corner ("dirt"-style) - [82, XPOS, YPOS[, ROTATION]] Tunnel Junction (3-way) ("dirt"-style) - [83, XPOS, YPOS[, ROTATION]] Tunnel Junction (4-way) ("dirt"-style) - [84, XPOS, YPOS[, ROTATION]] Tunnel End ("dirt"-style) - [85, XPOS, YPOS[, ROTATION]] Tunnel ("blue"-style) - [86, XPOS, YPOS[, ROTATION]] Tunnel Corner ("blue"-style) - [87, XPOS, YPOS[, ROTATION]] Tunnel Junction (3-way) ("blue"-style) - [88, XPOS, YPOS[, ROTATION]] Tunnel Junction (4-way) ("blue"-style) - [89, XPOS, YPOS[, ROTATION]] Tunnel End ("blue"-style) - [90, XPOS, YPOS, 0, TILEID] Large Tile - [91, XPOS, YPOS, 0, TILEID] LargeBack - [92, XPOS, YPOS, 0, TILEID] LargeWindow - [115, XPOS, YPOS] TorchLight - [116, XPOS, YPOS] TikiTorch - [117, XPOS, YPOS] BackWall (3x2) - [218, XPOS, YPOS] Big Elevator - [219, XPOS, YPOS] 2way Platform - [250, XPOS, YPOS] AutoDoor - [251, XPOS, YPOS] TouchDoor - [252, XPOS, YPOS] TouchFloor - [253, XPOS, YPOS] BlueKey - [254, XPOS, YPOS] GreenKey - [255, XPOS, YPOS] YellowKey - [256, XPOS, YPOS[, ROTATION]] BlueDoor - [257, XPOS, YPOS[, ROTATION]] GreenDoor - [258, XPOS, YPOS[, ROTATION]] YellowDoor - [259, XPOS, YPOS] BlueSwitch - [260, XPOS, YPOS] BlueRing - [261, XPOS, YPOS] GreenSwitch - [262, XPOS, YPOS] GreenRing - [263, XPOS, YPOS] YellowSwitch - [264, XPOS, YPOS] YellowRing - [265, XPOS, YPOS] PermSwitch (green) - [266, XPOS, YPOS] PermBlock (green) - [267, XPOS, YPOS] PermSwitch (orange) - [268, XPOS, YPOS] PermBlock (orange) - [269, XPOS, YPOS] Level Door (style 1) - [270, XPOS, YPOS] Level Door (style 2) - [271, XPOS, YPOS] Level Door (style 3) - [272, XPOS, YPOS] Level Door (style 4) - [273, XPOS, YPOS] Level Door (style 5) - [274, XPOS, YPOS] Level Door (style 6) - [275, XPOS, YPOS] RemoteSwitch - [276, XPOS, YPOS] MagicSwitch - [277, XPOS, YPOS] OneWayDoor - [278, XPOS, YPOS, ROTATION, 0, 0, 0, 0, , TARGET_X_OFF, TARGET_Y_OFF] Closer - [279, XPOS, YPOS] PurpleDoor - [280, XPOS, YPOS] TrapDoor (fall-only) - [281, XPOS, YPOS] TrapDoor (jump-only) - [282, XPOS, YPOS] FakeDoor - [283, XPOS, YPOS] PurpleKey - [284, XPOS, YPOS] InvisibleSwitch - [285, XPOS, YPOS, 0, TILEID, 0, 0, 0, , TARGET_X_OFF, TARGET_Y_OFF] BurstTile - [286, XPOS, YPOS] CaveIn - [287, XPOS, YPOS] Cinderblock - [288, XPOS, YPOS[, 0, 0, 0, 0, 0, TEXT]] Inscription - [289, XPOS, YPOS] WoodPost - [351, XPOS, YPOS[, 0, 0, 0, 0, 0, TEXT]] Wizard - [352, XPOS, YPOS[, 0, 0, 0, 0, 0, TEXT]] General - [353, XPOS, YPOS[, 0, 0, 0, 0, 0, TEXT]] Owl - [401, XPOS, YPOS] Brick (2x1 "blue"-themed) - [402, XPOS, YPOS] Brick (2x2 "blue"-themed) - [403, XPOS, YPOS] Brick (3x1 "blue"-themed) - [404, XPOS, YPOS] Brick (2x2 "grey"-themed) - [405, XPOS, YPOS] Brick (2x2 "dark grey"-themed) - [406, XPOS, YPOS] Brick (2x2 "grey red"-themed) - [407, XPOS, YPOS] Brick (2x1 "grass"-themed) - [408, XPOS, YPOS] Brick (2x2 "dirt panel"-themed) - [409, XPOS, YPOS] Brick (2x2 "dirt"-themed) - [410, XPOS, YPOS] Brick (3x1 "grass"-themed) - [411, XPOS, YPOS] Brick (2x1 "neon"-themed) - [412, XPOS, YPOS] Brick (2x2 "neon"-themed) - [413, XPOS, YPOS] Brick (3x1 "neon"-themed) - [451, XPOS, YPOS] Lava - [452, XPOS, YPOS] LavaTop - [456, XPOS, YPOS, 0, TILEID] RampTile (slope bottom -> right) - [457, XPOS, YPOS, 0, TILEID] RampTile (slope bottom -> left) - [501, XPOS, YPOS] BackBrick ("blue"-themed) - [502, XPOS, YPOS] BackBrick ("grey"-themed) - [503, XPOS, YPOS] BackBrick ("dirt"-themed) - [504, XPOS, YPOS] BackBrick ("neon"-themed) - [601, XPOS, YPOS] FrontPlant (2x2) - [602, XPOS, YPOS] Plant - [603, XPOS, YPOS] FrontPlant (1x2) - [604, XPOS, YPOS] FrontGrass - [605, XPOS, YPOS] Grass - [606, XPOS, YPOS] Etching (style 1) - [607, XPOS, YPOS] Etching (style 2) - [608, XPOS, YPOS] FrontStatue - [609, XPOS, YPOS] FrontScreen - [610, XPOS, YPOS] Skulls - [611, XPOS, YPOS] SpiderWeb (style 1) - [612, XPOS, YPOS] Window - [613, XPOS, YPOS[, ROTATION]] Truss - [614, XPOS, YPOS] Waterspout (style 1) - [615, XPOS, YPOS] Waterspout (style 2) - [616, XPOS, YPOS] Waterspout (style 3) - [617, XPOS, YPOS] SpiderWeb (style 2) - [618, XPOS, YPOS] WoodPostBehind - [800, XPOS, YPOS, 0, 0, GRAPHICS..] TextureBlock - [801, XPOS, YPOS, 0, 0, GRAPHICS..] TextureWall Ideas Perhaps a rotated Elevator? A rotated TikiTorch? Can other things (not Wizards, Owls, etc) talk? Multiple player objects? Rotated MagicSwitch?