This wiki has been moved to https://github.com/SuperTux/wiki into the mediawiki branch.
Milestone 2 Design Document
For the old forest page, see Milestone 3 Design Document
For the last voice meeting see: SuperTux Meeting 18. August 2007
This document is meant to give a reasonably detailed guide on what shall and shall not happen in Milestone 2. It is also intended as a complete replacement of other, incomplete or otherwise flawed, Milestone 2 documents floating around in this Wiki. This design document is written by Grumbel, question and comments are welcome, use the Talk page or the IRC channel for that. At the moment this document is a work-in-progress, meaning goals might change as time progresses. This document as not yet been approved by any other member of the SuperTux development stuff.
- 1 Overview
- 2 General
- 3 Menu System
- 4 Controls
- 5 Actions
- 6 Configuration
- 7 Game Elements
- 8 Levels
- 9 Creatures
- 10 Levels
- 10.1 01 - Welcome to Antarctica.stl
- 10.2 02 - The Journey Begins.stl
- 10.3 03 - Via Nostalgica.stl
- 10.4 04 - Tobgle Road.stl
- 10.5 05 - The Somewhat Smaller Bath.stl
- 10.6 06 - The Frosted Fields.stl
- 10.7 07 - Oh No More Snowballs.stl
- 10.8 08 - Stone Cold.stl
- 10.9 09 - Grumbels Sense of Snow.stl
- 10.10 10 - 23rd Airborne.stl
- 10.11 11 - Night Chill.stl
- 10.12 12 - Into the Stars.stl
- 10.13 13 - Above the Arctic Skies.stl
- 10.14 14 - Entrance to the Cave.stl
- 10.15 15 - Under the Ice.stl
- 10.16 16 - Living in a Fridge.stl
- 10.17 17 - Or is it just me.stl
- 10.18 18 - Ice in the Hole.stl
- 10.19 19 - Miyamoto Monument.stl
- 10.20 20 - End of the Tunnel.stl
- 10.21 21 - A Path in the Clouds.stl
- 10.22 22 - A Mysterious House of Ice.stl
- 10.23 23 - The Escape.stl
- 10.24 24 - The Shattered Bridge.stl
- 10.25 25 - Arctic Ruins.stl
- 10.26 26 - The Castle of Nolok.stl
- 10.27 27 - No More Mr Ice Guy.stl
- 11 World 1 - Icyisland
- 12 Intro/Credits
- 13 Task List
- 14 Bug List/Feature Requests
- 15 Tasks for the next two weeks
- 16 Next Meeting Agenda (28.Feb 2008, 19:00 GMT)
- 17 Things to know
- 18 Things unknown
- 19 Meeting Notes
Doing a forest world turned out impractical with the current available and active man-power for that reason Milestone 2 got retargeted to a much smaller accomplishable goal.
- Tux run animation shall be rolled back to the single-sprite on that was used in Milestone 1, the current split-image animation is far inferior
- uni-solid tiles shall be provided for all tilesets
- multi-layer paralax scrolling background tilemaps shall be used in all levels
- menu system should be replaced/reworked
- save system could need a rework as well
- language shall be changeable via the option menu, LANG environment variable shall only be used as default setting
- worldmap Tux sprite should get animations for left, right, up, down directions, not just a single one as now
Menu system of Milestone1 is rather ugly and could need a rewrite as well as a reorganization of some things:
- menu system needs support for scrolling, large lists of levels currently break it
- profiles should replace save slots (XBox-like)
- on Linux there is no real need for multiple profiles, only one should be used by default
- for each item there shall be a sub box displayed explaining it:
- displaying the level name in/above/below the pause menu would be nice
+------------------------+ | Fullscreen  | | Music Volume [ ####] | | * Aspect: 16/9 | +------------------------+ +---------------------------------+ | Adjust Monitor aspect ration... | +---------------------------------+
- Create new profile
- Delete profile
- Profile1 -> Main Menu
- Profile2 -> Main Menu
- Story/Start Game -> worldmap
- Contrib Levels -> submenu
- Add Ons -> submenu
- Options -> submenu
- Credits -> Credit Screen
- Quit -> exit the game
- Fullscreen: yes/no
- Aspect Ratio: 16/9, 16/10, 5/4, 4/3
- Sound Volume: off/0-100
- Music Volume: off/0-100
- Setup Keyboard:
- Setup Joystick:
- Use Profiles: yes/no
- Check for new stuff online
- complete contrib worlds
- browse folders with level stuff
The game needs to take special care to distinguish between jump-with-up and jump-with-button. Running is automatic in this game.
- walk/run: left/right
- duck: down
- jump: button1
- grab: button2
- backflip: down+button1
- walk: left/right/up/down
- enter level: button1
Configuration 2 (jump with up)
- walk/run: left/right
- duck: down
- jump: up
- grab: button1
- backflip: down quickly followed by up
- walk: left/right/up/down
- enter level: button1
- backflip must work even when the user can't press duck and jump at the same time
- worldmap level entering is in one configuration done with the grab key and in the other with the jump key, this must be allowed
- escape/return aren't remappable in-game and hard bound to showing/hiding the menu
- peeking left/right handling stays as is
- a Start-button might be a worthy consideration, since its semantics are different from Escape
- allowing hot-plugging of joystick would be nice (calling 'Setup Joystick' should query the joysticks in the system)
- ladders behavior must be compatible with both configurations
FIXME: How high, how is it influenced by running?
FIXME: How fast, how does it influence jump, how long is acceleration?
The backflip is a special jump which gives Tux some extra height compared to a normal jump.
By flapping his wings Tux is able to get a short amount of additional time in the air as well as gain a tile in height.
Reasons to have it: fits the penguin, interesting gameplay mechanic, has a reference implementation in the form of Yoshi Island
Reasons to not have it: Has been tried with not so much success
Problem: Its a "now or never" game mechanic, it changes the game to much to be introduced at a later point.
Will be ignored for now
The Butt Jump is activated by pressing down while in the air. It causes Tux to crush down on the exact spot over which he currently is. The butt jump provides additional force that allows him to crush blocks and some kind of armored enemies.
Tux body catches a lot of hot air and thus starts to float. This action is triggered by objects in the game world and automatically terminates after some amount of time.
Can interact with wind.
Will be implemented later, not a high priority item
The games configuration (fullscreen, aspect ratio, geometry, etc.) shouldn't be saved when supplied by command line.
Egg needs a new graphic, Fireflower/Iceflower -> ?
Slope tiles should be integrated.
Make Tux skid around and harder to control
Deep Snow Tiles
Slow Tux down, cause him to sink in half
Will be implemented later
Problem: We don't have good water behavior.
Will be implemented later
There shall be no reset points in the game, instead it should be made sure that levels are small enough to not require them.
There will be no lives and no punishment for death aside from having to restart the level, due to the lack of reset points there simply is no need for lives.
The game shall provide some form of special collectibles per level (5 special coins, 5 pieces of a crystal or stuff like that). How many of those collectibles are found is displayed in a prominent manner, not just part of the statistics.
The levels of Milestone1 lack verticality as well as unisolid tiles, Milestone2 should fix that by adding those elements. Also the levels should be shortened/split to avoid the need for reset points. Another important point is that each level should try follow a clear design premise instead of being more or less random collection of tiles and enemies. The levels from Milestone1 should be taken as a point of inspiration and starting point, not as something that is verbatim copied over to Milestone2.
The worldmap should be rolled back to that of Milestone1, i.e. a mostly linear map, but additional optional paths shall be added.
The test/ levels are currently quite a big mess, there needs to be clea nup to reduce them to those that are really needed otherwise its to easy to miss the ones that are important.
Replace it with something that better fits the snow world
Star shall get replaced by a starfish.
Already in the code, but not much used in Milestone1 Levels
A flying enemy that can land on trees and carry things around to throw at Tux.
Like Angry Stone, but with iceworld theme.
The canon can be mounted on either static or rotatable pedestal. It shoots angry looking snowballs.
The Mini-Bomb is an small version of the normal bomb, it approaches in groups most of the time and is aggressive, it however is non-lethal to Tux and only works to either distract him and throw him back.
The spitter acts as walking dispenser, the enemy type that he can spit out might be limited to mini-bombs and similarly small enemies.
The Yeti is the boss that awaits Tux in the first castle. After entering the throne room Tux will find a letter in which Nolok tells Tux of the other castles in other worlds (see Milestone1 extro.txt). In the background there is a window. While reading the note one will see a shadow approaching the window and soon after the Yeti jumping through the window. The normal boss battle starts instantly after the jump.
The current Yeti pattern needs to be reworked, since it is to easy to just stand in a corner and do nothing.
Alternative: Sequence at end of castle: Tux find Yeti, Yeti jumps out of the window and flees
- a snowman enemy shall be added, a snowman is build out of a base body combined with a snowball head, if the body is destroyed, the snowman turns into a snowball (use bandana for canon)
- take the jogger one for fall-down snowball
- take the japanic one for the gun
- take teh "normal" one for stay on platform
- take the "ninja" for following tux
- an additional type of snowballs shall be provided to signal stay-on-platform behaviour (a bandana or something like that)
The Eater is a very small enemy, half the size of a snowball, he can however expand a lot. If Tux gets to close to him the Eater will open his mouth wide enough that he can devour Tux or even other badguys. He his not defeatable by jumping onto him, since he will then just eat Tux. Throwing stuff at him won't work either, since again he will just eat them.
01 - Welcome to Antarctica.stl
overground, almost no holes
02 - The Journey Begins.stl
overground, a few holes covered by wood-bridges/pieces
03 - Via Nostalgica.stl
overground, almost no holes
04 - Tobgle Road.stl
overground, almost no holes, a few areas where the player can walk above or below, many wood pieces
05 - The Somewhat Smaller Bath.stl
06 - The Frosted Fields.stl
overground, some pipes, many spike enemies, some holes
07 - Oh No More Snowballs.stl
overground, plenty of holes, crappy looking labyrinth at the end, some copy&paste tile patterns
08 - Stone Cold.stl
overground, ends in a cave, quite a few holes
09 - Grumbels Sense of Snow.stl
overground, mostly holow, lots of wood, little snow/ice
10 - 23rd Airborne.stl
overground, some air
11 - Night Chill.stl
night, lots of air
12 - Into the Stars.stl
overground, lots of air, night
13 - Above the Arctic Skies.stl
overground, sky themed
14 - Entrance to the Cave.stl
starts overground, ends in a cave setting
15 - Under the Ice.stl
16 - Living in a Fridge.stl
17 - Or is it just me.stl
18 - Ice in the Hole.stl
19 - Miyamoto Monument.stl
20 - End of the Tunnel.stl
21 - A Path in the Clouds.stl
overground, but with lots of air, lots of tile-abuse, needs a special tileset
22 - A Mysterious House of Ice.stl
overground, but with a backplane of ice
23 - The Escape.stl
overground, but with a backplane of ice
24 - The Shattered Bridge.stl
overworld, bridge/water setting
25 - Arctic Ruins.stl
overworld, bridge/water setting
26 - The Castle of Nolok.stl
27 - No More Mr Ice Guy.stl
overworld, boss level
World 1 - Icyisland
World 1, the icyisland, was released with Milestone 1, the intend of Milestone 2 is to adapt it to the new engine features as well as improving it by adding new enemies and new gameplay elements. While level structure might be recyclable in many places, it will often need structural improvements to provide real use of vertical and horizontal scrolling, instead of just locking the player in a horizontal-only scrolling level. Things that need to be done:
- Jumpy shall be replaced with an enemy that fits better into the snow landscape, Jumpy himself shall be reused in a lava-like setting or in the bosses castle
- the walrus salesmen shall be added to the island
- some levels shall be separated out into optional paths, to provide a less linear path
- the old Milestone1 worldmap shall be used, not the one currently present in SVN
- iceblocks which will melt on contact with fire shall allow to lock paths in a level or lock secrets
- balanced platforms that start to rotate or move when Tux stands on them shall be provided
- water, in its simplistic tile form, shall be removed from all levels
- uni-solid/half-tiles shall be used to enhance the levels and provide optional paths
- bottom-less pits shall be either replaced by pits with spike at the bottom or allow Tux to climb back out of the pit
- there shall be auto-scrolling levels that force Tux to run by having a avalanche coming down behind him, the avalanche might either be simple snow or a large group of enemies
- the castle tileset shall be replaced with something that looks colder and features both snow and ice
- cave tileset shall be replaced with something that has a larger pattern, thus looks less ugly when tiled
- tiles picturing deadly spikes build out of ice shall be created
The text based intro and credits shall be replaced with cutscenes, showing the events that are described in the text. Instead of auto-scrolling text the game shall provide text that doesn't scroll, but instead only continues up on user interaction (i.e. press action button to see the next page of text). Text in cutscenes shall get printed letter by letter to the screen to provide a sense of 'motion'. Voice over from a story-teller might be consideration, while Tux, Penny and Nolok itself shall remain without speech.
Later in the development of Milestone2
- optimize the build process, building SuperTux currently takes ages
- change game back to use Milestone1 single-sprite SuperTux (done)
- do a 32x32 top-down water animation for the worldmap
- Tux isn't centered properly to his collision box
- Cyrillic Font
- seperate lisp reader, tinygettext and other libraries properly out of SuperTux
- write TexturePacker to place multiple images on a single texture (better use of texture space and fixes bug with tiles having junk on the edge)
- switch supertux-editor over to CMake? (done, is now a simple Makefile)
- reorganize the editor to something more like this SuperTux-Editor MookUp
- create a timeline what shall be done and when
- discuss in the meeting what shall be done over the coming week
Bug List/Feature Requests
- when BigTux ducks, the camera moves/jumps, but should stand still
- InfoBox crashes when Text doesn't start with a marker character
- there should be an script command to change the game speed (i.e. run in slowmotion)
Tasks for the next two weeks
- finish canon graphics, also snowball graphics, death, etc (Grumbel)
- create ice-spikes graphics (Grumbel)
- create ice-tiles graphics (Grumbel)
- create angry ice-block graphics (Grumbel)
- bring back single-sprite SuperTux
- create an overview over the current levels (Grumbel)
- finish editor improvements (MatzeB)
- try to fix white-lines around graphics problems (MatzeB)
- jump with keyboard up (done, WolfgangB)
- repair jump Tux sprite (to dark black) (Grumbel)
- butt jump animation (Grumbel)
- backflip animation (Grumbel)
- snowman graphics (Grumbel)
- figure out a Jumpy replacement (Grumbel)
- create SuperTux .xo Activity for OLPC (Grumbel)
- some decore for ice tiles, cracks and stuff (Grumbel)
- replace "you found a secret area" with a special sound (Wansti)
- rename trunk/supertux-sharp to trunk/supertux-editor to make it clear that it is the primary editor (MatzeB)
- Stay-on-platform snowball (done, WolfgangB)
- snowball-launcher (done. WolfgangB)
- create proper background tiles for level22
- create some playable test levels for new stuff
- create mountain and night background
- replace old bomb with new bomb sprite
- create an enemy type that doesn't just walk straight into one direction, but does something different depending on Tux direction (ninja)
- integrate snowjumpy
- finish icecrusher graphics
- add some acceleration/deceleration to flying snowball
- deep snow tiles
- icicle graphics for decoration purpose
- editor doesn't align canon and icecrusher properly (grid is wrong)
- new enemy type with more interesting walking pattern (follows Tux as long as Tux doesn't look, walks forward and backward, etc.), see Crystallo for a possible sprite
- use pink snowball for stay on platform, use normal snowball for straight forward walk
Next Meeting Agenda (28.Feb 2008, 19:00 GMT)
- discuss patches from Ed <email@example.com>, if not already applied
- present newly build levels
- what to do with Badguy::freeze()?
- what to do with level flipping (suggestion: ignore it)
- Wiki & SVN backup again
Things to know
- data/levels/test/unisolid.stl show a few new features of Milestone2 (parallax scrolling, unisolid snow tiles, new water)
- News is there to be used, so if something interesting happens, write it down there
- Who is running backups of the Wiki and SVN repository?
- Shall we switch to GPLv3? Not now, but maybe later
Code: - engine problems blending - monster activation should be dependent on tux position and not on screen position (like it is now) because it should be independent from aspect ratio (Note for level designers: Think that potentially the user can see the whole level in front of him) - Code for butt jump Objects: - new object to place images into levels (to replace info boxes): http://pingus.seul.org/~grumbel/tmp/md5/ca5c98b54e92b1317776c49970f2bbbe-info-boxes-done-right.png Menu System Rework: - Scrolling level selection list - Buttons in menus - Add info box below menu (with explanations) Profile system: - create profiles - delete profiles - load default profile on startup - Restart game on language change (do not put language change menu into the Pause-Options menu) Graphics: - running animation - butt jump animation - improve egg graphics, so it does not seem like a "snowball" - graphics for the stuff in "Creatures" Behaviour: - Angry Iceblock: like the mario blocks (in the castles) - Owl: unclear... Carriers objects and drops them at tux somehow, but not clear. - Canon: like in mario: shoots left/right - MiniBomb: accelerates, follows tux (but does not jump) - Eater: ? Snowmen: - take the jogger one for fall-down snowball - take the japanese one for the gun - take the "normal" one for stay on platform - take the "ninja" for following tux Enemy Code: - support for spawning k-children in an enemy (for spitter for example) Mods: - we might want to support "mods". A mod is defined in that it replaces stuff that is already there (instead of only adding new stuff). Undecided if we want it and how exactly. Controls: - we need to support jump with up and jump with button - support binding for left,right,up,down. allow double up+jump config Game mechanics: - no costs for reset points - Mailinglist discussion: do we want reset points? - Remove global coin counter, coin count is only per level now (similar to collectibles) - Add collectibles: per level, show them in the screen while playing the level - When you find a collectible, fade in collectible count for a short time - In pause mode show all collectible as once Mailing lists: - We want a separate team mailing list. Proposal: create supertux-user and supertux-team. make forward supertux-devel mails to supertux-user. supertux-team read everyone but write only for people with svn access... World1: - levels will be changed, and reworked to make use of the new features Yeti: - Sequence at end of castle: Tux find Yeti, Yeti jumps out of the window and flees
- New Badguy "Ice Crusher", falls down to crush Tux, then rises back up. Has a platform on its top
- Remove old Cannon, Dropper graphics and use new Cannon instead. Only shoots left and right
- Butt-Jump should easily be possible. Press down in midair to make Tux stop in mid-air and drop down vertically. Current effect is just fine. Don't forget to shake the camera.
- Figure out which Russian Translation to use (contact translators).
- Build test level using snow slopes.
- Do not use Ice Flower. It's not finished yet.
- Fix jumping Tux animation. It has weird black marks.
- Make Tux backflip animation smoother.
- New tileset for above-ground levels.
- New decorative tiles. Ice cracks, snowmen, cavemen, areas with more transparency, ...
- Frozen tree.
- The forum of supertux.info is currently broken or unmaintained. Should we shut down the server? Contact maintainer.
- Sounds for Ice Crusher, Flying Snowball, Snowball splashing against wall. Sound of rockets exploding is too loud.