SuperTux Milestone 2

Spoiler Warning:
This document contains a very detailed description about SuperTux milestone 2, including every new feature, as well as the full story. If you only want to play SuperTux and you are not interested in the development process, you should not read any further, as it will give away a lot of surprises; however, if you are involved in developing the game, reading this is a requirement.


Worldmap:
After finishing Antarctica by beating the worlds boss, a cutscene, replacing the currently displayed text, will be shown. (For a detailed description of cutscenes, see section "Story".) Tux will then advance to world 2, the forest island. Its worldmap will be built using the same, possibly enhanced, format that Antarctica uses. The worldmap will be designed as follows: The island consists of four sections. A light friendly looking forest where Tux starts his journey, a ghost forest section, and a transition between them; in the center of the island, surrounded by the ghost forest is the world's castle, called Dark Forest Keep. Levels will be spread throughout the whole island, distributed as follows: 50 per cent of the levels are inside the light section, 30 per cent inside the haunted section, with one or two levels inside the transition area. The remaining 20 per cent will take place inside the castle.

Other than on the Antarctica worldmap, the levels should be placed on different paths, so that there is always a choice between at least two levels. Exceptions to this (i.e. levels with no alternative to choose from) are
a) the first level,
b) levels on one path that are in some way connected by story,
c) the (first) transition to the ghost forest section, and
d) the castle levels.
The primary goal of the forest world is to beat the boss at the final castle level. In order to get there, Tux needs to collect five keys scattered throughout the island which will open the door to the castle. Thus, the paths on the worldmap should lead into five dead-ends that hold the levels in which the key can be found. The path to the castle is accessible from after the first level. However, when Tux tries to enter the castle, he can't unlock the door without all five keys.


Levels:
Unlike Antarctica, forest levels can have variable sizes, both horizontally and vertically. In addition to that, levels can have a number of different sectors of variable size, connected by doors, portals, script events and spawn points. Due to this variability, there is no recommended level size anymore; the "perfect size" of a level solely depends on its design.
The three different themes on forest world -light forest, ghost forest and castle- are each represented by a matching tileset. All forest levels use one of these tilesets; a general rule should be not to mix them.
Levels in the transition area between light and ghost forest, however, follow a different design: Those levels will have a light sector and a very similar looking ghost forest sector. Throughout the level, Tux will need to travel between the sectors to solve puzzles and find his way through the level. Transition between the worlds can happen by either
a) actively walking through a portal,
b) being beamed into the other world without warning, using invisible triggers, or
c) being caught by special badguys that have the ability to carry you over to the other world.
Levels have the ability to autoscroll in all four directions. There is no fixed ending sequence like in Antarctica anymore; level designers can use scripts to determine the ending conditions of a level. These can include picking up an object, killing a certain enemy or reaching a certain area.
For more general information on level design, read the file "levelguidelines.txt" in the docs directory of the SuperTux repository.
Level events can be automated using scripts in order to create in-game cutscenes.


Scripting:
Milestone 2 will feature a scripting system that can be used to customize events and objects inside a level.
Any level object and badguy can trigger a script; the language used for them is Squirrel. Scripts are embedded in a level object definition inside the level file, macros can be defined in external .nut files.
They can be used for the following actions:
    -Create cutscenes
    -Customize level objects and powerups
    -Transform a level
    -Manipulate levels by adding or removing objects and badguys
    -Finish a level


Powerups:
In Milestone 2 in general, the favored way of enhancing Tux' abilities will be through level objects that temporarily grant Tux special abilities (see Level Objects section for more details), rather than permanent powerups like fire and ice shots. Those will still be there, but they'll remain relatively weak, so they don't get in the way of level design. An ice shot will be implemented, the fire shot's behavior will be improved [need more detail here]. The fire shot gets a new ability to burn through specific tiles to reveal paths. These paths, however, should contain only bonus items like coins; it must be possible to finish a level without needing the fire powerup.
    -Ice shot
    -Fire melts ice, ice freezes water
    -Super Buttjump (timed)
General idea: More level objects than powerups, they can be placed where they are needed.
Powers like fire must not get in the way of level design


Permanent Abilities:
    -Flapping
    -Butt Jump (permanent for big tux)
Always big Tux in forest world?


Level Objects:
    -Coin - collect 100 coins to get an extra life.
    -Bonus Block - contains powerups.
    -Message Box - a special bonus block that contains a message. Implemented as telephones.
    -Ambient Sound - plays a looping sound effect inside the defined range.
    -Timer - adds a time limit to a level.
    -Particle System - adds background visual effects like clouds, snow, and rain.
    -Door - respawns Tux at a defined spawn point when activated.
    -Spawn Point - defines the place where Tux appears after walking through a door.
    -Bell - When touched, Tux respawns at the bell after dying.
    -Trampoline - Tux can jump on them for a very high jump; can be carried around.
    -Falling Block - solid block that falls down shortly after being touched.
    -Powerup - an object that represents a powerup, such as egg, flower, star, extra life, or potion.
    -Message Trigger - display a message as soon as Tux enters their range. Used to mark secret areas.
    -Sequence Trigger - executes a script on contact.
    -Moving Platform - [still needs to be defined.]
    -Camera Blocker - prevents the camera from scrolling into a specific direction. Instantly kill Tux on contact.
    -Carryable Block - Blocks that can be carried around and stacked.
    -Bubble Dispenser - Releases bubbles that Tux can use to travel upwards.
    -Ice Cube/Straw Block - a block that can be destroyed by the fire shot. Appearance depends on the world it's used in.


Badguys:
    Poison Ivy - Forest equivalent to Mr. Snowball.
    Mr. Tree - Large badguy that walks around slowly. Needs to be jumped on twice.
    Mr. Rocket - Shot out of a dispenser and flies straight into one direction. Explodes on collision.
    Dispenser - Frequently shoots rockets or drops other badguys.
    Zeekling - Flies around straight left or right, and straight towards Tux when he gets close.
    other badguy ideas: bird creatures, moles, ghosts


Bosses:
    Yeti
    Forest Boss needed!



Engine:
Apart from the code needed to create the game elements mentioned above, one goal is to make it easier to add custom content. Though it will not go as far as allowing total conversations of the game, it should be possible to easily change or add game content like graphics, levels and sounds without touching the code. This will be accomplished by using the PhysFS library for data handling, as well as adding functions to browse the data folders for custom levels, worldmaps and scripts. All game data, except music files, will be stored in a .zip archive located in the data directory. Additional data paths can be specified using command line options.
OpenGL only.


Graphics:
    Tilesets:
    Forest: light green and light brown, rain
    Ghost Forest: dead trees, dark brown, dark green, dark grey, Fog, Ghosts
    Castle: add dead flowers and plants on the walls
    Tilable level backgrounds
    Portals
    no more pipes


Sound:
    Ambient sounds
    Sounds with added environment effects (echoes, etc.)


Music:
Musical themes will be added for the following events and environments:
a) Two themes for the light forest world
b) Two ghost forest themes
c) One castle theme
d) Boss fight music
e) Game-Over music
f) Credits theme
There might be different Boss fight and game over themes for every world.
An enhanced version of the main theme will be used.


Story:
More focus on the story
Cutscenes at beginning and end of every world, maybe one interlude per world.


Level Editor:
The in-game editor will be replaced by the external editor Flexlay. With the release of milestone 2, Flexlay should support all newly added features like new level objects, new badguys, and scripting. Binary packages should be available for all platforms that run SuperTux.