GSoC topics 2014

(GSoC Addon Dependencies)
 
(65 intermediate revisions not shown)
Line 1: Line 1:
-
This is a list of suggested projects for GSoC students (click [[GSoC_overview|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 [[GSoC_overview#Code and tickets|Code and Tickets]] section of the overview).
+
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.
-
== Networking Lobby ==
+
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.  
-
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 [[GSoC_Lobby|lobby page]].
+
-
'''Prerequisites'''
+
More information about how to get started as a student can be found at our [[GSoC_overview|GSoC overview]] page.
-
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'''
+
== Scripting engine ==
-
* Joerg Henrichs (aka hiker)
+
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 [[GSoC_Scripting|Scripting Engine]] page.
-
* Fallback: auria, Stephen
+
-
 
+
-
----
+
-
 
+
-
== 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 [[GSoC_BattleAI|battle AI page]].
+
'''Prerequisites'''
'''Prerequisites'''
-
 
+
* C++ programming
-
Strong C++ programming, AI techniques, path finding
+
* experience in a scripting language
 +
* notion of how scripting works
'''Mentor'''
'''Mentor'''
-
* Joerg Henrichs (aka hiker)
+
* Marianne Gagnon (auria)
-
* Fallback: funto, auria
+
* Fallback : Joerg Henrichs (hiker)
----
----
-
== 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 [[Network_implemetation|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 [[GSoC_rewind|here]].
 
-
'''Prerequisites'''
+
== Online User Administration ==
-
Strong C++ programming, ability to understand a somewhat complex and large code base.
+
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  [[GSoC_2014_Server_Side|here]].
-
'''Mentor'''
 
-
* Joerg Henrichs (aka hiker)
 
-
* Fallback: Funto, auria
 
-
----
+
'''Prerequisites'''
 +
* PHP(OO)
 +
* CSS and HTML
 +
* (My)SQL
 +
* Familiar with C++ (Only a little bit will have to be done in C++.)
-
== Improve in-game add-ons interface ==
+
''' Mentor'''
-
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.
+
* Glenn De Jonghe (unitraxx)
 +
* Fallback: Stephen Just
-
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
+
----
 +
 
 +
== 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|GSoC GUI]] page.
'''Prerequisites'''
'''Prerequisites'''
-
Intermediate C++ programming, GUI programming experience an asset
+
* C++ programming
 +
* Experience with GUI programming may help
'''Mentor'''
'''Mentor'''
* Marianne Gagnon (auria)
* Marianne Gagnon (auria)
-
* Joerg Henrichs (hiker)
+
* Glenn De Jonghe (unitraxx)
 +
* Fallback : Joerg Henrichs (hiker)
----
----
-
== Improving graphics ==
+
== Physics and Game Play Improvements ==
-
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 [[GSoC Graphical Improvements | graphical improvement]] page.
+
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.
 +
* Different kart physics.
 +
More details can be found [[GSoC_Physics|GSoC Physics]] page.
'''Prerequisites'''
'''Prerequisites'''
-
Strong C++ programming, GLSL, graphics programming
+
* Good C++ programming.
 +
* Understanding of physics, potentially experience with bullet physics engine.
 +
* Ability to quickly understand existing code.
 +
* Potentially some GUI coding might be required (e.g. different kart physics need to be shown in the kart selection screen).
 +
 
'''Mentor'''
'''Mentor'''
-
* Marianne Gagnon (aka Auria)
+
* Joerg Henrichs (hiker)
-
* Fallback: funto
+
* Marianne Gagnon (auria)
----
----
-
== Crash Reporting System ==
+
== 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.
-
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 [http://code.google.com/p/google-breakpad/ 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.
+
More details of this project are on our [[GSoC_Track_Editor|GSoC Track Editor]] page.
-
 
+
-
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'''
'''Prerequisites'''
-
 
+
* GUI development
-
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.
+
* C++ or a scripting language
 +
* some blender and 3d modelling experience
 +
* some python experience (to study the current blender track exporter)
'''Mentor'''
'''Mentor'''
 +
* Lauri Kasanen (cand)
* Joerg Henrichs (hiker)
* Joerg Henrichs (hiker)
-
* Lionel Fuentes (funto)  
+
* Fallback: Marianne Gagnon (auria)
----
----
-
==Allow to take a video in game==
+
= Other ideas =
-
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).
+
 
 +
== 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 [[GSoC_Addon_Dependencies | Addon Dependencies]] page.
'''Prerequisites'''
'''Prerequisites'''
 +
* PHP(OO)
 +
* CSS/HTML
 +
* C++
 +
* (My)SQL
-
Some C++ programming, experience with video creation (existing libraries can of course be used).
+
''' 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|GSoC Unit Testing]] page.
 +
 
 +
'''Prerequisites'''
 +
* C++ (for STK unit testing)
 +
* php, mysql (in case of server-side unit testing)
 +
* Unit testing experience, esp. existing frameworks or scripting languages
'''Mentor'''
'''Mentor'''
-
* Marianne Gagnon (auria)
+
* Joerg Henrichs (hiker)
-
* Joerg Henrichs (hiker)  
+
* Glenn De Jonghe (unitraxx)
 +
* Fallback: Marianne Gagnon (auria)
----
----
 +
==Race History Verifier==
==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.
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.
Line 105: Line 132:
'''Prerequisites'''
'''Prerequisites'''
-
 
+
* Some C++ programming.
-
Some C++ programming.
+
'''Mentor'''
'''Mentor'''
* Joerg Henrichs (hiker)
* Joerg Henrichs (hiker)
-
* Marianne Gagnon (auria)  
+
* Fallback : Marianne Gagnon (auria)  
 +
 
----
----
-
==Split Karts and Characters==
+
==Allow to take a video in game==
-
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.
+
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 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.
+
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'''
'''Prerequisites'''
-
C++ programming, 3d graphics understanding, some blender skills.
+
* Some C++ programming
 +
* experience with video creation (existing libraries can of course be used).
'''Mentor'''
'''Mentor'''
* Marianne Gagnon (auria)
* Marianne Gagnon (auria)
-
* Lionel Fuentes (funto)
+
* Lauri Kasanen (cand)
 +
* Fallback: Joerg Henrichs (hiker)
 +
 
 +
----

Latest revision as of 00:19, 26 February 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.


Contents

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

Mentor


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

Mentor


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

Mentor


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:

More details can be found GSoC Physics page.

Prerequisites


Mentor


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.

More details of this project are on our GSoC Track Editor page.

Prerequisites

Mentor


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:

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

Mentor


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.

Prerequisites

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

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

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

Mentor


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

User Tools