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 http://game.trackmaniaforever.com/online_game/request.php to communicate with the API.
It sets two headers:
User-Agent: GameBox and
Accept: */*, and uses the following format as request body :
<?xml version="1.0" encoding="UTF-8"?> <root> <game> <name>TmForever</name> <version>2.11.16</version> <distro>MOLUX</distro> <lang>fr</lang> </game> <author> <login/> <session/> </author> <request> <name>GetConnectionAndGameParams</name> <params> <dedicated>0</dedicated> <download>1048576</download> <upload>65536</upload> </params> </request> </root>
Here is a description of the parameters :
- name: the client you are using. Known values: TmForever
- version: Version of the client
- distro: Unknown. Set to MOLUX
- lang: lang of the client, as ISO 639-1
- login: is not set when calling GetConnectionAndGameParams
- session: obtained by calling GetConnectionAndGameParams. Unset when calling that function.
- name: Name of the requested function.
- params: Parameters for the call.