SuperTux TODO ============= This is a list of tasks and issues that might be worth to implement or fix. This list is however not an authorative list of things that must be done, its a collection of random things that pop up during development, therefore not everything in here might be well thought out or worth to implement. Use your brain before implementing anything on this list and always think about how useful a new feature would be in the context of the whole game or if a potential performance enhanchment, actually enhanchmes anything at all. Coding Standard Stuff ===================== * 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", * 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 * static vs anonymous namespace * check the code with Valgrind * use Vector in Physics for 'a' and 'v' * replace random generator with mersene twister and/or move to external/ * write/finish scripts for include sorting and include guard checking that can be run automatically * md5.hpp and random_generator.hpp could go to external/ * write scripts to automatically check for: - all includes are relative to top level dir - include guards are proper TODO ==== * GameObject::RemoveListenerListEntry: Ughs, somebody trying to implement a list class within in the GameObject?! * 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 * 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 * having dictionary_manager in Lisp is extremely ugly * enforce proper naming of files to match their class * get rid of NDEBUG and conditional compilation, these should be reserved for a few tiny cases, not spread all over the code * split particlesystem_interactive * Renderer::apply_config() needs to handle fullscreen switching * collect all manager classe into globals.hpp * more moving directories around? addon/ audio/ control/ gui/ lisp/ math/ physfs/ sprite/ util/ video/ squirrel/ for generic squirrel code supertux/ worldmap/ trigger/ scripting/ for scripting wrapper code badguy/ object/ * implement PNG screenshot * GL_ARB_texture_non_power_of_two returns 1 on MatroxG450, while it returns "Missing" in glewinfo, something wrong * having hitbox in Sprite is fugly * write decal object * implement surface and/or sprite scaling (MipMaps?) * add code that compares the last Log line with the current, if they are the same reject them and just output something like: * last line has been repeated X times * file naming is inconsistent: some times we use '_' to separate words, sometimes we don't * implement: http://standards.freedesktop.org/menu-spec/menu-spec-latest.html * workaround for Ubuntu pulseaudio/OpenAL brokeness: $ cat ~/.alsoftrc drivers = oss * peaking up/down doesn't work properly * peaking left/right should make Tux look into that direction (up/down to, needs new sprites) * add pipe graphics that makes a 90 degree turn * keep possible future SDL1.3 upgrade in mind * cleanup scripting interface * remove cloud tiles, replace with decal Subversion->Git/Mercurial/Bzr Move ================================== * right now a switch doesn't seem to be worth it * core issue right now isn't SVN, but old SVN version on lethargik.org (lacks merge tracking and issues with viewvc) * cleanup SVN to make import into other version control systems possible: - Should we merge trunk/supertux-milestone1 and trunk/supertux when switching to Git/Hg/...? Mistakes: incorrect branch creation: r5201-5207 tags/start # unknown tags/supertux # unknown tags/supertux_0_1_0 tags/supertux_0_1_1 tags/supertux_0_1_2 tags/supertux_0_1_3 branches/cobble # unknown branches/milestone1 # unknown branches/new-collision-detection # unknown branches/README # documentation that will be lost in conversion branches/supertux # unknown branches/supertux_0_1_1_branch branches/supertux-box2d # mathnerd (trash) branches/supertux-editor-newdrawing # editor branches/supertux-editor-newdrawing2 # editor branches/supertux-milestone1-olpc # supertux-milestone1 branches/supertux-milestone2-grumbel # supertux branches/supertux-nogl # supertux(?) branches/supertux-sharp # another supertux editor branches/unison-video # ??? branches/vendor # ??? CVS crap trunk/cobble # some editor? trunk/CVSROOT # ??? CVS crap trunk/htdocs # htdocs trunk/jnrcol trunk/media trunk/SDL_tty trunk/setup2x trunk/supertux trunk/supertux-editor trunk/supertux-milestone1 trunk/supertux-portable trunk/supertux-sharp trunk/wiz-test Potential Git Issues ==================== * lack of sparse/narrow/shallow checkout, this means initial checkout will be 200MB instead of 100MB * no free hoster that allows >1GB repositories (haven't checked all, but those I did came out way short) -> could use lethargik.org * some free hosters that might allow >1GB repositories don't allow having multiple repositories * git submodule doesn't seem to be quite ready to replace our trunk/supertux, trunk/supertux-editor, trunk/media/, ... layout as it for example doesn't support automatic tracking of HEAD from the remote repositories, it also feels rather hacky and not properly integrated into git * lack of metadata versioning, if you delete a branch in git that you haven't merged, then its gone after the next gc/repack (+ two weeks time limit it seems), in SVN on the other side you can checkout the way the tree was at a specific date, its impossible to lose history unless you hack the repository Random Notes ============ * calculate the size of an background image: (parallax - 1) * screen_size + level_size ----------------------------------------- = image_size parallax * how to calculate the exact position of a background image so that it looks correct on different magnifications? # EOF #