This wiki has been moved to into the mediawiki branch.

Difference between revisions of "TODO"

From SuperTux
Jump to: navigation, search
(Collision Detection)
Line 16: Line 16:
'''D:''' features that will be implemented but need further discussion on how to implement them
'''D:''' features that will be implemented but need further discussion on how to implement them
Apart from issues listed here, [[:Category:Needs Code]], [[:Category:Needs Sound]] and [[:Category:Needs Graphics]] list articles that describe content which still lacks one of the three.
== Programming ==
== Programming ==

Revision as of 17:09, 12 July 2006

Milestone 2

Documents and ideas: Milestone 2 esp. World 2


Attention: Only developers should edit this page. Please add User ideas and Bugs to the end of their pages

High priority H: milestone goals that should be implemented for next milestone

Medium priority M: would be nice to have for next milestone, but should be secondary to high priority goals

Low priority L: things that should be fixed sometime

?: things that need to be discussed to determine whether or not they should be implemented

D: features that will be implemented but need further discussion on how to implement them

Apart from issues listed here, Category:Needs Code, Category:Needs Sound and Category:Needs Graphics list articles that describe content which still lacks one of the three.


Collision Detection

  • ?: Give tiles a configurable friction factor and make tux react to it. (for Icy tiles)
  • Concerning badguys:
    • You grab flattened mriceblocks when jumping on them with action key hold. But you should kick him loose...
IMO thats a good thing. Makes it a bit simpler to grab him. --WolfgangB 01:06, 13 Jul 2006 (BST)
  • Slopes
    • In flipped levels you die if you jump against a slope (see world2/level2.stl for example)
Fixed? Can't reproduce it in 3993. --WolfgangB 01:37, 13 Jul 2006 (BST)
    • The collision detection code doesn't move tux completely out of the collision on slopes. This currently has the effect that you can't duck/grab eggs on slopes. We could solve the duck/egg problem by only testing for the additional space that you need when unducking/getting an egg, but there might be other problems because tux is still in a collision.
      • This might also be caused by the Sector::is_free_space function, that's called when Tux requests his hitbox to be changed. Maybe Sector::is_free_space returns false when Tux stands on a slope, so the hitbox won't get resized.
  • Rock object totally broken
  • That slide along code sometimes pushes you into a crush position (try in platforms.stl)

