Difference between revisions of "Web API"
m (Added infos about distro) |
(Added progress page lnik) |
||
Line 1: | Line 1: | ||
== Goal and how to help == | == 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 | + | 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 authentication server. If you want to give help, go ahead. Just grab fiddler and start tweaking around with the game. You can check what has already been done on the [[Web_APIs/Progress|Progress]] page. |
== Basic concepts == | == Basic concepts == |
Revision as of 10:18, 12 May 2019
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 authentication server. If you want to give help, go ahead. Just grab fiddler and start tweaking around with the game. You can check what has already been done on the Progress page.
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://game2.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>[...]</name> <params> [...] </params> </request> <auth> <value>[...]</value> </auth> </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 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.
- game
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.
- r
Functions calls
GetConnectionAndGameParams
First request sent by client.
Session required? | Parameters | Response |
---|---|---|
No |
|
|
CheckLogin
Used to check if login is already used for account creation.
Session required? | Parameters | Response |
---|---|---|
No |
|
|
MailAccount
Used to make the server send a password recovery email.
Session required? | Parameters | Response |
---|---|---|
No |
|
Empty response |
Disconnect
Used to disconnect (Duh).
Session required? | Parameters | Response |
---|---|---|
Yes |
Empty parameters |
Empty response |