TODO.wiki
changeset 303 b281fa4ed31f
parent 251 103e54e77c6f
child 304 e0da7bf566b6
equal deleted inserted replaced
302:330fd49a0af3 303:b281fa4ed31f
     4 = Introduction =
     4 = Introduction =
     5 
     5 
     6 Welcome! If you are reading this page you might be wondering how you can help the Hedgewars project! Fear no more, we've set up a good list of ideas that you might tackle while getting to know the sources!
     6 Welcome! If you are reading this page you might be wondering how you can help the Hedgewars project! Fear no more, we've set up a good list of ideas that you might tackle while getting to know the sources!
     7 
     7 
     8 As always, we'll be glad to help you in this quest! Just join our IRC channel and ask the devs directly! The possible ideas are divided by category and some might be easier than others: just pick the one you feel most confident with.
     8 As always, we'll be glad to help you in this quest! Just join our IRC channel and ask the devs directly! The possible ideas are divided by category and some might be easier than others: just pick the one you feel most confident with.
       
     9 
       
    10 = Easy Hacks =
       
    11 
       
    12 Just want to get your hands dirty? Pick one of your choise!
       
    13 
       
    14   * Perform some code cleanup, engine and frontend really need some! Grep for TODO and FIXME and you'll find plenty of examples. File loading, image flag handling and various little improvements just wait for you.
       
    15   * Make our AI use any weapon of your choice. Check out the uAI*.pas files and see how the current weapons are handled.
       
    16   * Write a simple shell script (bash, ruby, perl, python, awk...) to update the localization strings for iOS and propagate the diff to all the localized files. This task doesn't require coding or having an i-Device, just basic shell scripting.
       
    17   * Make a cross-platform tool (for instance a script) that identifies new phrases in our mission, traning and gameplay scripts and adds them (marked untranslated) into our lua locaization files.
       
    18   * Drop a shadow effect to every widget in our frontend. This will help you: http://doc.qt.nokia.com/stable/qgraphicsdropshadoweffect.html
       
    19   * Run valgrind on engine, report the leaderboard of most used functions and optimise them so that performance increases.
       
    20   * Use the Qt macro QtPrintable everywhere instead of looping through various string methods.
       
    21   * Document compiler flags: just add a little comment near each flag explaining its use.
       
    22   * Document video flags, in video recording section.
       
    23 
       
    24 
       
    25 = Code =
       
    26 
       
    27 For those not afraid of the dark, dive in and tackle a complex project!
       
    28 
       
    29 == AI ==
       
    30   * Make our AI use of the rope weapon to move and reach better positioning before firing.
       
    31   * Make our AI use any item of your choice, such as when to use Rope and other utilities?
       
    32 
       
    33 
       
    34 == Tools ==
       
    35   * Refactor the frontend networking layer into library calls from hwengine, in a similar fashion to what's done on iOS and Android, using QT framebuffers.
       
    36   * Create an easy-to-use theme editor, outlining all the necessary files for our themes.
       
    37   * Implement an handicap system allowing for increased difficulty on some teams instead of on the whole match.
       
    38   * If building server fails, try running the Cabal dependencies first.
       
    39   * Allow themes to have more than one music file.
       
    40 
       
    41 
       
    42 == GUI improvements ==
       
    43   * Enable private messages in our lobby.
       
    44   * Allow kicking with reason.
       
    45   * Modify the drawn maps feature so that users can see a preview of what the admin is drawing.
       
    46   * Make the preferences that are modifiable from engine (eg. volume) update the ones specified in the frontend, using a new network message.
       
    47   * Rework the draw-map functions, adding different brush sizes, brush types and something new.
       
    48   * Enable some commands while in frontend: for example /leave ( = /part  - for leaving room), /quit (disconnects from server), /exit (closes hedgewars), /addFriend, /removeFriend, /ignore, /unignore.
       
    49   * Add checkboxes for selecting the best rendering mode in addition to the Quality slider.
       
    50   * Lazy load previews, speed up frontend launch and compute previews only when necessary.
       
    51   * Rip out Fort mode, it's a game of its own and shouldn't be tied to the team preferences.
       
    52   * When someone highlights you in the lobby, make a little sound 'ping' you.
       
    53 
       
    54 
       
    55 == Graphics ==
       
    56   * Make Hedgewars compatible with SDL2: code compiles and launches fine but we have problems for input, due to the frontend/engine interaction.
       
    57   * Set up a wifi protocol so that tablets can draw maps and send it to the drawn maps of Hedgewars.
       
    58   ° Select the stereo renderer at runtime, either with a keybind or with a menu
       
    59 
       
    60 
       
    61 == Engine ==
       
    62   * Make hedgehogs without a hat get special hats if there is a special occasion such as Christmas, Hedgewars birthday and so on.
       
    63   * Implement construction mode. This page http://hedgewars.org/node/1269 contains a general description of what we mean but you are allowed to improve or modify our concept.
       
    64   * Allow participants in a game to view weapon sets and schemes before starting the game. This task could be carried out by showing an overlay window when mouse is over the scheme or weapon entries.
       
    65   * Change the loading screen to show participating teams/players (and maybe even all the hogs if space is available
       
    66   * Add the ability for themes to have stars high above the ground (comparable to clouds).
       
    67   * Implement a better, faster land generation: for more details, visit http://accidentalnoise.sourceforge.net/minecraftworlds.html
       
    68   * Sometimes you exit the game for a mistake and that's sad! Add a quick resume button to the game configuration for both local and network games.
       
    69   * Allow for flipped maps. Play with gravity woooo
       
    70 
       
    71 
       
    72 == Mobile == 
       
    73   * Implement preferences/options in the Android port, basically allow the existing preferences options from the desktop version to the port using Android shared preferences.
       
    74   * Better integrate CMake with the Android build, instead of using the autotools version
       
    75 
     9 
    76 
    10 = Documentation =
    77 = Documentation =
    11 
    78 
    12 == Doxygen ==
    79 == Doxygen ==
    13 
    80 
    21   * Document the interaction of engine/frontend/server network protocol
    88   * Document the interaction of engine/frontend/server network protocol
    22   * Document how the engine launches a game, from setting up the window, to updating the opengl renderer, from loading up contents, to cleaning up memory.
    89   * Document how the engine launches a game, from setting up the window, to updating the opengl renderer, from loading up contents, to cleaning up memory.
    23   * Document the format of the demo and save files.
    90   * Document the format of the demo and save files.
    24 
    91 
    25 
    92 
    26 = Code =
       
    27 
       
    28 == AI ==
       
    29   * Make our AI use of the rope weapon to move and reach better positioning before firing.
       
    30   * Make our AI use any weapon of your choice.
       
    31 
       
    32 
       
    33 == Tools ==
       
    34   * Refactor the frontend networking layer into library calls from hwengine, in a similar fashion to what's done on iOS and Android, using QT framebuffers.
       
    35   * Write a simple shell script (bash, ruby, perl, python, awk...) to update the localization strings for iOS and propagate the diff to all the localized files. This task doesn't require coding or having an i-Device, just basic shell scripting.
       
    36   * Create an easy-to-use theme editor, outlining all the necessary files for our themes.
       
    37   * Make a cross-platform tool (for instance a script) that identifies new phrases in our mission, traning and gameplay scripts and adds them (marked untranslated) into our lua locaization files.
       
    38   * Update and document the command line arguments parsing.
       
    39   * Implement an handicap system allowing for increased difficulty on some teams instead of on the whole match.
       
    40 
       
    41 
       
    42 == GUI improvements ==
       
    43   * Enable private messages in our server.
       
    44   * Allow kicking with reason.
       
    45   * Modify the drawn maps feature so that users can see a preview of what the admin is drawing.
       
    46   * Rework the hat selection for hogs.
       
    47   * Make the preferences that are modifiable from engine (eg. volume) update the ones specified in the frontend, using a new network message.
       
    48   * Rework the draw-map functions, adding different brush sizes, brush types and something new.
       
    49   * Drop a shadow effect to every widget in our frontend. This will help you: http://doc.qt.nokia.com/stable/qgraphicsdropshadoweffect.html
       
    50   * Rework the game map section (eg. instead of using a dropdown menu, use standard push buttons).
       
    51   * Create an advanced settings page, where to specify different screen resolution for windowed and fullscreen mode, different audio preferences, different quality configuration and so on.
       
    52   * Enable some commands while in frontend: for example /leave ( = /part  - for leaving room), /quit (disconnects from server), /exit (closes hedgewars), /addFriend, /removeFriend, /ignore, /unignore.
       
    53 
       
    54 == Graphics ==
       
    55   * Make Hedgewars compatible with SDL-1.3: code compiles and launches fine but we have problems for input, due to the frontend/engine interaction.
       
    56   * Set up a wifi protocol so that tablets can draw maps and send it to the drawn maps of Hedgewars.
       
    57 
       
    58 
       
    59 == Engine ==
       
    60   * Make hedgehogs without a hat get special hats if there currently is a special occasion such as Christmas.
       
    61   * Implement construction mode; this page http://hedgewars.org/node/1269 contains a general description of what we mean but you are allowed to improve or modify our concept.
       
    62 
       
    63   * Allow participants in a game to view weapon sets and schemes before starting the game. This task could be carried out by showing an overlay window when mouse is over the scheme or weapon entries.
       
    64   * Change the loading screen to show participating teams/players (and maybe even all the hogs if space is available
       
    65   * Add the ability for themes to have stars high above the ground (comparable to clouds).
       
    66   * Perform some engine cleanup, expecially in file loading, image flag handling and various TODOs and FIXMEs.
       
    67   * Implement a better, faster land generation: for more details, visit http://accidentalnoise.sourceforge.net/minecraftworlds.html
       
    68   * Sometimes you exit the game for a mistake and that's sad! Add a quick resume button to the game configuration for both local and network games.
       
    69   * Enable some commands while in engine chat, for example /quit to exit (you may want to just stop the game brutally with chForceQuit), /fullscreen to set the max window dimensions, /pause to pause the game, /bind for binding keys, /finish which would just have the game end by teleporting all hedgehogs out, then showing statistics (see chFinish).
       
    70   * Allow for flipped maps.
       
    71 
       
    72 
       
    73 == Mobile == 
       
    74   * Implement preferences/options in the Android port, basically allow the existing preferences options from the desktop version to the port using Android shared preferences.
       
    75 
       
    76 
       
    77 = Q/A =
    93 = Q/A =
    78 
    94 
    79 == Testing framework ==
    95 == Testing framework ==
    80   * Add an expandable testing module so that we can trigger main server functions and check their return values.
    96   * Add an expandable testing module so that we can trigger main server functions and check their return values.
    81   * Add an expandable testing module so that we can trigger main frontend functions and check their return values.
    97   * Add an expandable testing module so that we can trigger main frontend functions and check their return values.
    82   * Add an expandable testing module so that we can trigger main engine functions and check their return values.
    98   * Add an expandable testing module so that we can trigger main engine functions and check their return values.
    83 
    99 
    84 == Other tests ==
   100 == Other tests ==
    85   * Run valgrind on engine, report the leaderboard of most used functions and optimise them so that performance increases.
       
    86   * Unify the translation files in something more usable, reducing the number of files and the repeated phrases.
   101   * Unify the translation files in something more usable, reducing the number of files and the repeated phrases.
       
   102 
    87 
   103 
    88 = Translation =
   104 = Translation =
    89 
   105 
    90 Pick a language of your choise! There is certainly need of an update or a revision or even a completely new language.
   106 Pick a language of your choice! There is certainly need of an update or a revision or even a completely new language.
    91 
   107 
    92 Here is the list of english files that contain a translation; be sure to check whether some work has been done, either by reading the file or by checking the same file with your language code instead of the English one:
   108 Here is the list of English files that contain a translation; be sure to check whether some work has been done, either by reading the file or by checking the same file with your language code instead of the English one:
    93 
   109 
    94   * http://hedgewars.googlecode.com/hg/share/hedgewars/Data/Locale/hedgewars_en.ts
   110   * http://hedgewars.googlecode.com/hg/share/hedgewars/Data/Locale/hedgewars_en.ts
    95   * http://hedgewars.googlecode.com/hg/share/hedgewars/Data/Locale/en.txt
   111   * http://hedgewars.googlecode.com/hg/share/hedgewars/Data/Locale/en.txt
    96   * http://hedgewars.googlecode.com/hg/misc/hedgewars.desktop
   112   * http://hedgewars.googlecode.com/hg/misc/hedgewars.desktop
    97   * http://hedgewars.googlecode.com/hg/share/hedgewars/Data/Locale/missions_en.txt
   113   * http://hedgewars.googlecode.com/hg/share/hedgewars/Data/Locale/missions_en.txt
   105   * http://hedgewars.googlecode.com/hg/project_files/HedgewarsMobile/Locale/hw-desc_en.txt
   121   * http://hedgewars.googlecode.com/hg/project_files/HedgewarsMobile/Locale/hw-desc_en.txt
   106 
   122 
   107 
   123 
   108 = Contact =
   124 = Contact =
   109 
   125 
   110 The best way to get in touch with the devs is to join our IRC on Freenode (#hedgewars) and to interact with everyone there. Please be patient as not always there are dicussions going on there.
   126 The best way to get in touch with the devs is to join our IRC on Freenode (#hedgewars) and to interact with everyone there. Please be patient as not always there are discussions going on there.