Web API

Goal and how to help
One day, eventually, Trackmania will reach his EoL. This is about documenting as much as possible to eventually get the point of having a fully functional custom auth server. If you want to give help, go ahead. Just grab fiddler and start tweaking around with the game.

Basic concepts
TrackMania uses a XML-RPC-like API to authenticate players, load server lists, load rankings, etc... Here is some documentation about what has been reversed engineered. A lot is still left to be documented.

The game sends unencrypted POST requests to to communicate with the API.
 * http://game.trackmaniaforever.com/online_game/request.php
 * http://game2.trackmaniaforever.com/online_game/request.php

It sets two headers:  and , and uses the following format as request body :

 TmForever 2.11.16    MOLUX fr    [...] [...]   [...]

Here is a description of the parameters :


 * root
 * game
 * name the client you are using. Known values: TmForever
 * version Version of the client
 * distro Unknown. Set to MOLUX for TMNF or TAHOR for TMUF
 * lang lang of the client, as ISO 639-1
 * author
 * login is not set when calling GetConnectionAndGameParams
 * session is not set when calling GetConnectionAndGameParams
 * request
 * name Name of the requested function.
 * param Parameters for the call.
 * auth Optional. Only seen with Disconnect
 * value Looks like an auth ticket.

The server responds with XML, which has obfurscated names:

   [...]  [...]     execution time : 0.0010 s 

Here is a description of the return:


 * r
 * r
 * n The name of the called function
 * c The return data
 * e A string giving the execution time.

GetConnectionAndGameParams
First request sent by client.

CheckLogin
Used to check if login is already used for account creation.

MailAccount
Used to make the server send a password recovery email.

Disconnect
Used to disconnect (Duh).