Skip to content

Instantly share code, notes, and snippets.

@towerofnix
Created April 19, 2017 02:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save towerofnix/fa0fe5e6974ce099eb2e197afb0aeb07 to your computer and use it in GitHub Desktop.
Save towerofnix/fa0fe5e6974ce099eb2e197afb0aeb07 to your computer and use it in GitHub Desktop.
just making this file public so the work isn't necessarily lost to the void of an individual person's forgetfulness.
Level Format
Levels are made of objects. Object data is stored under <level>, 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 <level> 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).
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
- [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?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment