Google Code-In 2011 Tasks

Google Code-In Challenge!

Update: most of the tasks have been edited and gathered here:

Here is our list of tasks for you! More than 80 tasks are ready with various level of difficulty. You just need to pick one, hang around in IRC* and get it done! It's truly as easy as it sounds.

* Devs are not continuously active in IRC, signing on for 10 minutes then quitting after not immediately getting a response is just frustrating to those in channel.

The list is sorted by difficulty which generally means around 20 hours of work for easy tasks, 30-50 for medium, more than 60 for hard tasks; certain tasks are marked as more difficult than others either because of their length or the actual difficulty in carrying them out.

Italics in the description indicate the most promiment topics the task will be about, whose general knowledge is appreciated (but not required).


Code - Tasks related to writing or refactoring code

  1. preferences sync - easy: freepascal, c++, qt programming

    Make the preferences that are modifiable from engine (eg. volume) update the ones specified in the frontend, using a new network message.

  2. eyecandy - easy: c++, qt programming

    Everybody likes eyecandy no? so let's add transition effects when transitioning between menus.

  3. save me - easy: freepascal, objc programming

    Turn savefiles compatible between iOS and desktop format.

  4. cleanup - easy: freepascal programming

    Perform a little code cleanup, expecially in file loading, image flag handling and various TODOs and FIXMEs.

  5. feedback is important - easy: c++, qt programming

    Add a quick feedback page from the main menu, so that we are able to get bugs and feature requests more easily.

  6. building together - medium: freepascal programming

    Implement construction mode; contains a general description of what we mean but you are allowed to improve or modify our concept.

  7. clever - medium: freepascal programming

    Make our AI use of the rope weapon to move and reach better positioning before firing.

  8. resume - medium: freepascal, haskell programming

    Sometimes you exit the game by mistake and that's sad! Add a quick resume button to the game configuration for both local and network games.

  9. skip - medium: freepascal programming

    Find a way to speed up saves loading and network synch even more.

  10. android preferences - medium: android, java programming

    Implement preferences/options in the Android port, basically allow the existing preferences options from the desktop version to the port using Android's shared preferences.

  11. ammomenu love - hard: freepascal, opengl programming

    Refactor the ammomenu in a sane way, separating the visual and store logic, allowing dynamic size, optimizing for performance, drawing in a single surface.

  12. single process - hard: cmake, c++, qt programming

    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.

  13. video tube - hard: c++, qt, freepascal programming

    Create a conversion tool callable by the frontend to convert our demo files to standard video files.

  14. land generation - hard: freepascal programming

    Implement a better, faster land generation: for more details, visit


Documentation - Tasks related to creating/editing documents

  1. lua wiki - easy: lua

    Update the wiki with lua API desciption.

  2. frontend.doc - easy: c++, doxygen

    Finish the doxyfile documentation of the QT frontend.

  3. config fields - easy

    Outline the various fields of our desktop configuration data (settings, teams, schemes, weapons, ...).

  4. details, details - medium

    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.

  5. engine.doc - medium: freepascal, doxygen

    Add doxygen documentation to engine sources.

  6. android.doc - medium: java, doxygen

    Add doxyfile to android port and add documentation of the java sources.

  7. protocol epiphany - medium: freepascal, c++, haskell

    Document the interaction of engine/frontend/server network protocol.

  8. design - medium

    Lay down the rules of our cartoony graphical style.

  9. ios.doc - hard: objc, doxygen

    Add doxyfile to the ios frontend and add documentation of the objc sources.

  10. server.doc - hard: haskell, doxygen

    Add doxyfile to server and add documentation of the haskell sources.


