Talk:GSoC Lobby


For online networking we need a lobby implemented. The lobby will be responsible for allowing player to log in, see which online games are available, and offer their own races - either open for everybody, or just for their friends.

The actual networking implementation of online racing will be done at a later stage (it is too much for a single GSoC task). So for now we have decided to only implement a lobby. While the long-term goal of the lobby is of course online racing, it should already offer some new features for players. Following is a list of suggested base functionality to implement and a list of suggested new features for players, that are available even while online racing is not yet implemented.

Base Functionality

For a lobby, the following functionality should be implemented:

Create Account and Login

Online accounts need to be created. This involves defining a user name (potentially with a black list to disallow offensive names) and a password. Account creation would likely need to be verified using email (server sends out an email with a special link to activate an account). There must be an option to automatically (i.e. without involving an admin) recover a password.

Ideally the password should be saved in the user configuration, to avoid that it needs to be retyped (consider settings where only a gamepad is available, which makes typing password hard). Perhaps find a way of implementing a non-password based identification (similar to what happens on XBox). Suggestion: The server sends a unique, encrypted key, which can not be (easily) forged? Suggestions welcome.

It should of course still be possible to play local only.

Management Options

There are certain management options that need to be implemented: Players must be able to define friends (or perhaps even more general 'groups', e.g. friend-group, work-group, family-group). They could then select to e.g. only see members of certain groups, or everybody, and also be invisible for everyone, or invisible for non-group members. People should be able to ignore other players (e.g. they won't see those players highscores, ...).

We need admin accounts with additional options: ban players temporarily or permanently (and admins would be able to see even invisible players of course).

Child Safety

SuperTuxKart is a very child friendly game, so we have to consider child safety. If we should go this way, one option would be that parents can create a 'supervisor' account, which manages several 'kids' accounts. Kids account would be restricted, e.g. they could not add friends (the parent would have to add this)? This is very much open for discussion.

Stephen pointed out: "As part of child safety, we definitely need to make sure we have a full privacy policy written up if players can sign up in-game. In a few countries, we're required to follow a bunch of privacy protection standards if the service is targeted at children." Perhaps we should restrict access to 13 years old, which would avoid this issue.

New Features for Players

The lobby should already give some new features to players, even while online racing is not yet implemented. Below a list of suggestions, but feel free to add your own or replace some ideas:

Votes for Addons

While it is already possible to vote for addons on the addons website, it is just inconvenient. Part of the lobby implementation will identify players, allowing that voting can be done in game (and avoiding people voting more than once for each track). Some care has to be taken about people creating 100's of players just to vote.


Finding and fulfilling achievements is a nice motivation for games. In combination with online support it means you can see which achievements other people (your friends) have reached, and you can try to match them. Achievements need to have a wide range (easy ones like "win your first race" to more difficult ones "win a GP with maximum number of points when playing against 5 karts" to difficult to set up ones, e.g. "pull a kart with a plunger, then swat it".

Online Highscores

Online highscores is a common feature of online games. One problem (particularly of an open source game) is to make sure that highscores are valid, i.e. were not reached by running a patched version of STK. The suggested solution is that people have to record a 'ghost race' (which is already mostly implemented in STK, though not officially available). Those ghost races can be downloaded, and tested by other players. Hopefully this reduces the amount of cheating. Note that admins need an option to delete highscores. And if people have decided to ignore players, they won't see those player's highscores either.

Challenge Friends

Similar to online highscores (perhaps better to say: it's an alternative which potentially leads to less cheating): you can challenge any of your friends (or if groups are implemented all members of a particular group) by publishing a ghost race for them. They can then try to beat the ghost race, resulting in an improved challenge. The assumption is that the set of people you are friends with will be less likely to cheat (since they are your friends there would be some trust). To a certain degree online highscores could be considered a 'friend challenge' for the group of all players, so implementation-wise those two option can (re)use nearly identical code.

Additional comments

A chat option was considered, but for now is considered not to be part of the simple lobby implementation. Due to limitations of the server infrastructure we are using (tuxfamily) we can not easily support a chat mode (we can't run a permanent server which retains socket connections, and asking for updates every second or so will kill the performance). It might be possible to implement a chat of people int he same room (i.e. people who will be playing on the same server, which is the computer from which the room owner is connected).

Additionally a chat adds administrative overhead which the STK developers likely can not handle (complaint about other player, language, abuse/bullying). One option would be to have chats with only pre-defined sentences. This would mean that people of different languages can 'chat' together (since those fixed strings can be translated), and avoid most management issues. Though of course it is very limited, but might be good enough (in the future) for a group of people to decide what they want to play next.