4 This is a list of tasks and issues that might be worth to implement or
5 fix. This list is however not an authorative list of things that must
6 be done, its a collection of random things that pop up during
7 development, therefore not everything in here might be well thought
8 out or worth to implement. Use your brain before implementing anything
9 on this list and always think about how useful a new feature would be
10 in the context of the whole game or if a potential performance
11 enhanchment, actually enhanchmes anything at all.
16 * make code clean: "-O2", "-g3",
27 "-Winit-self", # only works with >= -O1
28 "-Wno-unused-parameter",
30 * remove overuse of multi-inheritance
32 * remove overuse of friend'ship
34 * maybe mark interfaces as interfaces (ISerializable or SerializableInterface)
36 * split files with multiple classes into multiple files with one class each
38 * static vs anonymous namespace
40 * check the code with Valgrind
42 * use Vector in Physics for 'a' and 'v'
44 * replace random generator with mersene twister and/or move to external/
46 * write/finish scripts for include sorting and include guard checking that
47 can be run automatically
49 * md5.hpp and random_generator.hpp could go to external/
51 * write scripts to automatically check for:
53 - all includes are relative to top level dir
55 - include guards are proper
60 * GameObject::RemoveListenerListEntry: Ughs, somebody trying to
61 implement a list class within in the GameObject?!
63 * add --datadir DIR (data/) and --userdir DIR (~/.supertux/)
65 * make gravity a constant
67 * funky side effect of too much global variables: when having a
68 savegame with large or firetux and then starting that game, Tux in
69 the menu background will grow and be visible that way for a fraction
72 * rename Vector -> Vector2f
74 * get rid of global SDL_Screen* screen variable
76 * identify all global variables and make them ugly (g_ or globals::)
78 * get rid of SCREEN_WIDTH/SCREEN_HEIGHT
80 * is version.h actually needed?
82 * resolution menu entry moves the wrong way around
84 * having dictionary_manager in Lisp is extremely ugly
86 * enforce proper naming of files to match their class
88 * get rid of NDEBUG and conditional compilation, these should be
89 reserved for a few tiny cases, not spread all over the code
91 * split particlesystem_interactive
93 * Renderer::apply_config() needs to handle fullscreen switching
95 * collect all manager classe into globals.hpp
97 * more moving directories around?
110 for generic squirrel code
115 for scripting wrapper code
119 * implement PNG screenshot
121 * GL_ARB_texture_non_power_of_two returns 1 on MatroxG450, while it
122 returns "Missing" in glewinfo, something wrong
124 * having hitbox in Sprite is fugly
128 * implement surface and/or sprite scaling (MipMaps?)
130 * add code that compares the last Log line with the current, if they
131 are the same reject them and just output something like:
133 * last line has been repeated X times
135 * file naming is inconsistent: some times we use '_' to separate
136 words, sometimes we don't
138 * implement: http://standards.freedesktop.org/menu-spec/menu-spec-latest.html
140 * workaround for Ubuntu pulseaudio/OpenAL brokeness:
145 * peaking up/down doesn't work properly
147 * peaking left/right should make Tux look into that direction (up/down to, needs new sprites)
149 * add pipe graphics that makes a 90 degree turn
151 * keep possible future SDL1.3 upgrade in mind
153 * cleanup scripting interface
155 * remove cloud tiles, replace with decal
157 * option menu has text overlap in "aspect ratio"
159 * jumping up from an enemy doesn't make a sound
161 * add support for automatic scrolling backgrounds
163 * add direct reading of Vector2f
165 * replace bell with 'reset block', that starts to glow once bumped into
169 * refactor Camera code, break ugly long functions into pieces and such
171 * allow fully custom magnification levels from command line (maybe GUI
172 do if there is a proper/easy way to let the user enter numbers)
173 (--magnification or -g WIDTHxHEIGHT:ASPECTX:ASPECTY@MAGNIFICATION)
175 Scenegraph and Physics Engine Restructuring
176 ===========================================
178 * random idea to restructure engine stuff (might lead to nicer code
179 and easier scriptability and a need to rewrite lots of stuff...):
181 class SomeBadGuy : public PhysicsCallbackListener // or use boost::function
188 SomeBadGuy(Engine& engine)
190 box = engine.physics().create_box(Rectf(0,0,32,32));
191 box->register_listener(this);
192 sprite = engine.graphics().create_and_add_sprite("Foobar");
195 void update(float delta)
197 // not much to do, as most stuff is done internally in the engine
200 sprite->replace_with("Foobar_dead");
205 sprite->set_pos(box->get_pos());
209 // no more draw(), done by the scene graph
211 void on_collision(CollisionData data)
217 Subversion->Git/Mercurial/Bzr Move
218 ==================================
220 * right now a switch doesn't seem to be worth it
222 * core issue right now isn't SVN, but old SVN version on lethargik.org
223 (lacks merge tracking and issues with viewvc)
225 * cleanup SVN to make import into other version control systems possible:
227 - Should we merge trunk/supertux-milestone1 and trunk/supertux when switching to Git/Hg/...?
229 Mistakes: incorrect branch creation: r5201-5207
232 tags/supertux # unknown
238 branches/cobble # unknown
239 branches/milestone1 # unknown
240 branches/new-collision-detection # unknown
241 branches/README # documentation that will be lost in conversion
242 branches/supertux # unknown
243 branches/supertux_0_1_1_branch
244 branches/supertux-box2d # mathnerd (trash)
245 branches/supertux-editor-newdrawing # editor
246 branches/supertux-editor-newdrawing2 # editor
247 branches/supertux-milestone1-olpc # supertux-milestone1
248 branches/supertux-milestone2-grumbel # supertux
249 branches/supertux-nogl # supertux(?)
250 branches/supertux-sharp # another supertux editor
251 branches/unison-video # ???
252 branches/vendor # ??? CVS crap
254 trunk/cobble # some editor?
255 trunk/CVSROOT # ??? CVS crap
256 trunk/htdocs # htdocs
262 trunk/supertux-editor
263 trunk/supertux-milestone1
264 trunk/supertux-portable
272 * lack of sparse/narrow/shallow checkout, this means initial checkout
273 will be 200MB instead of 100MB
275 * no free hoster that allows >1GB repositories (haven't checked all,
276 but those I did came out way short) -> could use lethargik.org
278 * some free hosters that might allow >1GB repositories don't allow
279 having multiple repositories
281 * git submodule doesn't seem to be quite ready to replace our
282 trunk/supertux, trunk/supertux-editor, trunk/media/, ... layout as
283 it for example doesn't support automatic tracking of HEAD from the
284 remote repositories, it also feels rather hacky and not properly
287 * lack of metadata versioning, if you delete a branch in git that you
288 haven't merged, then its gone after the next gc/repack (+ two weeks
289 time limit it seems), in SVN on the other side you can checkout the
290 way the tree was at a specific date, its impossible to lose history
291 unless you hack the repository
296 Committed revision 5727
297 Committed revision 5728
298 Committed revision 5729
299 Committed revision 5730
300 Traceback (most recent call last):
301 File "./svn2bzr.py", line 194, in <module>
303 File "./svn2bzr.py", line 187, in main
305 File "./svn2bzr.py", line 88, in svn2bzr
307 File "/mnt/bzr/svn2bzr/branchcreator.py", line 622, in run
308 entries = self.filter_entries(entries)
309 File "/mnt/bzr/svn2bzr/branchcreator.py", line 671, in filter_entries
310 entries = self.filter_moves(entries)
311 File "/mnt/bzr/svn2bzr/branchcreator.py", line 727, in filter_moves
312 entries = self.filter_simult_fren_dirmove(entries)
313 File "/mnt/bzr/svn2bzr/branchcreator.py", line 784, in filter_simult_fren_dirmove
314 newfname = svnrelpath(newdpth, newfpth)
315 File "/mnt/bzr/svn2bzr/branchcreator.py", line 60, in svnrelpath
316 raise errors.PathNotChild(path, base)
317 bzrlib.errors.PathNotChild: Path "trunk/media/images/creatures/mr_cherry/cherrybomb.xcf" is not a child of path "trunk/media/images/creatures/mr_bomb"
322 * calculate the size of an background image that should fill the screen:
324 image_size = (1 - parallax_speed) * screen_size + level_size * parallax_speed