Code Refactoring/Cleanup

  • L: Implement a remove_listener function, so that you can keep track when GameObject get added/removed to the Sector.
  • L: name files according to the classes they contain, e.g. tile_manager.* to TileManager.* because it contains a class named TileManager and not tile_manager
  • L: Refactor worldmap code to run like a normal GameSession with some special GameObjects
  • L: There are still some mainloops left outside the MainLoop class.



  • H: extract translatable strings from the scripts
  • L: Useful error messages. Report line and command that caused error.


  • M: create more and better Badguys, see Badguys for ideas


  • H: Don't simply duplicate code in the following objects: PoisonIvy, Spidermite?, Hatch, SkullTile
  • H: Infobox: Don't show scroll arrows if the text is smaller than the box. Try pixelwise smooth scrolling instead of 1 line per keypress. Try to avoid scrolling textboxes anyway, players are bored if they have to read so much. Try to avoid infoboxes where possible, the game is played by lots of kids who either can't read yet or don't know english, they'll just be confused by text they can't understand.
    • Infoboxes are really the only effective way to introduce gameplay elements. For example, the run sign in "Welcome to Antartica" and the associated barrier are impassible for those who haven't figured out yet that the action key is the run key too. Info boxes are not as evil as reading a manual, and gives information out at just the right time. Manuals can expose spoilers. -- tuxdev
    • I agree. (Short) infoboxes are OK for tutorials. Regular levels should avoid them, though. --delta
  • L: add a rope object on which tux is able to climb, also add a ? block that emits a rope when hit
  • L: redo trampolines
    • maybe we could instead introduce areas that accelerate Tux, Badguys and Particles in an arbitrary direction (i.e. wind). This could also replace unisolid tiles.
  • L: add a "geysir" object: It's a fountain of water that raises in certain intervals. It can be used as jump-pad as the water gives tux and up-boost when standing on it.
  • D: portable blocks emitting colored light. Other, colored blocks are only visible (and solid) in their range
  • ?: Doors that execute a script when Tux enters them


  • L: Combine tiles into bigger images (worldmap and the waterfall tiles come to mind). This should improve load time and opengl speed a bit (because we need fewer texture changes).


  • M: Make sure levels for version 0.1.2 still work. Currently this isn't the case because some files have been renamed and other small stuff... Our levelmaking fans will be happy if they don't loose the ability to play their old levels.
  • M: Tux did go up/down 1 or 2 pixels each step when walking around in the 0.1.x releases which made the walk look a bit more natural. I don't know if this was done intentionally or why it doesn't work anymore, but it would be nice to have this effect again.
  • L: the camera does some nasty little jumps if you jumped up on a higher place where the camera didn't completely follow yet and you fall down directly again. This will suddenly raise the camera up.
  • L: Add an option to tilemaps to fade away if tux stands behind tiles. (This is usefull to hide secret ways and entrances)
    • For starters, being able to set a tilemap's opacity to 50% would suffice. Layering this semitransparent tilemap on an opaque one would achieve a similar effect
  • M: Support multiple tilesets per level. This way users/modders can easily extend the tileset with by simply adding new .strf files into the data directory. Proposed format:
    (name ...)
      (import (tileset "images/tilesets/snow.stts") (start 0) (end 50))
      (import (tileset "images/tilesets/stone.stts") (start 51) (end 102))
        (ids 1 5 58 101 2 ...)
  • D: think about icebullet specifics
  • L: Try to avoid all random stuff in the game. There should be no calls to RandomGenerator in gameobjcts (at least the result shouldn't affect the gamelogic at all)
  • M: Option to delete or overwrite existing savegames.
  • L: Add line-editing functionality to Console
  • L: Add "name" attribute to tilemaps


  • L: save score on per-level basis to make high-score (this means coins/time)
  • M: Show statistics on level completion.
  • ?: Show total count of coins collected in all levels on the worldmap
    • initial implementation is there, however the screen should fade in (preferably a little later than the endsequence start)
    • the screen should be displayed until the player presses a key (or a longer period of time like 15 seconds) is over
    • statistics counting also doesn't seem to be correct yet
      • coins in bonus blocks are not counted
  • load/save statistics


  • ?: Seems like a SoundSouce that was stopped cannot resume playing. Further investigation necessary.
  • ?: Pass reference distance to SoundManager::play(), e.g. 600px to reduce volume by 50% for every screen the sound is away from the player
  • L: create more sound effects, see User_ideas#Sound_Effects for ideas
  • L: ability to jump back at a specific position in a music file on loop (add .music files that describe the behaviour)
  • L: Ability to run scripts that drive the music (ability to jump around the music file)


  • H: Badguys always change directions when hit from left/right, regardless of their direction. This makes them effectively not change their direction if they get 2 collisions in 1 update round.
  • H: Check/Fix bullet speed/behaviour
    • Please elaborate - what exactly needs to be checked or fixed? (Just compare it with what bullets did in milestone1, the reason the stuff is different now is because the code there is not coded in a framerate independent way)
In MS1 Tux is spitting the bullets in svn version he is throwing them. Thats the difference I notice, maybe there is also more subtile framebased stuff. --WolfgangB 15:36, 9 Jul 2006 (BST)
  • H: It seems like we get non-UTF8 strings from Windows error messages. SuperTux throws an exception when trying to render those in the console, handle this more gracefully and display ? instead
    • Correctly convert strings we get from PHYSFS_getLastError() and SDL_GetError() to UTF-8
    • PHYSFS_getLastError() returns the exact string it got from calling std::strerror(), so it uses the encoding implied by LC_MESSAGES. On Windows, this might be everything from Windows-1250 or ISO-8859-15 to Big5.
  • ?: Music loops during Endsequence
  • ?: If you bump a bonus block at the same time as you flip a level the bonus block slides down in a odd way. (for example test in world2/christoph1.stl)
  • M: Console is affected by lightmap: Dark level --> dark console


  • H: create 10 or more new levels of different size and complexity, using the new features of milestone 2.
  • H: Test existing Levels if they still work.


  • D: remove "1up" from mini-Tux bonus
  • H: add more forest tiles; some of the current ones need fixing.
  • H: Create a ghost forest tileset.
  • H: image for castle door with 5 key holes
  • H: new tiles for the forest worldmap
  • L: graphics for ropes
  • L: graphics for bubbles and soap (not necessary for Milestone 2)
  • ?/D: new enemies (first need to be designed)
  • ?: for most level backgrounds, create three tileable image parts that tile like this:


  • ?: See World_2#Atmosphere for more ambient sound ideas
  • H: make some sound when the player dies and looses coins. So that you get some feedback what is going on.
  • ?: Wind (ambient) for high plateaus, over-the-clouds action, fast platforms, ...
  • D: Short "Nolok" and "Tux" themed sound effects(?)
  • ?: Flapping for flying creatures (e.g. the Zeekling)
  • ?: soft "hop" sound for creatures like Jumpy or SkullyHop
  • ?: Crushing ice (Stalactite or breakable Ice tile)
  • ?: Warp sound for Hatch-style Dispenser
  • ?: Wooden "click" for Walking Totem
  • ?: Splash when jumping into water
  • ?: Sound when tux drinks a magic potion that flips the level around
    • that old sound from the flower? or better not ;-)
  • ?: Ambient sound for lava pits



(The editor is not release critical therefore no ratings for these TODOS)

  • Scroll TileList with middle mouse, Get different Tilegroups
  • Add scrollbars to tilelist widget
  • Add scrollbars to level?
  • Create an overview widget (where to place this in the GUI?)
  • preserve unknown lisp trees
  • Grab Mouse Pointer when scrolling so that we can scroll as much as we want

(and the mouse is still where it was before scrolling)

  • More custom property editors:
    • Sector selector
    • Spawnpoint selector
    • Texts
    • Scripts (we had a very good gtksourceview based editor which is disabled at the moment, maybe split the editor to a separate dll and load different editors on demand?)
  • Ask for Save on close/load/new
  • The open dialog has an invalid folder selected when saving new maps and crashs (and also shows "open")
  • Support resizing of level with drag&drop on the level borders
  • Support selection of multiple objects
  • Layer switching on keys 1,2,3,...,0 CTRL+1,2,3,...,0 to switch visibility, key 0 for objects
  • Editor has strange behaviour when you select a tile in the middle, right-click select and move the mouse too much to the right
  • Redraw sector after loading, undo, delete
  • Linebreaks in saved tilemaps?
  • Tool not working after loading new level
  • Windows builds seem to silently crash when loading huge levels
huge as in 100x100 or more like 10000x10000?
the level world2/airkey.stl crash both editor and the game itself on windows. --AnMaster 17:56, 30 Jun 2006 (BST)
airkey is 300x300. It makes the editor slow on my linux box but it's working--WolfgangB 00:14, 6 Jul 2006 (BST)
  • Make the right click menu from sector tab a normal menu so that users can easily find it