This wiki has been moved to https://github.com/SuperTux/wiki into the mediawiki branch.

TODO

From SuperTux
Revision as of 04:16, 30 June 2006 by Sommer (Talk | contribs)

Jump to: navigation, search

Milestone 2

Documents and ideas: Milestone 2 esp. World 2

Notes

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

Programming

Collision Detection

  • M: Solve problems with Tux getting stuck in (and consequentially moved out of) unisolid tiles if they are at the apex of his jump
  • M: Make moving platforms crush tux when pressed against a wall
  • L: Stacking some objects doesn't work nicely. Examples: Multiple badguys above each other, multiple rocks above each other. It might be possible to solve this by doing collision detection against old object positions instead of the new ones.
  • ?: Solve problems with "solid" objects, e.g. Tux being propelled through bonus-type invisible blocks or Tux sometimes being thrown off platforms
    • This doesn't seem to happen when the separate-axis collision detection for solid objects is replaced by the default algorithm
  • ?: Trigger collision callbacks for multiple solids that get hit at the same time, not just the "first" one
  • ?: Give tiles a configurable friction factor and make tux react to it. (for Icy tiles)

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.
  • D: Replace code that can cause buffer overflows

Actions

Scripting/Cutscenes

  • H: extract translatable strings from the scripts
  • M: Useful error messages. Report line and command that caused error.
  • D: Ability to sync script with game, e.g. waiting until music has finished playing, waiting until Tux is on ground, ...

Badguys

  • M: create more and better Badguys, see Badguys for ideas
  • ?: force badguys to spawn facing in a certain direction
    • Might be needed for dispenser, darttrap, tumbleweed

Objects

  • 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

Optimisations

  • M: Add some more sound_manager->preloads into object constructors
  • 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).
  • L: implement quadtree or grid to speedup collision detection

Miscellaneous

  • 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:
  (supertux-level
    (name ...)
    ...
    (tileset
      (import (tileset "images/tilesets/snow.stts") (start 0) (end 50))
      (import (tileset "images/tilesets/stone.stts") (start 51) (end 102))
    )
    ...
    (sector
      (tilemap
        (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. My five slots are all in world 2, Have to delete one to go back.
  • L: Add line-editing functionality to Console
  • L: Add "name" attribute to tilemaps

Statistics

  • 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

Sound

  • ?: 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)

Bugs

  • H: Check/Fix bullet speed/behaviour
    • Please elaborate - what exactly needs to be checked or fixed?
  • H: when finishing worldmap levels on a T-way tux starts running in a direction, while he should simply stay because he has several possibilities to continue. Also at the T-way that goes up, left, down tux doesn't seem to stop.
Can't reproduce that problem in r3692. Fixed?
  • H: In Scripts started by script_triggers the set_pos call has no effect because the scripts run during collision detection phase. We should somehow queue them and run the scripts next frame during the update phase.
    • might be fixed now. MovingObject::set_pos now takes care of adjusting the CD "dest" member
  • 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
  • M: Correctly convert strings we get from PHYSFS_getLastError() and SDL_GetError() to UTF-8
  • ?: Music loops during Endsequence

Levels

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

Graphics

  • 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:
+-+-+
|1|1|
+-+-+
|1|1|
+-+-+
|2|2|
+-+-+
|3|3|
+-+-+
|3|3|
+-+-+

Sounds

  • ?: 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

Music

Editor

(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")
  • When selecting File->New the filename is not resetted
  • 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 crashs with out of memory, 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