Level editing¶
Edit the .lvl files¶
Each level consists of a .lvl file (look at level1.lvl, level2.lvl... for examples).
The structure of .lvl files is :
a JSON header that contains some settings for the level :
origin: player starting pointnext_level: name of the level to load when this level is wonpointlights: list of coordinates for the lights
a line containing
-LEVEL-that begins the level “model”many “slices” of ASCII chars separated by lines containing
-Z-
The “slices” are ASCII representations of each Z level of the level world. For example, this is a floot with a hole in its center:
#####
#####
## ##
#####
#####
Here are the ASCII chars availables :
Normal cubes with different textures
D: a “orange” texture with black curves on it#: a stone texture=: a wood texture
Cubes that cannot receive portals
M: a metallic rusty texture
Deadly cubes
L: lava
Friendly cubes
X: exit
Use the ingame editor¶
If you don’t want to edit .lvl files by hand, I’m working on an inline editor. To launch it, just start the game with the -e flag before the name of the level:
ppython main.py -e mylevel
When in editor mode, here are the available keys (AZERTY keyboard by default, change this in Gate/constants.py if needed):
A: fly upW: fly downZ, Q, S, D: strafeR: reset positionP: print positionB: enter pdbL: add a light at the current positionU: undo last editF11: save the level
Here is what you can do in editor mode :
- Copy an existing cube : clic on a cube and a copy of it will appear on the face you were looking at
- Make multiple copies of a cube : look at a cube without clicking it and use the number keys from 1 to 9 to create (1 to 9) copies of the cube. It’s the same as clicking on a cube, then on its copy, then on the copy of its copy and so on
- Delete an existing cube : right-clic a cube
- Make a rectangle : look at a cube and use the
Xkey to create a rectangle from this cube to where you are (the camera) - Make a room : look at a cube and use the
Shift-Xkey to create a room (non-filled parallelepiped) from this cube to where you are (the camera)
Loading an existing level¶
You can edit an existing level by launching the editor on it:
ppython main.py -e level1
Notes¶
When saving the level, the camera position in the editor is saved as the origin position in the .lvl file so it will be the player’s original position.