This wiki has been moved to into the mediawiki branch.

Difference between revisions of "TODO"

From SuperTux
Jump to: navigation, search
(Editor: Been there, done that)
Line 158: Line 158:
== Editor ==
== Editor ==
(The editor is not release critical therefore no ratings for these TODOS)
(The editor is not release critical therefore no ratings for these TODOS)
* Add support for editing tilemap paths. Added to the game itself in r4130 and r4131.
* Scroll TileList with middle mouse, Get different Tilegroups
* Scroll TileList with middle mouse, Get different Tilegroups
:Isn't that the way it is atm? --[[User:WolfgangB|WolfgangB]] 18:23, 7 Aug 2006 (BST)
:Isn't that the way it is atm? --[[User:WolfgangB|WolfgangB]] 18:23, 7 Aug 2006 (BST)

Revision as of 03:40, 9 August 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)
  • M Slope values aren't flipped if you flip tilemaps. THe collision code would need to be aware which tilemaps are flipped and then adjust the slope values to that. (The bug is only marked M as currently you can't die because of that anymore, and because you can simply avoid the situation in the levels)
  • L The collision detection code doesn't move tux completely out of the collision on slopes. All cases where this had bad effects should be worked around at the moment, so this bug has very low priority.
  • H That slide along code sometimes pushes you into a crush position (try in platforms.stl)
Not reproducable. At what location?

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: Snowball/PoisonIvy, UnstableTile/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: 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.
  • 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 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
  • D: make tilemaps scriptable?
  • L: Give each subject discussed at Meeting_log_(2005-04-02) its own Wiki page.
  • D: Discuss timeout effects.
  • D: Discuss collision behaviour while Tux is carrying a portable.


  • 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


  • ?: 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: 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)
  • L: It seems like we get non-UTF8 strings from Windows error messages. SuperTux expects UTF-8 encodings.
    • 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.
  • M: Console is affected by lightmap: Dark level --> dark console
  • L: Playback of a demo stops at sector transitions. Controller is back to keyboard then...


  • 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.


  • 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)
  • ?: Crushing ice (Stalactite or breakable Ice tile)
  • ?: Warp sound for Hatch-style Dispenser
  • ?: Sound when tux drinks a magic potion that flips the level around
    • that old sound from the flower? or better not ;-)



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

  • Scroll TileList with middle mouse, Get different Tilegroups
Isn't that the way it is atm? --WolfgangB 18:23, 7 Aug 2006 (BST)
  • 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?)
Why was it disabled? --WolfgangB 16:45, 13 Jul 2006 (BST)
Because it crash the editor on Windows, and because it add lots of extra deps. --AnMaster 23:27, 20 Jul 2006 (BST)
"lots of extra deps" anything that is not part of every serious distro? Why not fix the crash instead of removing features?
  • Ask for Save on close/load/new
  • 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?
Would make some svn diffs a bit more usable. --AnMaster 23:27, 20 Jul 2006 (BST)
  • 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 old world2/airkey.stl crashed both editor and the game itself on windows. --AnMaster 17:56, 30 Jun 2006 (BST)
the old airkey was 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
Maybe add them to a toolbar? that could be useful. --AnMaster 23:27, 20 Jul 2006 (BST)
  • When you set the path to the supertux data dir the editor doesn't use the new path until you restart the editor.