GSoC topics 2014

Line 4: Line 4:
For now consider this to be a brainstorming list - to be discussed and fleshed out later.
For now consider this to be a brainstorming list - to be discussed and fleshed out later.
 +
 +
 +
==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.
 +
 +
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'''
 +
 +
C++ programming, notion of how scripting works
 +
 +
'''Mentor'''
 +
* Marianne Gagnon (auria)
 +
* Fallback : Joerg Heinrichs (hiker)
 +
 +
----
 +
 +
 +
== 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.
 +
 +
This project is about creating a track editor. It is certainly one of the most difficult suggestions for SuperTuxKart, but also some of the most creative ones. Editors can come in many different variations: they can be based on pieces (e.g. squares or rectangles) that you just place next to each other, to very powerful tools like the integrated editor of ModNation Racer (see for example http://www.youtube.com/watch?v=Tyk3CC3vyyg). We certainly don't expect anything close to the latter.
 +
 +
There are two general approaches: either create a stand-alone track editor, that also exports the data structure needed for stk (see drivelines). Or create a kind of pre-processor, which creates a file that is then imported into blender. From there the final export could be done, or even additional tweaking of the track would be possible.
 +
 +
This project suggestion requires a well thought out proposal, likely with some examples in form of drawings or screenshots. Think of the steps necessary to go all the way from a track idea to the end - a track that can be loaded in SuperTuxKart. If you base your idea on pre-designed pieces that are put together, then you need a good library manager to allow people to find the pieces they are looking for. If you allow a more flexible approach, describe the process from the beginning to the end.
 +
 +
A very simple example: you could draw the road of the track in any 2d graphics program (or if you write your own gui allow to draw it). Then analyse this picture to create a real 3d mesh from it (perhaps use a height map). How would you help filling the empty spaces (i.e. between the road). This could then be imported into blender.
 +
 +
Think about placing items on the track. What about zippers, jumps, bridges?
 +
 +
 +
 +
'''Prerequisites'''
 +
 +
GUI development, a scripting language, some blender and python experience would be advantageous
 +
 +
'''Mentor'''
 +
* Joerg Henrichs (hiker)
 +
* Fallback: Marianne Gagnon (auria)
 +
 +
----
 +
Line 27: Line 74:
----
----
-
 
-
==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. 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.
 
-
 
-
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'''
 
-
 
-
C++ programming, notion of how scripting works
 
-
 
-
'''Mentor'''
 
-
* Marianne Gagnon (auria)
 
-
* Fallback : Joerg Heinrichs (hiker)
 
-
 
-
----
 
-
 
== Battle Mode AI ==
== 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]].
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]].
Line 133: Line 160:
* Marianne Gagnon (auria)
* Marianne Gagnon (auria)
* Joerg Henrichs (hiker)
* Joerg Henrichs (hiker)
-
 
-
----
 
-
 
-
== 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.
 
-
 
