GSoC ideas 2013

Contents

NOTE: This is the outdated list of ideas for GSoC 2013, and only left here for historical reasons

This is a list of suggested projects for GSoC students (click here to go back to the overview page). Obviously we won't be able to support that many projects. The actual projects we will select will depend on the student's proposals, which mentors are doing what (to avoid having too much work for a mentor), and also what features are most important for STK. Please discuss your proposal with us first. Note that while it is not a requirement, we would certainly like to see a patch from you first (see Code and Tickets section of the overview).

Networking Lobby

As preparation for an online mode we need a lobby. While of course the main functionality of the lobby will be to enable online races against other players, online racing is (likely) way beyond the scope of this project in GSoC. But the lobby should have some additional benefits to users even without online racing. More details can be found on our lobby page.

Prerequisites

The lobby will affect various parts of the SuperTuxKart source code (e.g. racing code to determine achievements, managing ghost races, ...), but also adds new features, which needs our GUI code. Additionally the design must be well thought through to be extendable (for when we add online multiplayer using the lobby). So very good programming skills, ideally in C++, or at least C are necessary. It is also necessary to implement the server side, which requires php/mysql knowledge (the only available services we can run on the tuxfamily servers, which we are using). For testing, the student should be able to setup his on local server (source code of our server is in our svn repository). The client-side can be done with libcurl to communicate with the server (though other mechanism can be suggested), so while no network programming itself is necessary (sockets), some basic knowledge about networking is good to have.

Mentor


Battle Mode AI

At this stage the computer can only do simple lap-based races. STK already supports different game modes, especially a battle mode. Goal of this task is to implement an artificial intelligence that allows computer controlled karts to take part in battle modes. More details can be found on our battle AI page.

Prerequisites

Strong C++ programming, AI techniques, path finding

Mentor


Rewinding SuperTuxKart

For online racing we need to be able to rewind a race to a previous state and replay the game from there (see our details about networking page for details why). This project will implement a state stack that keeps the state of a race, i.e. all important information of all karts, track status etc. to allow a race to rewind a certain number of seconds and restart from there, giving identical results. A more detailed description can be found here.

Prerequisites

Strong C++ programming, ability to understand a somewhat complex and large code base.

Mentor


Improve in-game add-ons interface

The current in-game addons interface is a flat list, with no screenshots, no search or filtering capabilities, and limited sorting. Text is also used for many pieces of information that could be visual (for instance, instead of writing "Rating: 4/5", we could display 4 stars). This project will implement a new more user-friendly interface, with more screenshots and images and less text, and better search capabilities.

SuperTuxKart uses its own GUI engine, based on the irrlicht widget set and HTML-like text files describing the layout. It may be necessary to extend the STK GUI engine to produce the desired results

Prerequisites

Intermediate C++ programming, GUI programming experience an asset

Mentor


Improving graphics

STK graphics can be improved in a variety of ways, generally involving shaders programming. This task also includes improvement of the infrastructure/shader support in STK. The full details are on the separate graphical improvement page.

Prerequisites

Strong C++ programming, GLSL, graphics programming

Mentor


Crash Reporting System

Let normal users (without installing additional software) be able to submit a useful stack trace when a crash happens. Existing libraries can be used for this, for example breakpad. Main issue is that in binaries we distribute no symbol information is available anymore (partly to make the executables smaller, partly because we are not allowed to distribute debug executables), so a simple stack trace in the application is not easily possible.

It would need some implementation work in the GUI as well, since we (probably) can't handle automatic submission of very crash, so the user should be presented with the option to submit the traces, with an option for additional comments (e.g. describing what was happening when the crash happened). If possible it should include additional information from STK, esp. a history of what happened in the race in the last few frames (history and/or replay information are already collected in STK).

One possible idea would be that after a crash stk is restarted with a special command line option from a script, which would then only report that there as a script. This way we don't need a separate gui lib, and we avoid any problems if actually the gui should cause the crash in the first place .

Prerequisites

Some C++ programming, cross-platform experience (Windows, Linux, Mac OSX) - though most of this can be hidden in a properly selected library to handle platform-specific stack trace creation.

Mentor


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).

Prerequisites

Some C++ programming, experience with video creation (existing libraries can of course be used).

Mentor


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


Split Karts and Characters

Karts and characters are combined into one model, which means it is not possible to have a different kart for one character (which would mean more variety for the game), or perhaps add a team mode in which each time uses the same kart. Being able to easily reuse existing karts would also mean that it is less work to create a new driver.

In this project the kart and the characters should be divided into two different models, and allow to select one from a set of karts for the character. The main problem is how to synchronise the animations: the karts might have some animations (e.g. turning steering wheel, or the chassis of model being pushed down on one side). It might require to standardise the location of the steering wheel to make this easier. A discussion about the potential problems is in our forum.

Prerequisites

C++ programming, 3d graphics understanding, some blender skills.

Mentor

Retrieved from "http://supertuxkart.sourceforge.net/GSoC_ideas_2013"

User Tools