Skip to content
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
66 lines (51 sloc) 3.04 KB


Status GitHub Discord Patreon

A server controller for Trackmania² based on PHP 7.2 with Maniaplanet 4.1 support.

⚠ WARNING: The controller is not ready to run stable on a live server in its current state.


  • PHP 7.2+
  • MySql or MariaDB Server

Installation (git)

  • Composer
  1. Clone project git clone
  2. Go into the directory and run composer install
  3. Copy contents from config/default to config and fill out the required fields
  4. Run php esc migrate to create the database tables.
  5. Run EvoSC
⚠ If the cache and log folder aren't created automatically, you need to create them and restart the controller.

Music server installation

Download the music-server and extract it to your webserver with the ogg-files. Copy the music.config.json from the music-client-module directory to your config directory and set url to the URL of your webserver.


Get all available commands php esc list

Action Description
Run EvoSC In terminal type php esc run (-v|-vv|-vvv)
Import data from UASECO In terminal type php esc import:uaseco {host} {database} {user} {password} optionally add {table_prefix}
Fix player scores and ranking Run php esc fix:scores to re-calculate all scores and fix the player ranks.
Creating a database migration Run php esc make:migration <MigrationClassName>. The migration is saved to to /Migrations. Copy it to your module if necessary.

Basic Documentation


Each module must contain a base class in the esc\Modules namespace and a module.json containing:

  "name": "",
  "description": "",
  "author": "",
  "version": 1.0

Modules can contain Templates, Classes, Models and Database-Migrations. The constructor of the base class is called on controller start, after all controllers have beeb started. Configs are in json format and are located at the base directory of your module. Name it as your-config-file.config.json, it will automatically be loaded on controller-start.

You can’t perform that action at this time.