X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=TODO;h=b8c522bb734bf1723034678af2868dde2d76873e;hb=9ca6ad8086995cde21a4ae247dac53de336c15ec;hp=d26e624634c9df7421db1c3eaf8e5f6b3365baee;hpb=ef57479f613b900b73eba8e8f4d026aae0de25cc;p=supertux.git diff --git a/TODO b/TODO index d26e62463..b8c522bb7 100644 --- a/TODO +++ b/TODO @@ -1,136 +1,102 @@ +Note: Controversial list of things currently broken and controversial +solutions for them. -- To do for Milestone2 - -http://super-tux.sf.net/ - -High priority: milestone goals that should be implemented for next milestone -Medium priority: would be nice to have for next milestone, but should - be secondary to high priority goals -Low priority: things that should be fixed sometime -?: Things that need to be discussed to determine whether or not they should be - implemented - -Todo ----- -H: high priority -M: medium priority -L: low priority -?: bug or feature? - - needs discussion - ---Scons-- - * [H] Add an install target - done (however scons is creating stupid .sconsign - files at the install location :-/) - * [M] improve opengl check to work on win32 and eventually more strange - systems again - * [H] Make sure compilation on win32 and cross-compilation works - * [M] compile some test executables to test for SDL, SDL_mixer and SDL_image. - Also test for version of SDL_mixer and SDL_image - * [M] Create a distclean target - * [M] Create a dist target - * [M] Add instructions to the README - * [L] If all of the [H] and [M] issues are fixed, remove autoconf/automake - * [L] Take a look if it is possible to make it a bit more quiet. (Similar to - linux kernel, samba or jam output would be optimum, ie. - C++ build/linux/src/bla.o - C++ build/linux/src/blup.o - C++ build/linux/src/error.o - Error on line xx in error.o: This source contained an error - - g++ -Wall .... -o build/linux/src/error.o src/error.cpp - ---Collision Detection Rewrite (all [H])-- - * enemies: - - implement fish - - implement flyingsnowball - - implement wingling - - implement tree (really?) - - bring back stay on platform flag - - make enemies bounce of upon each other again - - make enemies fall again - ok - ** implement ability to cary mriceblock (and other objects) around - delayed - for after big commit... - * smoke clouds are too fast - * rethink slopes collision feedback... tux becomes too slow when walking up - and starts jumping when walking down - * think about an attachement mechanism for moving platforms - * implement paths for the moving platform, implement simple moving platforms - * fix bullet speed/behaviour - * check if unducking is actually possible or if something is in the way - * fix flapping - * what to do when stuck under tiles (after using duck-sliding) - * do we want multi hit scores again? - * tux doesn't stop at igloo anymore - * buttjump is deactivated - * implement quadtree or grid to speedup collision detection - ---Code Refactoring/Cleanup/Optimisation-- -[H] make the title using GameSession instead of reimplementing all the stuff -[L] rename gameloop.* files to gamesession.* -[L] rename GameObject::action to GameObject::update() -[L] use physfs for loading files -[L] change physics class y-velocity-coordinate to be like all other - y-coordinates again (positive y to go down) -[M] harmonize to 1 single gameloop that switches between title, worldmap, - ingame mode and eventually leveleditor mode -[H] introduce a special mode in DrawingContext for objects that want to draw - themselfes. This could speed up rendering of tilemaps. -[M] Make the gamelogic run in a fixed logical framerate - ---Miscellaneous-- -[?] think about how to implement scripting, and how to make a simple and easy to - use api for the scripting interface - (language will probably be lua - just have to figure out how well we can do - without OO support in the scripting language. - Other candidates are python, ruby and less likely java, mono/.net, - surely no own invention, perl or 1 of these c-like scripting languages) - -[?] Default keyboard setup should change. Up will be needed for other features - like going through doors and looking up, etc. - Up arrow - Look up / activate - Down arrow - Look down / duck - Left arrow - Left move - Right arrow - Right move - Ctrl - Run / Power - Space - Jump - -[H] Worldmap should have a flag to allow to go to another map after finishing - a level from that one. - It might be cool to have a (place group in the worldmap file that would - allow such stuff as: levels, messages, wrapping and worldmap changing - (or even combinations). -[H] Change resolution to 800x600 - - Levels need to be updated to resolution - - half of the levels have been already updated - - some fixed levels still have "glitches". See the menu level where - some of the tiles are "wrong" and don't fit -[H] Buttjump related things - - Should kill enemies with a certain range - - Done--now needs to be tweaked - - Animation (need images) - - Should be a powerup item (still to be discussed) - - Should break bricks if Tux is on top of bricks, otherwise it should - kill enemies within a close range. - - After enemy-kill is used, powerup should be removed from Tux -[H] Icebullet related things - - we should decide on specifics -[H] Tux should fall while walking in tiles that have a space between. - - Possible solution: reduce Tux's width when checking collision with tiles -[H] Graphics - - New forest tileset - - Badguy sprites - - Tux's buttjump animation - -[M] Save score on per-level basis to make high-score -[M] Save time on per-level basis to make low-time-score -[M] Add bonus score for extra time left when finishing a level -[M] when bumping a special with 2 blocks at once, it won't change direction -[M] tux get killed if he kicks a iceblock while at the same time bouncing on - -[L] Allow any object to be inside of a [?] box, ie. trampoline or badguy - - Not sure if this would be gameplay wise. - -Beyond Milestone2 ------------------ -- More things than just levels on the worldmap (similar to SMB3) -- if we have a logical framerate we could record/play demos by simply storing - the pressed keys in each frame... +Coding Standard +=============== + +* use SCons instead of CMake + +* make code clean: "-O2", "-g3", + "-ansi", + "-pedantic", + "-Wall", + "-Wextra", + "-Wnon-virtual-dtor", + "-Weffc++", + "-Wconversion", + "-Werror", + "-Wshadow", + "-Wcast-qual", + "-Winit-self", # only works with >= -O1 + "-Wno-unused-parameter", + +* do not use raw pointer, especially not for Sprite and Surface + +* only do one variable initialization per line, not multiple as its + currently often done in initialization list + +* remove overuse of multi-inheritance + +* remove overuse of friend'ship + +* maybe mark interfaces as interfaces (ISerializable or SerializableInterface) + +* split files with multiple classes into multiple files with one class each + + +TODO +==== + +* GameObject::RemoveListenerListEntry: Ughs, somebody trying to + implement a list class within in the GameObject?! + +* replace random generator with mersene twister and/or move to external/ + +* check the code with Valgrind + +* static vs anonymous namespace + +* use Vector in Physics for 'a' and 'v' + +* add --datadir DIR (data/) and --userdir DIR (~/.supertux/) + +* make gravity a constant + +* funky side effect of too much global variables: when having a + savegame with large or firetux and then starting that game, Tux in + the menu background will grow and be visible that way for a fraction + of a second + +* write scripts for include sorting and include guard checking that + can be run automatically + +* md5.hpp and random_generator.hpp could go to external/ + +* rename Vector -> Vector2f + +* get rid of global SDL_Screen* screen variable + +* identify all global variables and make them ugly (g_ or globals::) + +* get rid of SCREEN_WIDTH/SCREEN_HEIGHT + +* is version.h actually needed? + +* resolution menu entry moves the wrong way around + +* write scripts to automatically check for: + + - all includes are relative to top level dir + + - include guards are proper + +* move SVN to http://code.google.com (maybe one day) + +* move bugtracker to http://code.google.com (much simpler, less useless) + +* convert worldmap from const lisp::Lisp* lisp to "const Reader&" + +* having dictionary_manager in Lisp is extremely ugly + +* enforce proper naming of files to match their class + +* get rid of DEBUG and conditional compilation, these should be + reserved for a few tiny cases, not spread all over the code + +* split particlesystem_interactive + +* centralize menus + +* make a proper class out of supertux/resources.hpp + +# EOF #