Difference between revisions of "Web API"

From Mania Tech Wiki
Jump to navigation Jump to search
(Added CheckLogin)
m (Added game2 url)
Line 3: Line 3:
 
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.
 
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.
+
The game sends unencrypted POST requests to
 +
* [http://game.trackmaniaforever.com/online_game/request.php http://game.trackmaniaforever.com/online_game/request.php]
 +
* [http://game2.trackmaniaforever.com/online_game/request.php http://game2.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 :
 
It sets two headers: <code>User-Agent: GameBox</code> and <code>Accept: */*</code>, and uses the following format as request body :
Line 89: Line 92:
 
**h : ?. Set to 1
 
**h : ?. Set to 1
 
**i : ?. Set to 1
 
**i : ?. Set to 1
 
  
 
=== CheckLogin ===
 
=== CheckLogin ===

Revision as of 08:12, 12 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

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>[...]</name>
    <params>
      [...]
    </params>
  </request>
</root>

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.
      • param: Parameters for the call.

The server responds with XML, which has obfurscated names:

<?xml version="1.0" encoding="UTF-8"?>
<r>
  <r>
    <n>[...]</n>
    <c>
      [...]
    </c>
  </r>
  <e>execution time : 0.0010 s</e>
</r>

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.

Functions calls

GetConnectionAndGameParams

Parameters

  • dedicated
Set to 0 with TMF. Purpose is unknown. Maybe for servers.
  • download
Max P2P download speed, as set in game config, in B/s
  • upload
Max P2P upload speed, same as download.

Response

  • a
    • b : Full game name (Set to "Trackmania United Forever for TMNF and TMUF)
    • c : Set to "game.trackmaniaforever.com". Purpose is unknown.
    • d : ?. Set to "online_game"
    • e : ?. Set to 443
    • f : ?. Set to 80
    • g : Set to "World". Maybe base region?
    • h : ?. Set to 1
    • i : ?. Set to 1

CheckLogin

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

Parameters

  • l
Player login.

Response

  • e
Set to 1 if login is used, otherwise 0.
  • p
?. Set to 0.