Inside content.kspkg
Assetto Corsa EVO keeps almost all of its content in a single file, content.kspkg: about 69 GB holding some 117,000 files, the circuits, cars, interface and game tables.
A package is a file system in one file
A Kunos package is a long run of file data, with a table at its end listing every entry: its path, where its data starts, its size and a few flags. Reading a file means finding its entry in the table, then reading its bytes.
Some entries are scrambled with a simple XOR, the way the game stores them; the key is read from the package's own table. Step 1 unscrambles them as the game does, so the extracted files are exactly what the game reads.
Extracted exactly, and checked
- Exact copies. Each file is written with the bytes the game reads, under its package path:
game/content/tracks/laguna_seca/…. - Checked.
kspkg verifyreads every file back and compares it with the package, byte for byte. - Incremental. A file already extracted from the same package entry is skipped. After a game update, only the changed files are written, and
--pruneremoves the ones the game dropped. - Careful with your disk. Before writing, the extraction checks that the disk has room for what it will add.
Anything unusual is reported
kspkg info checks every entry of the table and reports what the game would not expect, such as an unsafe path or data running past the end of the file. Extraction never writes outside its output folder. On the game's own package, it reports nothing unusual.