GSoC topics 2014

(Track Editor)
(GSoC Addon Dependencies)
 
(40 intermediate revisions not shown)
Line 1: Line 1:
-
This is currently a brainstorm list of projects students could work on for GSoC 2014. It's not even certain that SuperTuxKart will get reaccepted to participate in 2014, nor are we sure how many slots we will get. Last year we mentored 3 students who all succesfully completed the program and we hope to get at least the same amount of students this year.
+
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 definitely not necessary but it might help us in our selection process.
+
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.  
-
For now consider this to be a brainstorming list - to be discussed and fleshed out later.
+
More information about how to get started as a student can be found at our [[GSoC_overview|GSoC overview]] page.
-
==Scripting engine==
+
== 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 interaction. Examples include birds/animals that flee when you drive near, driving over a button opens a gate, cows stop eating grass and look at you as you drive by, play sounds depending on what's happening in the race, and so on and so forth. Perhaps even support modifications of the original track - we don't intend to support track deformations, but e.g. it is possible to add or remove part of the track, so the road could become narrower as part of it collapses (i.e. the road would be created from two different objects on the left and right, and at the right time one of parts will be removed, which is triggered by scripts). Furthermore, certain features that are currently hardcoded (help popups when you reach a certain point in the tutorial, offering to start a challenge when driving near a challenge node in the story mode overworld, the gates to the final story mode challenge opening only when you have completed all challenges) could be rewritten with scripting, and thus clean our code of specific hardcoded actions for certain objects.
+
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.
-
 
+
-
More specifically, this project will involve :
+
-
* perform an analysis to determine how/when to trigger scripts, and what set of functions/classes should be offered to the scripting engine to offer interesting abilities while keeping the scope realistic (note that there is no intent to enable the coding of game modes or other complex features from the scripting engine; the goal at this time is only to make the environment react to player interaction).
+
-
* once the analysis is done, write the C++ version of the API with the capabilities determined during analysis
+
-
* select a lightweight scripting language (ideas: Lua, Squirrel, etc.) and integrate it into SuperTuxKart, mapping it to the C++ side of the scripting API. Implement proper error handling and reporting
+
-
* write a few proof of concept scripts to demonstrate implemented capabilities and provide full documentation to help writing further scripts
+
'''Prerequisites'''
'''Prerequisites'''
-
 
+
* C++ programming
-
C++ programming, notion of how scripting works
+
* experience in a scripting language
 +
