Downgrade surface format message from warning to debug
[supertux.git] / docs / milestone2.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4   <meta content="text/html; charset=ISO-8859-1"
5  http-equiv="content-type">
6   <title>SuperTux - Milestone 2 Specifications</title>
7 </head>
8 <body>
9 <div style="text-align: center;"><big>SuperTux Milestone 2</big><br>
10 <br>
11 <div style="text-align: left;"><span style="font-weight: bold;">Spoiler
12 Warning:<br>
13 </span><small style="font-weight: bold;">This document contains a very
14 detailed description about SuperTux milestone 2, including every new
15 feature, as well as the full story.</small><span
16  style="font-weight: bold;"><small style="font-weight: bold;"> If you
17 only want to play SuperTux and you are not interested in the
18 development process, you should not read any further, as it will give
19 away a lot of surprises; however, if you are involved in developing the
20 game, reading this is a requirement.</small><br>
21 </span></div>
22 <div style="text-align: left;"><small><br>
23 <br>
24 Worldmap:<br>
25 After finishing Antarctica by beating the worlds boss, a cutscene,
26 replacing the currently displayed text, will be shown. (For a detailed
27 description of cutscenes, see section "Story".) Tux will then advance
28 to world 2, the forest island. Its worldmap will be built using the
29 same, possibly enhanced, format that Antarctica uses. The worldmap will
30 be designed as follows: The island consists of four sections. A light
31 friendly looking forest where Tux starts his journey, a ghost forest
32 section, and a transition between them; in the center of the island,
33 surrounded by the ghost forest is the world's castle, called Dark
34 Forest Keep. Levels will be spread throughout the whole island,
35 distributed as follows: 50 per cent of the levels are inside the light
36 section, 30 per cent inside the haunted section, with one or two levels
37 inside the transition area. The remaining 20 per cent will take place
38 inside the castle.</small><small><br>
39 </small><small>Other than on the Antarctica worldmap, the levels should
40 be placed on different paths, so that there is always a choice between
41 at least two levels. Exceptions to this (i.e. levels with no
42 alternative to choose from) are<br>
43 a) the first level,<br>
44 b) levels on one path that are in some way connected by story,<br>
45 c) the (first) transition to the ghost forest section, and<br>
46 d) the castle levels.<br>
47 The primary goal of the forest world is to beat the boss at the final
48 castle level. In order to get there, Tux needs to collect five keys
49 scattered throughout the island which will open the door to the castle.
50 Thus, the paths on the worldmap should lead into five dead-ends that
51 hold the levels in which the key can be found. The path to the castle
52 is accessible from after the first level. However, when Tux tries to
53 enter the castle, he can't unlock the door without all five keys.<br>
54 </small><small><br>
55 <br>
56 Levels:<br>
57 Unlike Antarctica, forest levels can have variable sizes, both
58 horizontally and vertically. In addition to that, levels can have a
59 number of different sectors of variable size, connected by doors,
60 portals, script events and spawn points. Due to this variability, there
61 is no recommended level size anymore; the "perfect size" of a level
62 solely depends on its design.<br>
63 The three different themes on forest world -light forest, ghost forest
64 and castle- are each represented by a matching tileset. All forest
65 levels use one of these tilesets; a general rule should be not to mix
66 them.<br>
67 Levels in the transition area between light and ghost forest, however,
68 follow a different design: Those levels will have a light sector and a
69 very similar looking ghost forest sector. Throughout the level, Tux will
70 need to travel between the sectors to solve puzzles and find his way
71 through the level. Transition between the worlds can happen by either<br>
72 a) actively walking through a portal,<br>
73 b) being beamed into the other world without warning, using invisible
74 triggers, or<br>
75 c) being caught by special badguys that have the ability to carry you
76 over to the other world.<br>
77 </small><small>Levels have the ability to autoscroll in all four
78 directions. There is no fixed ending sequence like in Antarctica
79 anymore; level designers can use scripts to determine the ending
80 conditions of a level. These can include picking up an object, killing
81 a certain enemy or reaching a certain area.<br>
82 </small><small>For more general information on level design, read the
83 file "levelguidelines.txt" in the docs directory of the SuperTux
84 repository.<br>
85 Level events can be automated using scripts in order to create in-game
86 cutscenes.<br>
87 <br>
88 <br>
89 Scripting:<br>
90 Milestone 2 will feature a scripting system that can be used to
91 customize events and objects inside a level. </small><small>Any level
92 object and badguy can trigger a script; the language used for them is
93 Squirrel. </small><small>Scripts are embedded in a level object
94 definition inside the level file, macros can be defined in external
95 .nut files. </small><small><br>
96 </small><small>They can be used for the following actions:<br>
97 &nbsp;&nbsp;&nbsp; -Create cutscenes<br>
98 &nbsp;&nbsp;&nbsp; -Customize level objects and powerups<br>
99 &nbsp;&nbsp;&nbsp; -Transform a level<br>
100 &nbsp;&nbsp;&nbsp; -Manipulate levels by adding or removing objects and
101 badguys<br>
102 &nbsp;&nbsp;&nbsp; -Finish a level<br>
103 </small><small><br>
104 <br>
105 </small><small>Powerups:<br>
106 In Milestone 2 in general, the favored way of enhancing Tux'
107 abilities will be through level objects that temporarily grant Tux
108 special abilities (see Level Objects section for more details), rather
109 than permanent powerups like fire and ice shots. Those will still be
110 there, but they'll remain relatively weak, so they don't get in the way
111 of level design. An ice shot will be implemented, the fire shot's
112 behavior will be improved [need more detail here]. The fire shot gets
113 a new ability to burn through specific tiles to reveal paths. These
114 paths, however, should contain only bonus items like coins; it must be
115 possible to finish a level without needing the fire powerup.<br>
116 &nbsp;&nbsp;&nbsp; -Ice shot<br>
117 &nbsp;&nbsp;&nbsp; -Fire melts ice, ice freezes water<br>
118 &nbsp;&nbsp;&nbsp; -Super Buttjump (timed)<br>
119 General idea: More level objects than powerups, they can be placed
120 where they are needed.<br>
121 Powers like fire must not get in the way of level design<br>
122 </small><small><br>
123 <br>
124 </small><small>Permanent Abilities:<br>
125 &nbsp;&nbsp;&nbsp; -Flapping<br>
126 &nbsp;&nbsp;&nbsp; -Butt Jump (permanent for big tux)<br>
127 Always big Tux in forest world?<br>
128 <br>
129 <br>
130 </small><small>Level Objects:<br>
131 &nbsp;&nbsp;&nbsp; -Coin - collect 100 coins to get an extra life.<br>
132 &nbsp;&nbsp;&nbsp; -Bonus Block - contains powerups.<br>
133 </small><small>&nbsp;&nbsp;&nbsp; -Message Box - a special bonus block
134 that contains a message. Implemented as telephones.</small><br>
135 <small>&nbsp;&nbsp;&nbsp; -Ambient Sound - plays a looping sound effect
136 inside the defined range.<br>
137 &nbsp;&nbsp;&nbsp; -Timer - adds a time limit to a level.<br>
138 &nbsp;&nbsp;&nbsp; -Particle System - adds background visual effects
139 like clouds, snow, and rain.<br>
140 </small><small>&nbsp;&nbsp;&nbsp; -Door - respawns Tux at a defined
141 spawn point when activated.<br>
142 </small><small>&nbsp;&nbsp;&nbsp; -Spawn Point - defines the place
143 where Tux appears after walking through a door.<br>
144 </small><small>&nbsp;&nbsp;&nbsp; -Bell - When touched, Tux respawns at
145 the bell after dying.</small><br>
146 <small>&nbsp;&nbsp;&nbsp; -Trampoline - Tux can jump on them for a very
147 high jump; can be carried around.<br>
148 &nbsp;&nbsp;&nbsp; -Falling Block - solid block that falls down shortly
149 after being touched.<br>
150 &nbsp;&nbsp;&nbsp; -Powerup - an object that represents a powerup, such
151 as egg, flower, star, extra life, or potion.<br>
152 &nbsp;&nbsp;&nbsp; -Message Trigger - display a message as soon as Tux
153 enters their range. Used to mark secret areas.<br>
154 &nbsp;&nbsp;&nbsp; -Sequence Trigger - executes a script on contact.<br>
155 &nbsp;&nbsp;&nbsp; -Moving Platform - [still needs to be defined.]<br>
156 &nbsp;&nbsp;&nbsp; -Camera Blocker - prevents the camera from scrolling
157 into a specific direction. Instantly kill Tux on contact.<br>
158 &nbsp;&nbsp;&nbsp; -Carryable Block - Blocks that can be carried around
159 and stacked.<br>
160 &nbsp;&nbsp;&nbsp; -Bubble Dispenser - Releases bubbles that Tux can
161 use to travel upwards.<br>
162 &nbsp;&nbsp;&nbsp; -Ice Cube/Straw Block - a block that can be
163 destroyed by the fire shot. Appearance depends on the world it's used
164 in.<br>
165 <br>
166 <br>
167 Badguys:<br>
168 &nbsp;&nbsp;&nbsp; Poison Ivy - Forest equivalent to Mr. Snowball.<br>
169 &nbsp;&nbsp;&nbsp; Mr. Tree - Large badguy that walks around slowly.
170 Needs to be jumped on twice.<br>
171 &nbsp;&nbsp;&nbsp; Mr. Rocket - Shot out of a dispenser and flies
172 straight into one direction. Explodes on collision.<br>
173 &nbsp;&nbsp;&nbsp; Dispenser - Frequently shoots rockets or drops other
174 badguys.<br>
175 &nbsp;&nbsp;&nbsp; Zeekling - Flies around straight left or right, and
176 straight towards Tux when he gets close.<br>
177 &nbsp;&nbsp;&nbsp; other badguy ideas: bird creatures, moles, ghosts<br>
178 <br>
179 <br>
180 Bosses:<br>
181 &nbsp;&nbsp;&nbsp; Yeti<br>
182 &nbsp;&nbsp;&nbsp; Forest Boss needed!</small><small><br>
183 </small><br>
184 <br>
185 <small>Engine:<br>
186 Apart from the code needed to create the game elements mentioned above,
187 one goal is to make it easier to add custom content. Though it will not
188 go as far as allowing total conversations of the game, it should be
189 possible to easily change or add game content like graphics, levels and
190 sounds without touching the code. This will be accomplished by using
191 the PhysFS library for data handling, as well as adding functions to
192 browse the data folders for custom levels, worldmaps and scripts. All
193 game data, except music files, will be stored in a .zip archive located
194 in the data directory. Additional data paths can be specified using
195 command line options.<br>
196 OpenGL only.<br>
197 <br>
198 <br>
199 Graphics:<br>
200 &nbsp;&nbsp;&nbsp; Tilesets:<br>
201 &nbsp;&nbsp;&nbsp; Forest: light green and light brown, rain<br>
202 &nbsp;&nbsp;&nbsp; Ghost Forest: dead trees, dark brown, dark green,
203 dark grey, Fog, Ghosts<br>
204 &nbsp;&nbsp;&nbsp; Castle: add dead flowers and plants on the walls<br>
205 &nbsp;&nbsp;&nbsp; Tilable level backgrounds<br>
206 &nbsp;&nbsp;&nbsp; Portals<br>
207 &nbsp;&nbsp;&nbsp; no more pipes<br>
208 <br>
209 <br>
210 Sound:<br>
211 &nbsp;&nbsp;&nbsp; Ambient sounds<br>
212 &nbsp;&nbsp;&nbsp; Sounds with added environment effects (echoes, etc.)<br>
213 <br>
214 <br>
215 Music:<br>
216 Musical themes will be added for the following events and environments:<br>
217 a) Two themes for the light forest world<br>
218 b) Two ghost forest themes<br>
219 c) One castle theme<br>
220 </small><small>d) Boss fight music<br>
221 e) Game-Over music<br>
222 </small><small>f) Credits theme</small><br>
223 <small>There might be different Boss fight and game over themes for
224 every world.<br>
225 An enhanced version of the main theme will be used.<br>
226 <br>
227 <br>
228 Story:<br>
229 More focus on the story<br>
230 Cutscenes at beginning and end of every world, maybe one interlude per
231 world.<br>
232 <br>
233 <br>
234 Level Editor:<br>
235 The in-game editor will be replaced by the external editor Flexlay.
236 With the release of milestone 2, Flexlay should support all newly added
237 features like new level objects, new badguys, and scripting. Binary
238 packages should be available for all platforms that run SuperTux.<br>
239 </small></div>
240 </div>
241 </body>
242 </html>