Skip to main content

TrackmaniaRL

PyPI Python CI License Status

TrackmaniaRL is a reinforcement-learning library for training agents in Trackmania 2020. It combines ready-to-use algorithms, replay buffers, model families and Trackmania telemetry with explicit interfaces for replacing any component in an experiment.

The current release is available on PyPI. TrackmaniaRL requires Python 3.12 or newer.

What you get

  • asynchronous local or distributed actor/learner training;
  • SAC, REDQ-SAC, TQC, IQN and stable discrete SAC learners;
  • uniform, prioritized, sequence and demonstration-mixing replay;
  • typed configuration, transitions and training batches;
  • Trackmania telemetry, lidar and track-geometry feature pipelines;
  • durable rollout journals, safe policy transfer and resumable checkpoints;
  • local JSONL observability with optional W&B, Captum, Gemini and Optuna integrations;
  • an installable extension project generated by trackmaniarl init.

TrackmaniaRL has no global runtime configuration and no mandatory external tracker. A run is described by run.yaml and explicit module:attribute component paths.

Install and create an agent

Install the published CLI with uv:

uv tool install trackmaniarl
trackmaniarl init my-trackmania-agent --template trackmania
cd my-trackmania-agent
uv sync
uv run trackmaniarl validate run.yaml

The trackmania template creates a commented, installable agent project with the Trackmania, algorithm, distributed and W&B extras declared for you. Omit --template trackmania to generate the smaller, game-free starter project. trackmaniarl validate checks imports, contracts and a synthetic learner update without starting the game or contacting an external tracker.

To add the SDK to an existing Python project instead, choose only the extras you need:

uv add trackmaniarl
uv add "trackmaniarl[algorithms,distributed]"
Extra Adds
algorithms TorchRL-based algorithm dependencies
trackmania Trackmania environment and Windows virtual-gamepad support
distributed authenticated gRPC rollouts, safetensors and compression
wandb Weights & Biases logging
explain Captum attribution helpers
orchestrator Gemini and Optuna experiment strategies
vision torchvision support

Run Trackmania

Live collection requires Trackmania 2020 on Windows, the bundled OpenPlanet plugin and a prepared map/geometry asset. Follow the Trackmania workflow or the concrete agent OpenPlanet guide before starting the game integration.

The generated Trackmania project pins the patched Palamabron/vgamepad revision containing the unreleased Windows installation fix from vgamepad PR #47. Keep that source pin until the fix is included in an upstream vgamepad release.

With Trackmania and the OpenPlanet plugin running:

uv run trackmaniarl track check
uv run trackmaniarl smoke run.yaml --transitions 100
uv run trackmaniarl train run.yaml

The bounded smoke test uses the same asynchronous learner/actor path as training, verifies a live policy refresh and writes a checkpoint. Start a fresh run directory when the run API or immutable configuration changes; the current schema is RunSpec 1.2.

On Windows, a generated project selects the tested CUDA PyTorch wheels. Linux uses CPU wheels by default and can host an offline or remote learner. ROCm users must select the matching AMD Torch index; macOS uses the normal PyPI wheel and can use MPS. device: auto resolves CUDA, ROCm, MPS or CPU from the installed Torch build.

Runtime model

run.yaml -> coordinator/learner -> SQLite WAL -> replay -> update -> checkpoint
              ^       |
              |       +---- safetensors policy snapshot
              |
              +---- local or remote actors -> durable rollout spool

trackmaniarl train starts a coordinator/learner and one local actor as independent, Windows-safe spawn processes. Collection continues while the learner updates replay and periodically publishes policy snapshots.

For multiple machines, set the same TRACKMANIARL_DISTRIBUTED_TOKEN on every participant and expose the learner through an encrypted tunnel. The learner binds to loopback so its bearer token and rollout data are not sent over the network in clear text:

# training machine
uv run trackmaniarl learner run.yaml --bind 127.0.0.1:8787

# Trackmania machine: create the tunnel first
ssh -N -L 8787:127.0.0.1:8787 TRAINING_MACHINE
uv run trackmaniarl actor run.yaml --connect 127.0.0.1:8787 --actor-id PC-1

The handshake rejects mismatched run fingerprints, map UIDs, geometry hashes and feature/action contracts. Rollouts use Protobuf/gRPC with Zstandard compression, and policy state is transferred with safetensors rather than pickle.

Components and extension API

trackmaniarl.builtins is the supported catalogue of bundled algorithms, models, feature pipelines and replay strategies. A component can also be referenced directly, for example:

components:
  learner:
    class_path: trackmaniarl.algorithms.implicit_quantile_q_learning:ImplicitQuantileQLearning

The stable contracts in trackmaniarl.core include Learner, Policy, ModelFactory, ReplayStore, Sampler, FeaturePipeline, Evaluator, RunLogger and CheckpointCodec. Game-specific implementations belong in the generated extension project, so offline validation does not require Trackmania or optional game dependencies.

Every run writes a redacted immutable manifest, local JSONL events, checkpoints and bounded compressed episode artifacts. Only the learner needs W&B credentials; WANDB_API_KEY can be supplied through the environment or project .env.

See the SDK guide for the full component schema and a built-in run example. Release history is in the changelog.

Development

Clone the repository and install the development group:

git clone https://github.com/Palamabron/AITrackmania.git
cd AITrackmania
uv sync --group dev
uv run poe fmt
uv run poe types
uv run poe test

The commands are intentionally identical on Windows, Linux, WSL and CI. See CONTRIBUTING.md and SECURITY.md before opening a contribution or reporting a vulnerability.

Project status and attribution

TrackmaniaRL is beta software. The project originated from TMRL and has since been substantially redesigned. It is not affiliated with or endorsed by Ubisoft, Nadeo or the TMRL maintainers. Trackmania is a trademark of Nadeo/Ubisoft. See NOTICE for attribution.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trackmaniarl-1.0.2.tar.gz (257.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

trackmaniarl-1.0.2-py3-none-any.whl (221.7 kB view details)

Uploaded Python 3

File details

Details for the file trackmaniarl-1.0.2.tar.gz.

File metadata

  • Download URL: trackmaniarl-1.0.2.tar.gz
  • Upload date:
  • Size: 257.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for trackmaniarl-1.0.2.tar.gz
Algorithm Hash digest
SHA256 6e297fa941b7e85a193662ac3eb93092ce0daf7d6c99b5608de985830c53c7d1
MD5 19dcf2bf6dcaaa0fbbd613c7c3fbdc11
BLAKE2b-256 d606852caabd5d6eb58efc46714b1d8e000451bc90bd55aebab70ed1d997721e

See more details on using hashes here.

File details

Details for the file trackmaniarl-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: trackmaniarl-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 221.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for trackmaniarl-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5a693720663507281157f21d031e716790b7ba74964a70a85e0e3d73e924d7f5
MD5 6a80e15299c0ebbb86de2be3e8cae809
BLAKE2b-256 5c78de63b93d6acd4739963ab37ebffe5d57a6b98e07f9aab18bcb5aeac38301

See more details on using hashes here.

Release history Release notifications | RSS feed

1.1.0

2 files

1.0.4

2 files

1.0.3

2 files

This release

1.0.2 This release

2 files

1.0.1

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page