1,476 bytes added
, 20:31, 11 May 2019
== 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 [http://game.trackmaniaforever.com/online_game/request.php http://game.trackmaniaforever.com/online_game/request.php] to communicate with the API.
It sets two headers: <code>User-Agent: GameBox</code> and <code>Accept: */*</code>, and uses the following format as request body :
<pre>
<?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>
</pre>
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
*** lang: lang of the client, as ISO 639-1
** author
*** login: is not set when calling GetConnectionAndGameParams
*** session: obtained by calling GetConnectionAndGameParams. Unset when calling that function.
** request:
*** name: Name of the requested function.
*** params: Parameters for the call.