added a bell object which is a new better way to do reset points
[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 --Objects--
62 [H] Create a "sound object" that is an object or area, that can be placed on the
63     map and constantly plays a .wav file to improve game athmosphere.
64     Good examples would be a water sound which can be placed at waterfalls,
65     a kuckoo sound that can be placed into the wood, bubling sound for lava,
66     ...
67     The sound object should be configurable:
68         To be position independent (always play), to have a spot position so
69         that it gets louder when tux gets nearer to the spot (or a rectangular
70         area instead of the spot?). You should be able to configure the sound
71         to be constantly looped or to be played in some random fashion
72         (ie. play and then 5-10 seconds pause).
73 [H] Create a "sign" object, ie an object that can be placed on the level and
74     contains messages (like the run sign we have at the moment but
75     programmatically created so that we can translate it)
76 [H] Create an "info block" ie. a block with a lightbulb on it or so that
77     displays some info text when jumped against. The textbox should be done
78     indepently of the info block and could be reused in cutscenes later...
79 [H] Add a simple rock object that can be carried around
80 [H] Add a rope object on which tux is able to climb, also add a ? block that
81     emits a rope when hit
82 [H] redo trampolines
83
84 --Miscellaneous--
85 [?] think about how to implement scripting, and how to make a simple and easy to
86   use api for the scripting interface
87   (language will probably be lua - just have to figure out how well we can do
88    without OO support in the scripting language.
89    Other candidates are python, ruby and less likely java, mono/.net,
90    surely no own invention, perl or 1 of these c-like scripting languages)
91 [H] Buttjump related things
92      - enable buttjump again
93      - Should kill enemies with a certain range
94         - Done--now needs to be tweaked
95      - Animation (need images)
96      - Should be a powerup item (still to be discussed)
97      - Should break bricks if Tux is on top of bricks, otherwise it should
98        kill enemies within a close range.
99         - After enemy-kill is used, powerup should be removed from Tux
100 [H] Icebullet related things
101      - we should decide on specifics
102 [H] Graphics
103      - New forest tileset
104      - Badguy sprites
105      - Tux's buttjump animation
106 [M] Save score on per-level basis to make high-score
107 [M] Save time on per-level basis to make low-time-score
108 [M] Add bonus score for extra time left when finishing a level
109 [M] when bumping a special with 2 blocks at once, it won't change direction
110 [M] tux get killed if he kicks a iceblock while at the same time bouncing on
111 [L] The camera does some nasty little jumps if you jumped up on a higher place
112     where the camera didn't completely follow yet and you fall down directly
113     again. This will suddenly raise the camera up.
114 [L] Allow any object to be inside of a [?] box, ie. trampoline or badguy
115 [L] There is a report that the joypad is always used on windows and more severe
116     it generates random up/down events, though it is callibrated correctly.
117
118 Graphics
119 ~~~~~~~~
120
121 [H] Graphics+Animations for the Yeti
122         (see also http://netpanzer.berlios.de/supertux/index.php/Yeti)
123 [H] Graphics for the 5 keys in the forest world, graphics for the castle door
124     with 5 key holes
125 [H] New tiles for the forest worldmap
126 [H] Create a graphics to visually present reset points. (Maybe a bell that
127     starts swinging once tux touched it?)
128 [M] Add graphics for ropes
129 [L] Create graphics for bubbles and soap (not necessary for milestone2)
130
131 -new enemies need to be designed and added
132
133 Beyond Milestone2
134 ~~~~~~~~~~~~~~~~~
135 - More things than just levels on the worldmap (similar to SMB3)
136 - if we have a logical framerate we could record/play demos by simply storing
137   the pressed keys in each frame...
138
139 [L] --Scons--
140 We can just stay with jam for now. Compared to scons jam is at least faster and
141 doesn't suffer from the problems below.
142
143  * [H] Add an install target - done (however scons is creating stupid .sconsign
144                                      files at the install location :-/)
145  * [M] improve opengl check to work on win32 and eventually more strange
146    systems again
147  * [H] Make sure compilation on win32 and cross-compilation works
148  * [M] compile some test executables to test for SDL, SDL_mixer and SDL_image.
149    Also test for version of SDL_mixer and SDL_image
150  * [M] Create a distclean target
151  * [M] Create a dist target
152  * [M] Add instructions to the README
153  * [L] If all of the [H] and [M] issues are fixed, remove autoconf/automake
154  * [L] Take a look if it is possible to make it a bit more quiet. (Similar to
155      linux kernel, samba or jam output would be optimum, ie.
156        C++ build/linux/src/bla.o
157        C++ build/linux/src/blup.o
158        C++ build/linux/src/error.o
159           Error on line xx in error.o: This source contained an error
160
161        g++ -Wall .... -o build/linux/src/error.o src/error.cpp