Skip to content
This repository has been archived by the owner on Oct 16, 2023. It is now read-only.

TheMaximum/mania-pp

Repository files navigation

Mania++

Mania++ is an in-development Server Controller for TrackMania 2 (ManiaPlanet) servers. It is written in C++ and is at this moment basically a hobby-project. You're free to try it and contribute to the system, all ideas and assitance is welcome. No guarantee this makes it to a release-ready state, so be aware of that before using it on your servers.

Current build status

  • Master: Build Status
  • Develop: Build Status

Also checkout the Mania++ versioning system for more about the software versions and branches.

License

Mania++ and its sources are available under the GNU General Public License v3. This allows users/contributors to make changes to the source code, as long as those changes are made available under the same license as the original. The copyright/license notices should not be removed from the sources/workspace.

Tested environments

  • Ubuntu 16.10 (Linux 4.8.0-30), 64-bit with gcc 6.2.0 (development)
  • Ubuntu 16.04.1 LTS (Linux 4.4.0-31), 32-bit with gcc 5.4.0 (testing)
  • Ubuntu 14.04.5 LTS (Linux 4.4.0-51), 64-bit with gcc 4.9.4 (Travis)
  • Debian 8.6 (Linux 3.16.0-4), 64-bit with gcc 4.9.2 (production)
  • "Bash on Ubuntu 14.04.5 LTS on Windows 10" (Linux 4.4.0-51), 64-bit with gcc 4.9.4 (development)

The ./install.sh-script requires a Debian-like system to function (with apt-get). The JSON library requires gcc/g++ v4.9+, the 14.04 LTS only comes with 4.8.4, so you will have to upgrade the version by hand and tell the build script that you want to use that version: -DCMAKE_CXX_COMPILER=g++-4.9 -DCMAKE_C_COMPILER=gcc-4.9.

Requirements

  • Minimum gcc 4.9 / C++11
  • Git
  • CMake

Aims and working points

Achieved goals

  • Working GbxRemote module
    • Send methods and receive responses
    • Receive callbacks
    • De-XMLify responses and callbacks
  • Easy-to-use objects (f.e. Player and Map)
  • Working configuration system (YAML)
  • Database support (MySQL)
  • ManiaLink support
    • ManiaLink handler (UIManager)
    • Easy use of a ManiaLink list (UIList)
  • Chat command handling
  • Working plugin system
    • Plugin interface
    • Callback handling
    • Access to server, database, playerlist, maplist and ManiaLink
    • Chat commands
    • Receive settings from configuration file
    • Welcome/goodbye, maplist/jukebox, local records, map karma and mapinfo widget

Installing for the first time

Building

  • ./build.sh
  • Move config.dist.yaml to config.yaml
  • Edit the configuration file with the server/database information

Running

  • ./Mania++

Check documentation of latest develop commit

Generate code documentation for current code

Requires Doxygen to be installed on your system: sudo apt-get install doxygen

To make it easier to contribute, you can check out the (automatic) documentation. To do this, do:

  • cd ./doc/
  • doxygen
  • Open the documentation either in HTML or LaTeX format (in subdirectories)