Tasks for Heroes. If you think something is missing here, please send a note to . * Use the level-loading library in the level editor, so as to get rid of most struct in src/struct.h (and their ugly ATTRIBUTE_PACKED). This require makeing the level editor work with libhlvl (see src/lvl/README for more details). * Add `FIXME: obscure' comments at will, so I know where comments or rewrite is really important. (Actually this can be done by anyone reading the code.) * Check dependencies. Heroes >= 0.11 requires heroes-data >= 1.1, Heroes >= 0.18 requires heroes-data >= 1.4. Heroes will abort with a "cannot open file X" message on error. These is definitely some room for improvement here. * The code is VERY UGLY and needs to be cleaned up. * hedlite.c should be cleaned. * If possible, Get rid of GETWORD, SETWORD and Cie, see src/endian.h. * The default installation path on BeOS should not be /usr/local (?). I need some more input about this. * There are several comments in French. They should be translated. * Check every place were filenames are used, use buffer allocated dynamically. * Split heroes.c * Split hedlite.c * const.[ch] should not exist. * Use {u,s}{8,16,32}_t types where it's important. * __attribute__ ((packed)) is a gcc-isms, something must be done to avoid them. `something' may be using a different level format, in which case the `heroeslvl' above would be helpful. * Add an option that add a new life each time you start a new level. Suggested by Samuel Tardieu (sam@infres.enst.fr). * Programmable vehicles (for CPU controlled ones) would be nice. It would be fun to link with Guile and control the vehicles in scheme. Or in Python. Or in C (using shared libraries like pluggins). * The external editor could be ported too, this would need many many more work. (It's probably easier to rewrite it from scratch or from hedlite.c.) * Network support. * Direct X11 support would be nice. * What is the effect of removing the DMODE_SOFT_MUSIC from MikMod options ? * Would Hermes be faster than LibGGI's crossblit ? * Redesign the way menus are handled internally. * Write assembly routines for stretching code. * Use makeheaders ? (provided I can get in touch with its maintainer) * Load GGI, SDL, and MikMod libraries dymically (i.e. select available library at run-time versus configure-time). This is probably easier to do now, with the new way media libraries are handled. * Proof-read the documentation. * Full screen support with Allegro. Is it possible? * It would be nice to have the argument processing and argument documentation of `heroes' and `heroeslvl' generated automatically from a definition file (well, two definition files, one for each program) using AutoGen. AutoGen ships with a tools called AutoOpts that performs a similar task, but I find the result horrible. Our command line parsing code should follow the Gnits standards and use getopt_long. (Such alternate tool is on the TODO list of AutoGen, so it might be contribued back.) * The end-scroller used to be an end-scroller :) Now it's just a screen that display "THE END". That's not really rewarding for the player. It would be nice to have something more delighting here. * Heroes-data should ships with 100 levels, shouldn't it? (There is only 94 levels, IIRC.) * There are some "extra" levels in heroes/src/extralvl/ on CVS. Do they deserve some packaging? * There are some hq modules packaged in http://heroes.sf.net/dl/misc/ Should they be packaged in a more "official" way? * Some files #include too much headers (for historical reasons), this slows down compilation times. That's quite unrelated to Heroes, but a tool that can figure which #include are superfluous would be appreciated by several people I have talked to. * The "AI", if I may call this "AI" (see `ia_*' functions in heroes.c, but have some aspirin handy) is ABSOLUTELY HORRIBLE. It's using a very stupid and inefficient recursive algorithm. `A*' is not usable as-is with the current path evaluation functions, but maybe these heuristics can be changed too. A better "AI" have been required several times in the comments about Heroes on www.happypenguin.org. * Heroes is relocatable (the manual explains that), but heroeslvl isn't. * The paragraph formater (parafmt.c), has two minor issues: it does not handle a paragraph with leading spaces (i.e. first line is indented) properly, and will probably fail to format a paragraph where one word is larger than one of the line (even if that's not the line the word is finally put on). * Improve the test suite (whatever you think it can mean). * Add more items to this TODO list.