Outreach - Tasks related to community management and outreach/marketing

  1. review - easy

    Get us reviewed by a popular game website. No, blogs don't count.

  2. clark kent - easy

    Interview the devs and create a bio page for our website.

  3. reviews - easy

    Fetch a list of review from the web and prepare a webpage about them.

  4. flexibility - easy: html, js

    Make our website more compatible with small screens such as those found on mobile devices.

  5. hunter - easy

    Scavenge our community forum and add the best community created content to be added in next release.

  6. traffic - easy

    Our official mailing list is rather low traffic, set up a way to sync blogposts and/or forum with the mailing list.

  7. wiki - medium

    Update our wiki page with a nicer version history, supported platforms, more information in general, and some better content.

  8. highlight - medium: html, js

    Edit Drupal template to highlight more frequently used options, making it more accessible.

  9. shine our web - medium: html, js

    Make our website more visually appealing, adding nice icon to the Download page, using a lighter theme, reorganizing the button labels, and so on...

  10. spielberg inside - medium

    Create a video trailer for 0.9.17 to be added here where all the best Hedgewars trailer are shown.

  11. pull a few strings - hard

    Get Notch tweet our game!

  12. vaporware - hard

    Get us on Steam!

  13. Android market page + loading screens - medium

    The current market screen looks plain and dull ( To attract more people create nice graphics for that page, a new launcher icon, and perhaps some loading screens all in the same style


Quality Assurance - Tasks related to testing and ensuring code is of high quality

  1. buildbot: easy

    Prepare a buildbot with CDash or some other solution so that we can provide nightly builds for all major platforms to our testers.

  2. compile time: [easy[/u] - cmake

    Define TheBestâ„¢ set of compiler switches that could help us identifying bugs sooner, both for engine and fronted.

  3. recruits: easy

    We need more early testers to catch on bugs! They need to be patient with downloading a lot of stuff, report bugs and willing to compile the sources from time to time.

  4. frontend test framework: easy - qt, c++

    Add an expandable testing module so that we can trigger main frontend functions and check their return value, enabling us to identify GUI bugs.

  5. engine test framework: medium - freepascal

    Add an expandable testing module so that we can trigger main engine functions and check their return value, enabling us to identify in game bugs.

  6. verified 100: medium

    Take the first 100 bugreports and verify that they have been actually fixed.

  7. verified 200: medium

    Take the bugreports 101-200 and verify that they have been actually fixed.

  8. hunter, again: medium

    Play the game like there was no tomorrow and report at least 5 *new* *real* bugs.

  9. server test framework: hard - haskell

    Add an expandable testing module so that we can trigger main server functions and check their return value, enabling us to identify network bugs.

  10. waterfall: hard

    Prepare a waterfall (eg. ) so that we are able to catch warning and compile failures early on.


Research - Tasks related to studying a problem and recommending solutions

  1. OpenGL ES 2.0 - easy: opengl programming

    Outline the missing parts of our renderer for writing an ogles2.0 version.

  2. Pandora, PSP, PSVita - easy

    what are the requirements for a pandora port of our game? Is it just a dream or is it a likely reality? What about Sony PSP or PSVita? Are they suited to run Hedgewars?

  3. one format to rule all formats - medium

    Currently we store our files with ini on desktop, plist on ios and xml on android, investigate which format would require less code changes on other platforms and/or find a new format that can be compatible with any system (and provide some code to test it).

  4. Windows and Blackberry phones - medium: c#, java

    What are the requirements for a Windows Phone 7 port of our game? Is it possible to run native code? What options do we have? What about Blackberry devices? If possible provide a sample application.

  5. WebGL - medium: opengl programming

    What are the requirements for a WebGL port of our game? Outline what would need to be added or changed to the sources and what kind of additional software we need.

  6. beat nemo - medium

    How to implement a good handicap system? What options should we enable/disable for pairing n00bs and l33ts?

  7. 3D glasses - hard

    Evaluate the stereoscopic effect of our game and determine if the stereo budget is ok or should be modified in some way.

  8. cloudy - hard

    Inspect the various network sync (cloud-y) options available, either via existing crossplatform libraries or via APIs of every operating system hedgewars runs on.

  9. I feel exposed - hard

    Investigate what options we have about adding an optional secure connection to the server; outline the amount and the type of work to be carried out, theimpact on the server, the performance change in the case of a whole protocol update or only the authentication part.

  10. Nintendo DS and Nintendo Wii - hard

    What are the requirements for a Nintendo DS/3DS port of our game? Is it possible at all? Secondly, what are the requirements for a Wii port of our game? What additional software should be created? If possible provide a sample application.


Training - Tasks related to helping others learn more

  1. cmd.exe - easy

    Create a script for windows build and outline the process.

  2. tutorial - easy: lua

    Create a beginners tutorial mission in lua to be included in our training section: this can involve basic strategy or basic weaponry usage.

  3. help - easy

    Prepare/update a web page of first help embeddable in our game interface.

  4. team guide - easy

    Write a few paragraphs about how to set up a team, explaining how each field impacts the game-

  5. I Really Care - easy

    Explain what IRC is and how people can easily get in touch with us.

  6. scheme guide - easy

    Write a few paragraphs about how to create a new scheme, explaining how each field impacts the game.

  7. one will stand - easy

    Explain how Highlander mode works, with possible strategies and tricks.

  8. tutorial normal - medium: lua

    Create a standard tutorial in lua to be included in our training section: this can involve teaching normal play techniques like ropeing or learning commonly used weapons.

  9. netgame guide - medium

    Write a guide about how to host a game (with LAN and with official server) and outline the various game configuration options.

  10. special specialist - medium

    Detail what the Specialist mission is, what its team members do and how to play best this strategic mode.

  11. update me - hard: c++, qt programming

    Add an update message when new releases are out, so that everyone knows there is a new release.

  12. engine works - hard: freepascal, c++

    Write a guide to the engine mechanics with simple modification examples (adding weapons, schemes, missions and so on).

  13. editor - hard: c++ or html, js, php programming

    Create an easy-to-use theme editor, outlining all the necessary files for our themes.

  14. tutorial advanced - hard: lua

    Create an advanced tutorial mission in lua to be included in our training section: this can involve using advanced techniques like portalling or explaining how to play entire game modes.


Translation - Tasks related to localization

please note: we are accepting a maximum of 2 tasks of translation tasks per applicant. Using automatic translation tools is absolutely not allowed (and may cost your eligibility to participate).

  1. iOS Spanish - hard
  2. iOS French - hard
  3. iOS Italian - hard
  4. iOS German - hard
  5. iOS Polish - hard
  6. Update Desktop Chinese - medium
  7. Update Desktop Japanese - hard
  8. Update Desktop Korean - easy
  9. Lua Korean - easy
  10. Lua Brazilian Portoguese - medium
  11. Lua Chinese - hard

The translation files are divided in three categories


User Interface - Tasks related to user experience research or user interface design and interaction

  1. hatz - easy: qt, c++ programming

    Rework the hat selection for hogs.

  2. touchz - easy

    Investigate other touch screen controls available besides in-game buttons.

  3. pausez - easy

    Investigate how we could safely implement a pause mechanism for network play. Polling, voting, timer: pros and cons.

  4. describez - easy: qt, c++ programming

    Make buttons description of the main buttons interface.

  5. mapz - medium: qt, c++ programming

    Rework the game map section (eg. instead of using a dropdown menu, use standard push buttons).

  6. backz - medium: qt, c++ programing

    Unify the back button functionality, avoid using the save button in the settings page.

  7. buttonz - medium: freepascal programming

    Add in-game buttons for touch screen devices.

  8. netz - medium

    Prepare a GUI design for out connect-to-server page: right now we just have two buttons for LAN and Server, would be nice to have a full configuration with username, password, server selection and so on.

  9. mockupz - medium: android look-and-feel knowledge

    Create mockups for the UI of the android port, in pairs: one for tablets (7-8 inch and up) and one for phones (3-5 inch) making sure to reuse elements between phones and tablets.

  10. drawz - hard: qt, c++ programming

    Rework the draw-map functions, adding different brush sizes, brush types and something new.

  11. advancedz - hard: qt, c++ programming

    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;


User login

Copyright © 2004-2024 Hedgewars Project. All rights reserved. [ contact ]