TODO update, fix tux doesn't stop at igloo anymore
[supertux.git] / TODO
1                                 TODO
2
3 Milestone 2
4 ~~~~~~~~~~~
5 Documents and ideas: http://super-tux.sourceforge.net/milestone2
6 Wiki: http://netpanzer.berlios.de/supertux
7         esp. http://netpanzer.berlios.de/supertux/index.php/Forest
8
9
10 Notes
11 ~~~~~
12 High priority [H]:   milestone goals that should be implemented for next
13                      milestone
14 Medium priority [M]: would be nice to have for next milestone, but should
15                      be secondary to high priority goals
16 Low priority [L]:    things that should be fixed sometime
17 ?: Things that need to be discussed to determine whether or not they should be
18     implemented
19
20
21 Programming
22 ~~~~~~~~~~~
23 --Collision Detection Rewrite (all [H])--
24  * enemies:
25     - implement fish
26     - implement wingling
27     - implement stalactite
28     - implement tree (really?)
29     - bring back stay on platform flag
30  ** implement ability to cary mriceblock (and other objects) around
31  * smoke clouds are too fast
32  * rethink slopes collision feedback... tux becomes too slow when walking up
33     and starts jumping when walking down
34  * think about an attachement mechanism for moving platforms
35  * implement paths for the moving platform, implement simple moving platforms
36  * fix bullet speed/behaviour
37  * check if unducking is actually possible or if something is in the way
38  * fix flapping
39  * what to do when stuck under tiles (after using duck-sliding)
40     - just slide through?
41  * do we want multi hit scores again? - not in the form of scores
42  * buttjump is deactivated
43  * implement quadtree or grid to speedup collision detection
44
45 --Code Refactoring/Cleanup/Optimisation--
46 [H] make the title using GameSession instead of reimplementing all the stuff
47 [L] rename gameloop.* files to gamesession.*
48 [L] rename GameObject::action to GameObject::update()
49 [L] use physfs for loading files
50 [L] change physics class y-velocity-coordinate to be like all other
51     y-coordinates again (positive y to go down)
52 [L] rename files like tile_manage.* to TileManager.* because they contain a
53     class named TileManager not tile_manager. Eventually use .hpp instead of .h
54     to indicate the usage of c++
55 [M] harmonize to 1 single gameloop that switches between title, worldmap,
56     ingame mode and eventually leveleditor mode
57 [L] introduce a special mode in DrawingContext for objects that want to draw
58     themselfes. This could speed up rendering of tilemaps.
59 [M] Make the gamelogic run in a fixed logical framerate
60
61 --Miscellaneous--
62 [?] think about how to implement scripting, and how to make a simple and easy to
63   use api for the scripting interface
64   (language will probably be lua - just have to figure out how well we can do
65    without OO support in the scripting language.
66    Other candidates are python, ruby and less likely java, mono/.net,
67    surely no own invention, perl or 1 of these c-like scripting languages)
68 [H] Create a "sound object" that is an object or area, that can be placed on the
69     map and constantly plays a .wav file to improve game athmosphere.
70     Good examples would be a water sound which can be placed at waterfalls,
71     a kuckoo sound that can be placed into the wood, bubling sound for lava,
72     ...
73     The sound object should be configurable:
74         To be position independent (always play), to have a spot position so
75         that it gets louder when tux gets nearer to the spot (or a rectangular
76         area instead of the spot?). You should be able to configure the sound
77         to be constantly looped or to be played in some random fashion
78         (ie. play and then 5-10 seconds pause).
79 [H] Create a "sign" object, ie an object that can be placed on the level and
80     contains messages (like the run sign we have at the moment but
81     programmatically created so that we can translate it)
82 [H] Create an "info block" ie. a block with a lightbulb on it or so that
83     displays some info text when jumped against. The textbox should be done
84     indepently of the info block and could be reused in cutscenes later...
85 [H] Add a simple rock object that can be carried around
86 [H] Add a rope object on which tux is able to climb, also add a ? block that
87     emits a rope when hit
88 [H] redo trampolines
89 [H] Buttjump related things
90      - enable buttjump again
91      - Should kill enemies with a certain range
92         - Done--now needs to be tweaked
93      - Animation (need images)
94      - Should be a powerup item (still to be discussed)
95      - Should break bricks if Tux is on top of bricks, otherwise it should
96        kill enemies within a close range.
97         - After enemy-kill is used, powerup should be removed from Tux
98 [H] Icebullet related things
99      - we should decide on specifics
100 [H] Graphics
101      - New forest tileset
102      - Badguy sprites
103      - Tux's buttjump animation
104 [M] Save score on per-level basis to make high-score
105 [M] Save time on per-level basis to make low-time-score
106 [M] Add bonus score for extra time left when finishing a level
107 [M] when bumping a special with 2 blocks at once, it won't change direction
108 [M] tux get killed if he kicks a iceblock while at the same time bouncing on
109 [L] The camera does some nasty little jumps if you jumped up on a higher place
110     where the camera didn't completely follow yet and you fall down directly
111     again. This will suddenly raise the camera up.
112 [L] Allow any object to be inside of a [?] box, ie. trampoline or badguy
113 [L] There is a report that the joypad is always used on windows and more severe
114     it generates random up/down events, though it is callibrated correctly.
115
116 Graphics
117 ~~~~~~~~
118
119 [H] Graphics+Animations for the Yeti
120         (see also http://netpanzer.berlios.de/supertux/index.php/Yeti)
121 [H] Graphics for the 5 keys in the forest world, graphics for the castle door
122     with 5 key holes
123 [H] New tiles for the forest worldmap
124 [H] Create a graphics to visually present reset points. (Maybe a bell that
125     starts swinging once tux touched it?)
126 [M] Add graphics for ropes
127 [L] Create graphics for bubbles and soap (not necessary for milestone2)
128
129 -new enemies need to be designed and added
130
131 Beyond Milestone2
132 ~~~~~~~~~~~~~~~~~
133 - More things than just levels on the worldmap (similar to SMB3)
134 - if we have a logical framerate we could record/play demos by simply storing
135   the pressed keys in each frame...
136
137 [L] --Scons--
138 We can just stay with jam for now. Compared to scons jam is at least faster and
139 doesn't suffer from the problems below.
140
141  * [H] Add an install target - done (however scons is creating stupid .sconsign
142                                      files at the install location :-/)
143  * [M] improve opengl check to work on win32 and eventually more strange
144    systems again
145  * [H] Make sure compilation on win32 and cross-compilation works
146  * [M] compile some test executables to test for SDL, SDL_mixer and SDL_image.
147    Also test for version of SDL_mixer and SDL_image
148  * [M] Create a distclean target
149  * [M] Create a dist target
150  * [M] Add instructions to the README
151  * [L] If all of the [H] and [M] issues are fixed, remove autoconf/automake
152  * [L] Take a look if it is possible to make it a bit more quiet. (Similar to
153      linux kernel, samba or jam output would be optimum, ie.
154        C++ build/linux/src/bla.o
155        C++ build/linux/src/blup.o
156        C++ build/linux/src/error.o
157           Error on line xx in error.o: This source contained an error
158
159        g++ -Wall .... -o build/linux/src/error.o src/error.cpp