Google Code-In 2011 Tasks
Google Code-In Challenge!
Update: most of the tasks have been edited and gathered here: http://code.google.com/p/hedgewars/wiki/TODO
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
- 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.
- eyecandy - easy: c++, qt programming
Everybody likes eyecandy no? so let's add transition effects when transitioning between menus.
- save me - easy: freepascal, objc programming
Turn savefiles compatible between iOS and desktop format.
- cleanup - easy: freepascal programming
Perform a little code cleanup, expecially in file loading, image flag handling and various TODOs and FIXMEs.
- 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.
- building together - medium: freepascal programming
Implement construction mode; http://hedgewars.org/node/1269 contains a general description of what we mean but you are allowed to improve or modify our concept.
- clever - medium: freepascal programming
Make our AI use of the rope weapon to move and reach better positioning before firing.
- 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.
- skip - medium: freepascal programming
Find a way to speed up saves loading and network synch even more.
- 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.
- 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.
- 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.
- video tube - hard: c++, qt, freepascal programming
Create a conversion tool callable by the frontend to convert our demo files to standard video files.
- land generation - hard: freepascal programming
Implement a better, faster land generation: for more details, visit http://accidentalnoise.sourceforge.net/minecraftworlds.html
Documentation - Tasks related to creating/editing documents
- lua wiki - easy: lua
Update the wiki with lua API desciption.
- frontend.doc - easy: c++, doxygen
Finish the doxyfile documentation of the QT frontend.
- config fields - easy
Outline the various fields of our desktop configuration data (settings, teams, schemes, weapons, ...).
- 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.
- engine.doc - medium: freepascal, doxygen
Add doxygen documentation to engine sources.
- android.doc - medium: java, doxygen
Add doxyfile to android port and add documentation of the java sources.
- protocol epiphany - medium: freepascal, c++, haskell
Document the interaction of engine/frontend/server network protocol.
- design - medium
Lay down the rules of our cartoony graphical style.
- ios.doc - hard: objc, doxygen
Add doxyfile to the ios frontend and add documentation of the objc sources.
- 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
- review - easy
Get us reviewed by a popular game website. No, blogs don't count.
- clark kent - easy
Interview the devs and create a bio page for our website.
- reviews - easy
Fetch a list of review from the web and prepare a webpage about them.
- flexibility - easy: html, js
Make our website more compatible with small screens such as those found on mobile devices.
- hunter - easy
Scavenge our community forum and add the best community created content to be added in next release.
- traffic - easy
Our official mailing list is rather low traffic, set up a way to sync blogposts and/or forum with the mailing list.
- wiki - medium
Update our wiki page with a nicer version history, supported platforms, more information in general, and some better content.
- highlight - medium: html, js
Edit Drupal template to highlight more frequently used options, making it more accessible.
- 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...
- spielberg inside - medium
Create a video trailer for 0.9.17 to be added here http://www.hedgewars.org/screenshots.html where all the best Hedgewars trailer are shown.
- pull a few strings - hard
Get Notch tweet our game!
- vaporware - hard
Get us on Steam!
- Android market page + loading screens - medium
The current market screen looks plain and dull (https://market.android.com/details?id=org.hedgewars.hedgeroid) 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
- 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.
- compile time: [easy[/u] - cmake
Define TheBestâ„¢ set of compiler switches that could help us identifying bugs sooner, both for engine and fronted.
- 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.
- 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.
- 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.
- verified 100: medium
Take the first 100 bugreports and verify that they have been actually fixed.
- verified 200: medium
Take the bugreports 101-200 and verify that they have been actually fixed.
- hunter, again: medium
Play the game like there was no tomorrow and report at least 5 *new* *real* bugs.
- 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.
- waterfall: hard
Prepare a waterfall (eg. http://buildbot.libsdl.org/waterfall ) so that we are able to catch warning and compile failures early on.
Research - Tasks related to studying a problem and recommending solutions
- OpenGL ES 2.0 - easy: opengl programming
Outline the missing parts of our renderer for writing an ogles2.0 version.
- 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?
- 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).
- 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.
- 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.
- beat nemo - medium
How to implement a good handicap system? What options should we enable/disable for pairing n00bs and l33ts?
- 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.
- 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.
- 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.
- 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
- cmd.exe - easy
Create a script for windows build and outline the process.
- 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.
- help - easy
Prepare/update a web page of first help embeddable in our game interface.
- team guide - easy
Write a few paragraphs about how to set up a team, explaining how each field impacts the game-
- I Really Care - easy
Explain what IRC is and how people can easily get in touch with us.
- scheme guide - easy
Write a few paragraphs about how to create a new scheme, explaining how each field impacts the game.
- one will stand - easy
Explain how Highlander mode works, with possible strategies and tricks.
- 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.
- 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.
- special specialist - medium
Detail what the Specialist mission is, what its team members do and how to play best this strategic mode.
- update me - hard: c++, qt programming
Add an update message when new releases are out, so that everyone knows there is a new release.
- engine works - hard: freepascal, c++
Write a guide to the engine mechanics with simple modification examples (adding weapons, schemes, missions and so on).
- editor - hard: c++ or html, js, php programming
Create an easy-to-use theme editor, outlining all the necessary files for our themes.
- 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).
- iOS Spanish - hard
- iOS French - hard
- iOS Italian - hard
- iOS German - hard
- iOS Polish - hard
- Update Desktop Chinese - medium
- Update Desktop Japanese - hard
- Update Desktop Korean - easy
- Lua Korean - easy
- Lua Brazilian Portoguese - medium
- Lua Chinese - hard
The translation files are divided in three categories
- iOS translations consist of a 500 words description essay plus a few lines of frontend strings;
- Desktop translations consist of editing .ts and .txt locale files for engine and frontend lines;
- lua translations consist of anything else that is not included above.
- http://hedgewars.googlecode.com/hg/misc/hedgewars.desktop
- http://hedgewars.googlecode.com/hg/share/hedgewars/Data/Locale/missions_en.txt
- http://hedgewars.googlecode.com/hg/share/hedgewars/Data/misc/hedgewars-mimeinfo.xml
- http://hedgewars.googlecode.com/hg/share/hedgewars/Data/misc/hwengine.desktop
- http://hedgewars.googlecode.com/hg/share/hedgewars/Data/Locale/stub.lua
User Interface - Tasks related to user experience research or user interface design and interaction
- hatz - easy: qt, c++ programming
Rework the hat selection for hogs.
- touchz - easy
Investigate other touch screen controls available besides in-game buttons.
- pausez - easy
Investigate how we could safely implement a pause mechanism for network play. Polling, voting, timer: pros and cons.
- describez - easy: qt, c++ programming
Make buttons description of the main buttons interface.
- mapz - medium: qt, c++ programming
Rework the game map section (eg. instead of using a dropdown menu, use standard push buttons).
- backz - medium: qt, c++ programing
Unify the back button functionality, avoid using the save button in the settings page.
- buttonz - medium: freepascal programming
Add in-game buttons for touch screen devices.
- 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.
- 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.
- drawz - hard: qt, c++ programming
Rework the draw-map functions, adding different brush sizes, brush types and something new.
- 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;