-
This project is about creating a track editor. It is certainly one of the most difficult suggestions for SuperTuxKart, but also some of the most creative ones. Editors can come in many different variations: they can be based on pieces (e.g. squares or rectangles) that you just place next to each other, to very powerful tools like the integrated editor of ModNation Racer (see for example http://www.youtube.com/watch?v=Tyk3CC3vyyg). We certainly don't expect anything close to the latter.
 
-
 
-
There are two general approaches: either create a stand-alone track editor, that also exports the data structure needed for stk (see drivelines). Or create a kind of pre-processor, which creates a file that is then imported into blender. From there the final export could be done, or even additional tweaking of the track would be possible.
 
-
 
-
This project suggestion requires a well thought out proposal, likely with some examples in form of drawings or screenshots. Think of the steps necessary to go all the way from a track idea to the end - a track that can be loaded in SuperTuxKart. If you base your idea on pre-designed pieces that are put together, then you need a good library manager to allow people to find the pieces they are looking for. If you allow a more flexible approach, describe the process from the beginning to the end.
 
-
 
-
A very simple example: you could draw the road of the track in any 2d graphics program (or if you write your own gui allow to draw it). Then analyse this picture to create a real 3d mesh from it (perhaps use a height map). How would you help filling the empty spaces (i.e. between the road). This could then be imported into blender.
 
-
 
-
Think about placing items on the track. What about zippers, jumps, bridges?
 
-
 
-
 
-
 
-
'''Prerequisites'''
 
-
 
-
GUI development, a scripting language, some blender and python experience would be advantageous
 
-
 
-
'''Mentor'''
 
-
* Joerg Henrichs (hiker)
 
-
* Fallback: Marianne Gagnon (auria)
 
----
----

Revision as of 05:52, 20 January 2014

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.

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.

For now consider this to be a brainstorming list - to be discussed and fleshed out later.


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

More specifically, this project will involve :

Prerequisites

C++ programming, notion of how scripting works

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.

This project is about creating a track editor. It is certainly one of the most difficult suggestions for SuperTuxKart, but also some of the most creative ones. Editors can come in many different variations: they can be based on pieces (e.g. squares or rectangles) that you just place next to each other, to very powerful tools like the integrated editor of ModNation Racer (see for example http://www.youtube.com/watch?v=Tyk3CC3vyyg). We certainly don't expect anything close to the latter.

There are two general approaches: either create a stand-alone track editor, that also exports the data structure needed for stk (see drivelines). Or create a kind of pre-processor, which creates a file that is then imported into blender. From there the final export could be done, or even additional tweaking of the track would be possible.

This project suggestion requires a well thought out proposal, likely with some examples in form of drawings or screenshots. Think of the steps necessary to go all the way from a track idea to the end - a track that can be loaded in SuperTuxKart. If you base your idea on pre-designed pieces that are put together, then you need a good library manager to allow people to find the pieces they are looking for. If you allow a more flexible approach, describe the process from the beginning to the end.

A very simple example: you could draw the road of the track in any 2d graphics program (or if you write your own gui allow to draw it). Then analyse this picture to create a real 3d mesh from it (perhaps use a height map). How would you help filling the empty spaces (i.e. between the road). This could then be imported into blender.

Think about placing items on the track. What about zippers, jumps, bridges?


Prerequisites

GUI development, a scripting language, some blender and python experience would be advantageous

Mentor



User Administration Web Portal (and Lobby Server API)

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.

In addition to the user moderation, this project can head into different directions :

Suggestions for this project highly appreciated. Be sure to discuss your ideas with us!

Prerequisites

PHP(OO), CSS and HTML. A sense of (My)SQL. Little work in C++ is possible.

Mentor


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 battle AI page.

Prerequisites

Strong C++ programming, AI techniques, path finding

Mentor



Game Lobby and User Profile improvements

For last year's online multiplayer projects a lot of functionality has been added, but not much attention was spend on the interfaces presenting the features. So one part of this project is to upgrade the current interface and add any obvious missing features.

Some other nice features we want to add to online multiplayer that can be part of this project (and other ones may be suggested of course) :


Prerequisites

C++

Mentor


Improve in-game add-ons interface

The current in-game addons interface is a flat list, with no screenshots and limited search, filtering and sorting options. Text is also used for many pieces of information that could be visual. 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 XML files describing the layout. It may be necessary to extend the STK GUI engine to produce the desired results. The proposal for this project may be extended with interface improvents for other parts of the game. (Highly recommended, though make sure that your timeline seems reasonable.)

Prerequisites

C++ programming, experience with HTML or XML GUI's might come in handy

Mentor


Improving graphics

STK graphics can be improved in a variety of ways. What's currently requested by our main artists is compression, GPU skinning, better shadow implementations and SSAO.

Prerequisites

Strong C++ programming, GLSL, graphics programming

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



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


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.

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

User Tools