-Apply door fix to hatch as well (evil code duplication here...)
[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  ** implement ability to cary mriceblock (and other objects) around
25  * smoke clouds are too fast
26  * rethink slopes collision feedback... tux becomes too slow when walking up
27     and starts jumping when walking down
28  * think about an attachement mechanism for moving platforms
29  * implement paths for the moving platform, implement simple moving platforms
30  * fix bullet speed/behaviour
31  * check if unducking is actually possible or if something is in the way
32  * fix flapping
33  * what to do when stuck under tiles (after using duck-sliding)
34     - just slide through?
35  * do we want multi hit scores again? - not in the form of scores
36  * buttjump is deactivated
37  * implement quadtree or grid to speedup collision detection
38
39 --Code Refactoring/Cleanup/Optimisation--
40 [H] make the title using GameSession instead of reimplementing all the stuff
41 [L] rename gameloop.* files to gamesession.*
42 [L] rename GameObject::action to GameObject::update()
43 [L] use physfs for loading files
44 [L] change physics class y-velocity-coordinate to be like all other
45     y-coordinates again (positive y to go down)
46 [L] rename files like tile_manage.* to TileManager.* because they contain a
47     class named TileManager not tile_manager. Eventually use .hpp instead of .h
48     to indicate the usage of c++
49 [M] harmonize to 1 single gameloop that switches between title, worldmap,
50     ingame mode and eventually leveleditor mode
51 [L] introduce a special mode in DrawingContext for objects that want to draw
52     themselfes. This could speed up rendering of tilemaps.
53 [M] Make the gamelogic run in a fixed logical framerate
54
55 --BadGuys--
56 [H] Bring back stay on platform flag
57 [H] Reimplement fish
58 [H] Reimplement stalactite
59 [H] Do something with the wingling
60 [?] Do something with the tree?
61
62 --Objects--
63 [H] Create a "sound object" that is an object or area, that can be placed on the
64     map and constantly plays a .wav file to improve game athmosphere.
65     Good examples would be a water sound which can be placed at waterfalls,
66     a kuckoo sound that can be placed into the wood, bubling sound for lava,
67     ...
68     The sound object should be configurable:
69         To be position independent (always play), to have a spot position so
70         that it gets louder when tux gets nearer to the spot (or a rectangular
71         area instead of the spot?). You should be able to configure the sound
72         to be constantly looped or to be played in some random fashion
73         (ie. play and then 5-10 seconds pause).
74 [H] Create a "sign" object, ie an object that can be placed on the level and
75     contains messages (like the run sign we have at the moment but
76     programmatically created so that we can translate it)
77 [H] Create an "info block" ie. a block with a lightbulb on it or so that
78     displays some info text when jumped against. The textbox should be done
79     indepently of the info block and could be reused in cutscenes later...
80 [H] Add a simple rock object that can be carried around
81 [H] Add a rope object on which tux is able to climb, also add a ? block that
82     emits a rope when hit
83 [H] redo trampolines
84
85 --Miscellaneous--
86 [?] think about how to implement scripting, and how to make a simple and easy to
87   use api for the scripting interface
88   (language will probably be lua - just have to figure out how well we can do
89    without OO support in the scripting language.
90    Other candidates are python, ruby and less likely java, mono/.net,
91    surely no own invention, perl or 1 of these c-like scripting languages)
92 [H] Buttjump related things
93      - enable buttjump again
94      - Should kill enemies with a certain range
95         - Done--now needs to be tweaked
96      - Animation (need images)
97      - Should be a powerup item (still to be discussed)
98      - Should break bricks if Tux is on top of bricks, otherwise it should
99        kill enemies within a close range.
100         - After enemy-kill is used, powerup should be removed from Tux
101 [H] Icebullet related things
102      - we should decide on specifics
103 [M] Save score on per-level basis to make high-score
104 [M] Save time on per-level basis to make low-time-score
105 [M] Add bonus score for extra time left when finishing a level
106 [M] when bumping a special with 2 blocks at once, it won't change direction
107 [M] tux get killed if he kicks a iceblock while at the same time bouncing on
108 [L] The camera does some nasty little jumps if you jumped up on a higher place
109     where the camera didn't completely follow yet and you fall down directly
110     again. This will suddenly raise the camera up.
111 [L] Allow any object to be inside of a [?] box, ie. trampoline or badguy
112 [L] There is a report that the joypad is always used on windows and more severe
113     it generates random up/down events, though it is callibrated correctly.
114
115 Graphics
116 ~~~~~~~~
117
118 [H] Graphics+Animations for the Yeti
119         (see also http://netpanzer.berlios.de/supertux/index.php/Yeti)
120 [H] Graphics for the 5 keys in the forest world, graphics for the castle door
121     with 5 key holes
122 [H] New tiles for the forest worldmap
123 [H] Create a graphics to visually present reset points. (Maybe a bell that
124     starts swinging once tux touched it?)
125 [M] Add graphics for ropes
126 [H] Animation for the buttjump
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