* notion of how scripting works
'''Mentor'''
'''Mentor'''
* Marianne Gagnon (auria)
* Marianne Gagnon (auria)
* Fallback : Joerg Henrichs (hiker)
* 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  [[GSoC_2014_Server_Side|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
----
----
Line 30: Line 42:
'''Prerequisites'''
'''Prerequisites'''
-
C++ programming, experience with HTML or XML GUI's might come in handy
+
* C++ programming
 +
* Experience with GUI programming may help
'''Mentor'''
'''Mentor'''
Line 39: Line 52:
----
----
-
== Track Editor ==
+
== Physics and Game Play Improvements ==
-
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.
+
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).
-
More deteails of this project are on our [[GSoC_Track_Editor|GSoC Track Edit]] page.
+
* 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'''
-
GUI development, C++ or a scripting language, some blender and python experience would be advantageous
+
* 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'''
* Joerg Henrichs (hiker)
* Joerg Henrichs (hiker)
-
* Fallback: Marianne Gagnon (auria)
+
* Marianne Gagnon (auria)
----
----
-
== User Administration Web Portal (and Lobby Server API)==
+
== 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.
-
For online multiplayer we've build upon our STKaddons code base (live at http://stkaddons.net) to reuse a lot of the account code. This has a nice side affect that the accounts at the addons site, can also be used for online multiplayer. The aim of this project is to revamp the STKaddons website and generalize the already present user panel, and most importantly add an moderating/administration panel. Moderator roles will need to be created along with a permissions system to allow certain user managing actions.
+
More details of this project are on our [[GSoC_Track_Editor|GSoC Track Editor]] page.
-
 
+
-
In addition to the user moderation, this project can head into different directions :
+
-
* Add an in-game report feature; the administration page will list suspicious users and actions can then be taken.
+
-
* Reorganize the lobby server API. At the moment there are just a few php pages (i.e. client-user.php) that accept POST arguments for actions. Some htaccess and moving around can do a lot.
+
-
* Add the friending features that are present in-game, also to the web app. Logically all server-side code is already present so this would only be some layout code.
+
-
* ...
+
-
 
+
-
Suggestions for this project highly appreciated. Be sure to discuss your ideas with us!
+
'''Prerequisites'''
'''Prerequisites'''
 +
* GUI development
 +
* C++ or a scripting language
 +
* some blender and 3d modelling experience
 +
* some python experience (to study the current blender track exporter)
-
PHP(OO), CSS and HTML. A sense of (My)SQL. Little work in C++ is possible.
+
'''Mentor'''
-
 
+
* Lauri Kasanen (cand)
-
''' Mentor'''
+
* Joerg Henrichs (hiker)
-
* Glenn De Jonghe (unitraxx)
+
* Fallback: Marianne Gagnon (auria)
-
* Fallback: Stephen?
+
----
----
-
== Battle Mode AI ==
 
-
At this stage our NPC's our only configure to do simple lap-based races. STK already supports different game modes, especially a battle mode. Goal of this task is to implement 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'''
+
= Other ideas =
-
Strong C++ programming, AI techniques, path finding
+
== 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.
-
'''Mentor'''
+
'''Prerequisites'''
-
* Joerg Henrichs (hiker)
+
* PHP(OO)
-
* Fallback: Marianne Gagnon (aka Auria)
+
* CSS/HTML
 +
* C++
 +
* (My)SQL
 +
''' Mentor'''
 +
* Glenn De Jonghe (unitraxx)
 +
* Fallback: Stephen Just
----
----
-
== Improving graphics ==
+
== Unit Testing ==
-
STK graphics can be improved in a variety of ways. What's currently requested by our main artists is [http://sourceforge.net/apps/trac/supertuxkart/ticket/1059|texture compression], GPU skinning, better shadow implementations and SSAO.
+
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'''
'''Prerequisites'''
-
 
+
* C++ (for STK unit testing)
-
Strong C++ programming, GLSL, graphics programming
+
* php, mysql (in case of server-side unit testing)
 +
* Unit testing experience, esp. existing frameworks or scripting languages
'''Mentor'''
'''Mentor'''
-
* Marianne Gagnon (aka Auria)
+
* Joerg Henrichs (hiker)
-
* Fallback: funto
+
* Glenn De Jonghe (unitraxx)
 +
* Fallback: Marianne Gagnon (auria)
----
----
Line 107: Line 132:
'''Prerequisites'''
'''Prerequisites'''
-
 
+
* Some C++ programming.
-
Some C++ programming.
+
'''Mentor'''
'''Mentor'''
Line 119: Line 143:
==Allow to take a video in game==
==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).
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'''
'''Prerequisites'''
-
Some C++ programming, experience with video creation (existing libraries can of course be used).
+
* Some C++ programming
 +
* experience with video creation (existing libraries can of course be used).
'''Mentor'''
'''Mentor'''
* Marianne Gagnon (auria)
* Marianne Gagnon (auria)
-
* Joerg Henrichs (hiker)
+
* Lauri Kasanen (cand)
 +
* Fallback: Joerg Henrichs (hiker)
----
----
-
 
-
==Include tux racer==
 
-
The tux racer project is mostly dead (not sure if this is still true, I think there was a rc recently - under some other name ... extreme tux racer?), but anyway: the intention of tux racer was to support multiplayer and proper physics, all of which we already have. Instead of having tux racer as a separate project, it would help everyone to pool our resources and include a tux racer mode. It would involve supporting heightmaps (so that tracks from tux racer can be imported), etc.
 

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