= LEVEL FORMAT =
-The level format used to be pretty easy to understand, but it
-is now more complex. Anyway, should be pretty useful to know
-a bit of it, when you want to do stuff just as to just change
-the author's name or something small.
+Since the level editor does not support anything, you might have
+to edit a couple of things directly from the level file, so it
+might be a better idea to read this.
-It uses the Lisp syntax and is pretty intuitive. Here have a
-look at a quotation:
-(Comments can be made using ';')
+Level format should be pretty straight forward. The syntax is the
+Scheme one. But even if you have no idea about it, no worry,
+it is pretty intuitive.
+
+Attention: this describes the new level format. But current levels
+still use the old one, since the engine still supports it and also
+level editors still use it.
+
+To explain a bit of the level format, there is nothing better than
+really looking at it. So here goes a quote of it. The comments
+prefix-ed by a ';', describe what everything is about.
; This is a comment!
+; Level made using SuperTux's built-in Level Editor
(supertux-level
-; some level info: version, author and the level's name
- (version 1)
+; version higher than 1 means that it follows the new level format (CVS)
+ (version 2)
+; Level's title and author name
+ (name "The Castle of Nolok")
(author "Ingo Ruhnke")
- (name "Night Chill")
-; number of tiles used (currently the height has to be 15)
- (width 515)
- (height 15)
-; Tux's start position
- (start_pos_x 100)
- (start_pos_y 170)
-; Background image; if none is specified, the color below will be used
- (background "")
-; Music file
- (music "Mortimers_chipdisko.mod")
-; Colors, as you can see you can have different colors in the top
-; and in the bottom, thus creating a gradient
- (bkgd_red_top 0)
- (bkgd_green_top 0)
- (bkgd_blue_top 0)
- (bkgd_red_bottom 120)
- (bkgd_green_bottom 120)
- (bkgd_blue_bottom 0)
-; Time (it is not in seconds!)
- (time 300)
-; Gravity to be used (you should let it stay in 10 for ordinary levels)
- (gravity 10)
-; The particle system draws images that simulate weather effects
-; As of the writing of this text, both "snow" and "clouds" are supported
- (particle_system "snow")
-; Theme is the tileset that is used
- (theme "antarctica")
- (interactive-tm
- ; here goes a lot of numbers that are the tiles places
+; Time the player has to finish the level (it is not in seconds!)
+ (time 300)
+; Each level has one or more sectors. Sectors can be seen as levels inside this
+; level. Their use is for swapping.
+ (sector
+; Naming sectors is usefull to for swapping
+; "main" sectors are the ones that the player will start in
+ (name "main")
+; Level's gravity (better let it 10)
+ (gravity 10)
+; We can have one or more playerspawn that can be used by doors.
+; "main" is the default one for this sector.
+ (playerspawn
+ (name "main")
+ (x 100)
+ (y 170)
)
-; Reset points; there can be more than one
-; Reset points are positions where the player passes through and
-; if he dies, he will be back to there. They are invisible
- (reset-points
- (point (x 6988) (y 222))
- )
-; Objects include enemies, may include more stuff in the future
-; just as moving plataforms...
- (objects
- (mriceblock (x 13919) (y 384))
- (mriceblock (x 14258) (y 366))
- (mriceblock (x 12996) (y 248))
- (mriceblock (x 13058) (y 250))
- (mriceblock (x 12933) (y 245))
+; Level's music file from data/music
+ (music "fortress.mod")
+; This level will use a vertical background
+; You can also set a background image by using:
+; (background "arctis.jpg")
+ (background
+ (top_red 0)
+ (top_green 0)
+ (top_blue 0)
+ (bottom_red 150)
+ (bottom_green 0)
+ (bottom_blue 0)
+ )
+; Now let's go for tilemaps. Tilemaps are the tiles field. We can have more
+; than one. Each one has the following properites:
+; layer - can be foreground (drawn above player), interactive (interacts with player,
+; (solid #t) has to be set, as well), background (drawn below the player).
+; speed - this can be used for parallax effects. Better use a level editor (though
+; there is not yet one that supports it) to edit this.
+ (tilemap
+ (layer "interactive")
+ (solid #t)
+ (speed 1)
+; width and height of the tilemap. Has to be specified.
+ (width 525)
+ (height 15)
+; Here goes the tilemap :
+ (tiles 64 64 69 68 68 ...
+ ....
+ ....)
+ )
+; Another tilemap, this is the background one
+ (tilemap
+ (layer "background")
+ (solid #f)
+ (speed 1)
+ (width 525)
+ (height 15)
+ (tiles 0 0 ...
+ ... )
+ )
+; Yet another one. Normally there are only three.
+ (tilemap
+ (layer "foreground")
+ (solid #f)
+ (speed 1)
+ (width 525)
+ (height 15)
+ (tiles 0 0 0 0 ...
+ ...)
+ )
+; Let's setup a few bad guys.
+ (jumpy
+ (x 1277)
+ (y 388)
+; stay-on-platform is a flag to tell them not to fall from
+; their platforms.
+ (stay-on-platform #f)
+ )
+ (mriceblock
+ (x 4345)
+ (y 380)
+ (stay-on-platform #f)
+ )
+ (stalactite
+ (x 790)
+ (y 96)
+ (stay-on-platform #f)
+ )
+; At last, but not least, the camera:
+; (Order doesn't matter for Lisp, so camera could be on top or the middle)
+ (camera
+; This is the ordinary mode, but we can also have an auto one.
+; "auto" can be used to create a path to the camera.
+; Here is an example of an auto camera:
+; (camera
+; (mode "autoscroll")
+; (path
+; (point (x 0) (y 0) (speed 0.5))
+; (point (x 500) (y 0) (speed 2))
+; (point (x 1200) (y 0) (speed 1))
+; (point (x 3000) (y 0) (speed 1))
+; (point (x 1500) (y 0) (speed 1.4))
+; (point (x 99999) (y 0))
+; )
+; )
+ (mode "normal")
+; backscrolling is only set for normal. It says if player can back
+; scroll or not (just go to the front).
+ (backscrolling #t)
+ )
+; We could also setup other objects, like trampolins, doors (to swap),
+; and moving platform. Please check another level (ie. in test/) that
+; uses them to learn more about them.
)
- )
-
+)
= LEVEL EDITORS =