GSoC topics 2014

We have been accepted as a mentoring organisation for the Google Summer of Code. We can't be sure how many slots we will get, but last year we mentored 3 students who all successfully completed the program and we hope to get at least the same amount of students this year.

The actual projects we will select will depend on the students' proposals, the mentors' availability (to avoid having too much work for one mentor), and also what features benefit STK the most. Please discuss your ideas with us on IRC and try to contribute beforehand so that we can get an idea of your skills. The latter is not strictly necessary but it might help us in our selection process.

More information about how to get started as a student can be found at our GSoC overview page.

Scripting engine

SuperTuxKart race tracks are currently either static, or feature looping animations. The goal of scripting is to expose track object control and manipulation capabilities to a scripting language, so that each track may specify custom interactions, as described in more detail on our Scripting Engine page.

Prerequisites

C++ programming

experience in a scripting language

notion of how scripting works

Mentor

Marianne Gagnon (auria)

Fallback : Joerg Henrichs (hiker)

Online User Administration

SuperTuxKart uses a server to provide several online features. At this stage the server is used to manage addons, but it is expected in the future to also take over a role in online multiplayer. This project is about adding missing features to the server, like simple bug reports for addons (e.g. the original designer of a track could be informed about problems, and other users could be warned that a track does not work properly). We also need a way to moderate our online users (e.g. prevent offensive names from being used, allow different roles for different users, ...). Details can be found here.

Prerequisites

PHP(OO)

CSS and HTML

(My)SQL

Familiar with C++ (Only a little bit will have to be done in C++.)

Mentor

Glenn De Jonghe (unitraxx)

Fallback: Stephen Just

GUI Improvements

SuperTuxKart uses a self written GUI engine that is based on the Irrlicht's GUI elements. Nevertheless the GUI itself has quite a few shortcomings. This project is about fixing existing GUI issues, and improving the look of the menus. This task will require you to implement additional widgets, and (re-)designing the GUI flow and look of the menus. More details about this task can be found on the GSoC GUI page.

Prerequisites

C++ programming

Experience with GUI programming may help

Mentor

Marianne Gagnon (auria)

Glenn De Jonghe (unitraxx)

Fallback : Joerg Henrichs (hiker)

Physics and Game Play Improvements

The physics of SuperTuxKart are very simple at this stage, and some wanted features of the game can not be implemented at this time. Some examples:

Properly using motor bikes (at this stage all bikes are internally karts, i.e. no real leaning in curves).

Corkscrew tracks. Some preliminary support for corkscrew tracks is implemented in STK (i.e. the gravity of the karts can be changed, allowing karts to drive on the walls or ceiling), but many details are missing to actually use this feature.

Potentially some GUI coding might be required (e.g. different kart physics need to be shown in the kart selection screen).

Mentor

Joerg Henrichs (hiker)

Marianne Gagnon (auria)

Track Editor

A long outstanding problem of SuperTuxKart is the fact that good skills with a 3d modelling software (best blender) is necessary in order to create tracks. This means that many people interested in designing tracks are facing a huge hurdle. Additionally, even for experienced modeller it takes a lot of time to create a track.

Other ideas

GSoC Addon Dependencies

Currently, when an artist creates an add-on package (a kart, track or battle arena), their contribution is completely encapsulated within a single archive file for download. This presents a few problems:

Assets may be stored with multiple add-ons

Users must download the same files multiple times

Duplicate data must be stored on the server multiple times

This is particularly prevalent with music that artists include with their track or battle arena packages. A dozen artists may all include the same music track, with a size of 4MB, and we would have to store all dozen or more copies independently. In order to resolve this problem, a dependency system could be implemented for add-ons. A more detailed explanation on this topic can be found on the Addon Dependencies page.

Prerequisites

PHP(OO)

CSS/HTML

C++

(My)SQL

Mentor

Glenn De Jonghe (unitraxx)

Fallback: Stephen Just

Unit Testing

SuperTuxKart does not have any kind of unit testing implemented, at this stage it relies on tester to report any bugs. This project is about adding a unit test framework to STK - ideally for both STK and the addon/online server. More details on the GSoC Unit Testing page.

Race History Verifier

It is very easy to modify the kart characteristics in SuperTuxKart. This makes it difficult to have reliable online highscores. We intend to use the replay feature to help with that: any highscore will need to be submitted with a replay.

In this project the student will try to automatically verify if a given replay is based on an unmodified set of kart parameters. The verification process could look out for excessive acceleration, high speeds from zipper that last too long, too much nitro for a track etc.

Prerequisites

Some C++ programming.

Mentor

Joerg Henrichs (hiker)

Fallback : Marianne Gagnon (auria)

Allow to take a video in game

Many people want to create videos of a SuperTuxKart race. Be it because they want to report a bug, show off a new feature, or just to post it on youtube. To do this atm additional software needs to be installed, and very often there are problems (performance, sound missing, ...). This project is about adding a built-in video recording feature. Anyone would just need to press a start and stop button, and a video is automatically created (similar to the already implemented snapshot feature).

In order to get good performance, you may need to compress frames on the GPU before fetching them. Using the hardware encoding support in latest graphics cards would also be acceptable, but a solution that works on a wider range would be preferred.

Prerequisites

Some C++ programming

experience with video creation (existing libraries can of course be used).