Changes

Jump to navigation Jump to search
399 bytes added ,  18:30, 2 July 2019
m
Corrected thoughts about distro.
Line 3: Line 3:  
== Basic concepts ==
 
== Basic concepts ==
   −
TrackMania uses a XML-RPC based API to authenticate players, load server lists, load rankings, etc. Below is some documentation about what has been reversed engineered. A lot is still left to be documented, as logged on the [[Web_API/Progress|Progress]] page.
+
{{Need Info|A lot is still left to be documented, as logged on the [[Web_API/Progress|Progress]] page.}}
   −
The game sends HTTP(s) POST requests to
+
TrackMania uses a XML-RPC based protocol to authenticate players, load server lists, load rankings, etc. Below is some documentation about what has been reversed engineered.
 +
 
 +
The client sends HTTP(S) POST requests to
 
* [http://game.trackmaniaforever.com/online_game/request.php http://game.trackmaniaforever.com/online_game/request.php]
 
* [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]
 
* [http://game2.trackmaniaforever.com/online_game/request.php http://game2.trackmaniaforever.com/online_game/request.php]
 
* [http://nations.trackmaniaforever.com/online_game/request.php http://nations.trackmaniaforever.com/online_game/request.php]
 
* [http://nations.trackmaniaforever.com/online_game/request.php http://nations.trackmaniaforever.com/online_game/request.php]
to communicate with the API, using the headers: <code>User-Agent: GameBox</code> and <code>Accept: */*</code>
+
to communicate with the master server, using the headers:
 +
User-Agent: GameBox
 +
Accept: */*
 +
Content-Type: application/binary
 +
Connection: Keep-Alive
 +
Pragma: no-cache
   −
=== Request ===
+
=== Request body ===
 
<pre>
 
<pre>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
Line 20: Line 27:  
     <distro>MOLUX</distro>
 
     <distro>MOLUX</distro>
 
     <lang>fr</lang>
 
     <lang>fr</lang>
     <sd>2011-02-21</sd> <!-- Only sent by server, see below -->
+
     <sd>2011-02-21</sd> <!-- Only sent by dedicated server, see below -->
 
   </game>
 
   </game>
 
   <author>
 
   <author>
Line 43: Line 50:  
*** '''name''' The client you are using. Known values: TmForever
 
*** '''name''' The client you are using. Known values: TmForever
 
*** '''version''' Version of the client.
 
*** '''version''' Version of the client.
*** '''distro''' Unknown. Set to MOLUX for TMNF or TAHOR for TMUF.
+
*** '''distro''' Software distribution. Seen MOLUX/BOCAD for TMUF and THAOR/ORTIC for TMUF.  
*** '''lang''' Language of the client, as ISO 639-1. Server sets it to "xx".
+
*** '''lang''' Language of the client, as ISO 639-1. Dedicated server sets it to "xx".
*** '''sd''' Server release date as YYYY-MM-DD, only sent by server.
+
*** '''sd''' Dedicated Server release date as YYYY-MM-DD, only sent by server.
 
** '''author''' ''See [[#Author]]''.
 
** '''author''' ''See [[#Author]]''.
 
** '''request'''
 
** '''request'''
*** '''name''' Name of the requested function.
+
*** '''name''' Name of the remote procedure.
 
*** '''param''' Parameters for the call.
 
*** '''param''' Parameters for the call.
 
** '''auth''' ''Optional. Only seen on Connect and Disconnect''.
 
** '''auth''' ''Optional. Only seen on Connect and Disconnect''.
Line 54: Line 61:     
==== Author ====
 
==== Author ====
The author tag identifies the user sending the request. In this documentation, three cases are possible for the author tag:
+
The author tag identifies the user for whom the request is sent. In this documentation, three cases are possible for the author tag:
    
<ul>
 
<ul>
Line 65: Line 72:  
<li>The method requires user name (denoted as "No (Set to 1)"), the author tag is filled with following content:
 
<li>The method requires user name (denoted as "No (Set to 1)"), the author tag is filled with following content:
 
<pre>
 
<pre>
<login>the user's name</login>
+
<login>the user's login</login>
 
<session>1</session>
 
<session>1</session>
 
</pre>
 
</pre>
Line 71: Line 78:  
<li>The method requires authentication (denoted as "Yes"), the author tag is filled with following content:
 
<li>The method requires authentication (denoted as "Yes"), the author tag is filled with following content:
 
<pre>
 
<pre>
<login>the user's name</login>
+
<login>the user's login</login>
 
<session>the session's id</session>
 
<session>the session's id</session>
 
</pre>
 
</pre>
Line 77: Line 84:  
</ul>
 
</ul>
   −
=== Response ===
+
=== Response body ===
 
<pre>
 
<pre>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
Line 93: Line 100:  
Here is a description of the returned xml:
 
Here is a description of the returned xml:
   −
* '''r'''
+
* '''r''' The [r]oot element
** '''r'''
+
** '''r''' The [r]esponse element
*** '''n''' The name of the called function.
+
*** '''n''' The [n]ame of the called procedure.
*** '''c''' The returned data.
+
*** '''c''' The returned [c]ontent.
** '''e''' A string giving the execution time.
+
** '''e''' A string giving the [e]xecution time.
    
== Functions calls ==
 
== Functions calls ==
Line 449: Line 456:  
== How to help ==
 
== How to help ==
 
Use a {{wp|packet analyzer}} to see the game's communication while experimenting with client features, and describe requests and responses in as much detail as possible.
 
Use a {{wp|packet analyzer}} to see the game's communication while experimenting with client features, and describe requests and responses in as much detail as possible.
 +
 +
Note: For Maniaplanet it's required that the address of the debugging proxy is entered in the launcher (e.g. 127.0.0.1:8888 for Fiddler) and the proxy is configured to decrypt HTTPS traffic.
    
[[Category:Specifications]]
 
[[Category:Specifications]]
90

edits

Navigation menu