Skip to main content

Project Structure

This page summarizes the repository layout and points you at the most important modules and classes to inspect when working on AssettoCorsaRL.

Repository tree

assetto-corsa-rl/
┣ configs/
┃ ┣ ac/
┃ ┗ car-racing/
┃ ┣ env_config.yaml
┃ ┣ model_config.yaml
┃ ┗ train_config.yaml
┣ scripts/
┃ ┣ ac/
┃ ┃ ┣ record_racing_line.py
┃ ┃ ┣ vis_env_observation.py
┃ ┃ ┗ vis_racing_line.py
┃ ┗ car-racing/
┃ ┣ load.py
┃ ┣ load_vae.py
┃ ┣ train_car_racing.py
┃ ┗ train_vae.py
┣ src/
┃ ┗ assetto_corsa_rl/
┃ ┣ model/
┃ ┃ ┣ noisy.py
┃ ┃ ┣ sac.py
┃ ┃ ┣ vae.py
┃ ┃ ┗ __init__.py
┃ ┣ train/
┃ ┃ ┣ train_core.py
┃ ┃ ┣ train_utils.py
┃ ┃ ┗ __init__.py
┃ ┣ ac_env.py
┃ ┣ ac_send_actions.py
┃ ┣ ac_telemetry_helper.py
┃ ┣ env_helper.py
┃ ┣ load.py
┃ ┗ __init__.py
┣ tests/
┃ ┣ test_ac_env.py
┃ ┣ test_ac_reward.py
┃ ┣ test_env.py
┃ ┣ test_sac.py
┃ ┣ test_xbox_buttons.py
┃ ┗ test_xbox_controller.py
┣ pyproject.toml
┣ README.md
┗ requirements.txt
┗ setup.cfg

Key objects 🔍

Environment

  • Class: assetto_corsa_rl.ac_env.AssettoCorsa
  • What to inspect: environment lifecycle, observation & action spaces, and how racing lines are loaded via AssettoCorsa._load_racing_line.
  • File: assetto-corsa-rl/src/assetto_corsa_rl/ac_env.py

Trainer / training core

  • Class: assetto_corsa_rl.train.train_core.Trainer
  • What to inspect: env stepping, buffering, and learning updates (see _do_update).
  • File: assetto-corsa-rl/src/assetto_corsa_rl/train/train_core.py

Recorder / Visualizer

  • RacingLineRecorder: records laps and writes racing_lines.json.
  • RacingLineVisualizer: 3D visualization and load_racing_data helper.
  • Files: assetto-corsa-rl/scripts/ac/record_racing_line.py, assetto-corsa-rl/scripts/ac/vis_racing_line.py

AC plugin & telemetry

  • Plugin hooks: AC_RL.third_party.stdlib.AC_RL.acMain, acUpdate, handle_input_data — plugin that sends telemetry JSON via UDP and accepts commands.
  • Telemetry helper: AC_RL.telemetry.hexdump — simple UDP listener/parser useful for debugging.
  • Files: AC_RL/third_party/stdlib/AC_RL.py, AC_RL/telemetry.py

Data / checkpoints

  • Racing line dataset: racing_lines.json — top-level JSON, contains num_laps and laps[].positions[] (timestamp, x, y, z).
  • Experiment logs: wandb/ run directories.
  • Checkpoints: models/ (e.g., sac_checkpoint_100000.pt).

Runner / policy loader

  • Entry: assetto_corsa_rl.load.main — loads an actor, calls env.step, and handles actor outputs (action shaping/sampling are implemented here).
  • File: assetto-corsa-rl/src/assetto_corsa_rl/load.py

Tests

  • Core env tests: assetto-corsa-rl/tests/test_ac_env.py
  • Other unit tests: assetto-corsa-rl/tests/ (look for module/unit tests here).

Quick tips

  • To run tests: pytest assetto-corsa-rl/tests.
  • To inspect the trainer loop quickly: open train_core.py and search for _do_update.
  • To visualize recorded lines: run scripts/ac/vis_racing_line.py (requires display dependencies).