How it works

Overview

The three steps, the files between them, and the rules every step follows.

beamng.assetto is one Python application with three independent steps. Each step reads files and writes files; the next step reads only what the previous one wrote.

StepReadsWrites
S1 Extract, kspkgcontent.kspkgan extracted folder, as the game reads it
S2 Read, evothe extracted folder (or the package) and AssettoCorsaEVO.exework/evo: each circuit part by part, and the assets they use
S3 Build, beamngwork/evo onlywork/beamng/evo_<circuit>: a mod per circuit, a level per layout

Step 1 knows nothing about tracks

Step 1 reads Kunos packages (.kspkg) and extracts them byte for byte. It knows nothing about circuits or BeamNG: you can use it on its own, on content.kspkg or on a mod package. See Inside content.kspkg.

Step 2 speaks EVO

Step 2 reads a circuit the way the game does: its scene, its containers of objects, its layouts and game modes, and every actor in them. It writes them in EVO's own terms, without converting anything yet: positions in EVO's frame, materials with EVO's shader parameters, textures as EVO stores them. The game's executable tells it how EVO's data is laid out, so step 2 reads the game's data with the game's own definitions.

Step 3 speaks BeamNG

Step 3 turns step 2's files into a BeamNG level, using a native BeamNG system for each job, as BeamNG's own levels are built: a terrain for the landscape, ground cover for the grass, a forest for the trees, decal roads for the markings, an AI road for the AI. See From EVO track to BeamNG level.

The rules every step follows

  • 1:1 with EVO. Nothing is guessed or drawn by hand. Positions, sizes, materials, lights and settings come from EVO's data, with no per-circuit values in the code.
  • Nothing lost in silence. When BeamNG can't do what EVO does, or a value has to be approximated, the step reports it, with a count, so you always know how faithful a level is.
  • Your copy only. The tool works on the game files on your disk. The project contains no game data, and what it builds is for your own use.
  • Only what changed. Every file written records what it was made from. A run skips what is already up to date, so you can stop and resume, and updates are quick.

Where to read more

The project's repository documents every detail, with the evidence behind it, for those who want to go deeper:

How EVO loads a track

The game's own loading, as step 2 follows it.

How a BeamNG level is made

BeamNG's rules, as step 3 applies them.

beamng.assetto is free software under the GNU AGPL v3.

Not affiliated with Kunos Simulazioni or BeamNG GmbH. Assetto Corsa EVO and BeamNG.drive are trademarks of their owners.