I have walked through the level files and experimented a lot, and I think I now have a more or less complete list of the room file and tiles structure. They might be of some use for anyone wanting to create their own level:
The only thing I haven't been able to figure out yet is the way the color values work. I expected they would be RRRGGGBBB values between 0 and 255 each, but it turns out that the number of digits in the color values can change.
Nifflas, maybe you can give us a hint?
Level Data:
[X,Y]
;This is a number that tells the current rooms X and Y location in relation with [0,0], the center of the world. Rooms up from the center will have a negative Y value, rooms left from the center a negative X value.
Gradient Top=10475893
Gradient Bottom=4788256
;Basic Background colours. How are they encoded?
Channel N=Filename
;N = 1 - 3. These are the channels you want to play the background sound on.
;Filename = Name of the ambient effect in the 'Ambiance' folder, without the .ogg part.
Playlist = Music File Name
;Background music to play in the background.
;Filename = Name of the ambient effect in the 'Ambiance' folder, without the .ogg part.
FX num = Layer,Size,Color,Translucency, Blending type, 0 | Max Translucency,Blinking Speed,Next Offset
FX particle = Layer,?,Color,Translucency, Blending Type?, PicNum| Rotation Speed
;num: A number from 1 to 9. These are the ID's you can use in the level itself to refer to this FX
;Layer: Number from 1 to 9. Higher means more on top. Level is between 5 and 6 (i.e. 5 renders behind the level, 6 in front of the level)
;Size: Amount that the image should be blown up. Higher means bigger.
;Color: RGB of image. How exactly are these determined?
;Translucency: Higher means more transparent. Value between 0(opaque) and 255(invisble)?
;Blending mode. X = default. + = additive(only the bright parts of the image are visible)
;PicNum. Only important for FX 5-9. Changes picture shown. 0 = smoke. 1 = particles. For 1-4, always a spherical light is used.
;FX 1-4 are spherical lights that blink.
;FX 5-9 are smoke or particles that rotate.
;FX 1-4 use three arguments behind the |
;Max translucency. The object will blink between the normal Translucency and this value. 255 = invisible. 0 = opague.
;Blinking Speed. determines speed to blink in milisec.
;Next Offset: Determines a value to randomize the blinking speed with. Enables to use the same FX multple times without having them blinking at the same time.
;FX 5-9 use only one argument behind the |
;Rotation Speed. determines speed that this picture should rotate.
Water Type=N
;What different types are there?
;N determines how the water should looke: 1 = Blue surface, 2 = Crystal clear water.
; When no water type specified, water will not work, even when the ~ tile is added to the level.
Teleport X Map=-6
Teleport Y Map=1
Teleport X Position=15
Teleport Y Position=9
;Only used when using the 't' tile in this room.
; X Map and Y Map point to the [X,Y] above the destination room.
; X Position and Y Position point respectively to the row and column to teleport to.
Tiles:
Basic:
= empty space
# = solid
% = solid with short grass on the top and bottom.
B = solid. Also spawns blue-ish rock in the background
b = solid. Also spawns blue-ish rock in the background
M = solid. Also spawns a rock formation in the background.
m = solid. Also spawns a rock formation in the background.
/ = slope (orientation depending on surroundings)
\ = slope (orientation depending on surroundings)
r = solid tile that also spawns a red rock formation in the background.
v = spikes pointing downward.
^ = spikes pointing upward.
¤ = solid-looking tile (tunnel)
© = tunnel with small cracks.
_ = hidden save point. When dying in a room, will reset to this position if it has been passed over earlier.
t = teleportating tile. TODO: how it knows where to teleport to.
~ = Water surface. Will repeat over the complete horizontal row it is placed on. Only works as water when Water Type is set. Having more than one layer of water in the same room will break swimming. When you want to fill the whole room with water, add it somewhere on the top row. It now won't display a surface. If the room above is not filled with water however, will display the 'splash'
< = Will display left-flowing bubbles. When placed underwater, will also affect the player movement, pushing the player to the left without flippers+booster.
> = Will display right-flowing bubbles. When placed underwater, will also affect the player movement, pushing the player to the right without flippers+booster.
H = Solid tile. rooftop of houses.
h = Rooftop tile. Chimney. Exact look changes depending on location.
. = Slanted rooftop tile.
ø = Window of house. If round or not depends on surroundings(?)
[ = Door on the right of house.
] = Door on the left side of house.
$ = Check Win Condition.
Interaction:
! = Hedgehog. Races horizontally towards the player when Attract Hedgehog = 1.
x = Spiker that comes out when Attract Spiker = 1.
X = Exploder that comes out when Attract Exploder = 1.
Containers:
A = House ('Home')
a = August Strindberg.
C = Moon Altar
c = Chest.
D = dog (Eddie).
E = Egidio
F = Coffin
f = Fish
J = Julien Champagne
k = Kybele Freiherre
L = Mary
l = Gallasteros
N = Newton
n = Sphinteros
O = Furnace
o = Metal Box
Ö = Basilius Valentine
T = Teleportation Box
U = Fulcanelli
Z = Zlatica
Ú = Úna
: = Dew Altar
+ = Sun Altar
( = Hidden Container
Background:
j = Red Flower
s = small water dripping effect. Continues on for two tiles below the tile it is placed.
S = big water dripping effect. Continues on for two tiles below the tile it is placed.
* = firebug effect. (small shimmering light dots that move around).
W = Fat Plant.
I = hyacint.
i = small hyacint.
Ï = Different hyacint.
P = Wheat in the background.
Y = Prickly Plants.
Numbers (1-9) = refer back to the FX declared above the tiles. You can re-use an effect multiple times in the same level. When given a layer argument of 5 or below, will appear behind the level.
Foreground:
V = Pillar-like aestic object? (Object changes depending on surroundings?)
g = wobbling silhouette of shrub.
G = wobbling silhouette of shrub. (different)
§ = silhouette tree.
ï = silhouette hyacint.
w = Fat Plant silhouette.
p = silhouette of wheat
z = silhouette of prickly plants.
, = Black Blowing Sand effect.
ö = Bug that hops up when walking by
Numbers (1-9) = refer back to the FX declared above the tiles. You can re-use an effect multiple times in the same level. When given a layer argument of 6 or up, will appear above level.
Unused Letters(as far as I could tell):
K
Q
q
u
y
This brings me to an important observation: The graphics that belong to the different containers seem to be hard-coded. I am not entirely sure, but the same seems also to be true for the names of the different containers. This might be an obstacle for quite a few people that want to create their own level, because I think that part of the originality comes from the people you can interact with.