Edit a Wreckfest garage save instead of grinding it: recolor every car at once, set credits, level and tournament fame, fit the upgrades you already own. Plain files, no memory injection, nothing to install on the PC that runs the game.
cars5.ccrs in your profile (GOG: %USERPROFILE%\AppData\LocalLow\THQNordic\Wreckfest\goguserdata\wreckfest\)
holds every garage car - paint colors and fitted parts - as plain numbers and strings inside
an LZ4 container. These tools read and rewrite those files; no manual slider work.
There are two implementations with the same features:
| file | needs | |
|---|---|---|
| GUI / PowerShell (use this on the gaming PCs) | RSWreckGarage.cmd -> RSWreckGarage.ps1 |
nothing - Windows PowerShell 5.1 + .NET are on every Windows PC |
| Python CLI | rswreckgarage.py, make_colors.cmd |
Python 3 |
Both produce byte-identical results.
Get it: git clone https://github.com/RootSwitch/RSWreckGarage.git, or Code -> Download ZIP
on GitHub. Everything works from the unpacked folder; there is no install step. Unlicense.
You are editing your save game, so treat the profile with respect:
- Copy the whole profile folder somewhere safe once (right-click -> Copy, paste it on your
desktop). That beats every tool-made backup, covers files the tools never touch, and takes
ten seconds. The tools also do this for you: the first time one of them saves into a profile
it copies every profile file to
rswreckgarage-original\inside it. - Quit Wreckfest first. The game keeps the profile in memory and writes it back when you leave a race or change a setting, which silently overwrites your edit - so the tools refuse to save into the live profile while the game is running.
- Every in-place save keeps the file it replaces as
name.baknext to it (.bakwith no number is always the file as it was before the first edit;.bak2,.bak3... are newer). Restore backup... in the GUI,-Restore/restoreon the command lines, or plain renaming puts one back. Files are written to a temp name, verified, and only then swapped in, so a crash mid-save cannot leave a half-written profile. - Cloud saves (GOG Galaxy, Steam, Xbox/Game Pass) cut both ways: the launcher can push an
older cloud copy back over your edit, and it can upload your edited files - including the
.bakfiles andrswreckgarage-original\, since they live inside the synced folder. The game itself accepts edited values and re-saves them as its own, but if you want none of that synced, disable cloud saves for Wreckfest in the launcher before editing. The GOG offline installer version has no cloud at all - nothing leaves the PC.
Copy the whole folder to a PC (or just RSWreckGarage.cmd + RSWreckGarage.ps1)
and double-click RSWreckGarage.cmd. It finds the local profile automatically - it looks in
%USERPROFILE%\AppData\LocalLow\THQNordic\Wreckfest\{goguserdata,userdata,egsuserdata,msuserdata}\wreckfest
(plus the older layout without the Wreckfest folder), in Steam's Documents\My Games\Wreckfest
(and its pre-2019 <Steam>\userdata\<id>\228380\local\wreckfest), and in per-user-id subfolders
of all of those; if several are found they're listed in the dropdown at the top right, or
Browse... to any folder:
- Colors - "Replace blue with red" (every slot that looks blue, plus factory-paint cars if ticked), or "Paint bodies". Named colors in the dropdowns, or Pick... for any RGB color.
- Selected cars only - tick it and the color buttons (and the parts fitter) touch only the rows highlighted in the list. Ctrl/Shift-click to multi-select, Ctrl+A for all. This is how you build category color schemes: select the "slow armoured" cars -> Paint bodies green, and so on.
- Career - credits, XP, tournament fame (Max = 99,999,999 / 20,000,000 / 99,999,999), experimental name field.
- Fit best owned engine parts - swaps higher-tier engine parts already in your inventory onto the cars.
- Clear thumbnails - deletes
menu\icon_car_*.png, the cached renders that made the car-select bar keep showing blue cars. Also done automatically on save (tick box). - Save changes to profile writes only the files that changed, keeping
.bakcopies (and the one-timerswreckgarage-original\snapshot, see above). Refused while Wreckfest is running. Save cars5.ccrs as... writes just the car file elsewhere (e.g. to build one file per color). - Restore backup... puts a backup back: pick a
.bakfile (a number picker away from any earlier state) or a file insiderswreckgarage-original\to restore one file or the whole snapshot. The file being replaced is kept as a new.bakfirst, so restoring is also undoable.
The same script works from a command prompt (handy for scripting), e.g.
RSWreckGarage.cmd -Dump
RSWreckGarage.cmd -Recolor -From blue -To red -IncludeUnpainted [-Out cars5_red.ccrs]
RSWreckGarage.cmd -Career -Credits 99999999 -Xp 20000000 -Fame 99999999
RSWreckGarage.cmd -EquipBest
RSWreckGarage.cmd -ClearThumbnails
RSWreckGarage.cmd -Backups
RSWreckGarage.cmd -Restore "<profile>\cars5.ccrs.bak"Add -Profile <folder> to pick a profile, -Car "supervan,big rig" to touch only cars whose name or
vehicle id contains one of the words, and -WhatIf to preview without writing. -Force writes even
while Wreckfest is running (not recommended). -Restore also takes the rswreckgarage-original
folder to put the whole pre-edit profile back.
The GUI uses the Canvas Suite "Classic" look (the fifteen --se-* values as a table, flat bordered
controls, one filled primary button, dim uppercase section labels) so it sits next to the other RS tools.
The tools were built for a row of sim-racing PCs that share one profile and each want their cars in a different color. That routine is: copy the master profile over -> run the GUI -> Replace blue with the PC's color -> Save (thumbnails cleared automatically) -> start the game.
python rswreckgarage.py dump wreckfest\cars5.ccrs
python rswreckgarage.py recolor wreckfest\cars5.ccrs --from blue --to red --include-unpainted --out cars5_red.ccrs
python rswreckgarage.py paint wreckfest\cars5.ccrs --color "#ff8800" --out cars5_orange.ccrs
python rswreckgarage.py career wreckfest\career.cres --credits 99999999 --xp 20000000 --fame 99999999
python rswreckgarage.py parts wreckfest\cars5.ccrs --car sweeper
python rswreckgarage.py equip-best wreckfest\cars5.ccrs
python rswreckgarage.py clear-thumbnails wreckfest
python rswreckgarage.py backups auto
python rswreckgarage.py restore wreckfest\cars5.ccrs.bak
make_colors.cmd :: one cars5.ccrs per color -> colors\<color>\Wherever a file is expected you can also give the profile folder, or auto for the first profile
found on this PC (e.g. python rswreckgarage.py career auto --fame 99999999).
Common options: --out FILE (default: overwrite input, .bak kept), --car "big rig,limo", --dry-run,
--clear-thumbnails, --force (write even while the game runs - not recommended). recolor:
--include-unpainted, --slots 1 (body only), --hue-tolerance 20. paint: --skip-unpainted,
--slot N. equip-best: --inventory FILE, --out-dir DIR. restore takes a .bak file, a file
inside rswreckgarage-original\, or that folder itself for the whole pre-edit profile.
Colors: red orange yellow lime green teal cyan skyblue blue purple magenta pink white black gray silver brown,
#rrggbb, rgb(r,g,b), hsv(h,s,v). Named colors use brightness 0.9, matching the game's own palette swatches.
- On the master profile: credits + XP so every part is buyable (
-Career/career). - Optionally
-EquipBest(rewritescars5.ccrsandplayerinventory2.usli- keep them together). - Play once, buy/fit whatever else you want, quit; that profile is the new master.
- Copy it to each PC, run the GUI there, pick the color, save. Done.
On a single PC just run the GUI against the live profile; see "Before you start" for the safety
net every write gets (snapshot, .bak, verified atomic writes, game-running check).
The in-game name is not stored in the profile: career.cres starts with a fixed label "Driver"
and the championship block merely snapshots the current name ("Guest1" here, empty in a fresh
profile). The game takes the name from Windows / GOG Galaxy at runtime. The GUI's name field edits
both strings anyway (harmless). A separate experiment, LaunchWreckfestAs.cmd Red, starts the game
with the USERNAME environment variable changed - it works only if the game reads that variable rather
than asking Windows directly.
All the profile files (cars5.ccrs, playerinventory2.usli, career.cres, records.ercs, ...) share one container:
u32 7 | 4-char tag reversed ("srcc") | u32 version
blocks: u32 compressed_size | u32 CRC32-C of the uncompressed data | LZ4 block
(64 KB uncompressed per block, blocks are LZ4 "linked")
cars5.ccrs: each car record starts with a nart chunk (internal key, display name, vehicle id),
then the fitted parts, then the paint:
usli | u32 2 | u32 1 | tspu | u32 2 | u32 32 | 32 x (4-char tag, string path, u32 item id)
usli | u32 2 | u32 1 | tspu | u32 2 | u32 0 | u32 0 (empty second list, purpose unknown)
sccv | u32 1 | u32 1 | u32 flags | 4 x (float hue_deg, float saturation, float value)
stsc | ...performance stats...
Color slot 1 is the body paint; slots 2-4 are the livery colors. flags bit 0 is set once a
custom color has been applied. Pure blue at full saturation is 240, 1.0, 0.9.
Part paths look like data/vehicle/37_european/part/engine/a_class/air_filter/racing.vefi; the ten
engine sub-parts come in tiers stock < street < sport < racing (not every vehicle has them). Every
part is an item with an id that is unique across cars5.ccrs and playerinventory2.usli (the
spare-parts list - the same tspu layout). Fitting a part = moving the item between the two lists,
which is exactly what equip-best does. It never invents new items: the counter the game uses to
hand out ids hasn't been located, and a "buy everything" mode would also need the part catalogue from
the game's .bfs archives.
career.cres: u32 len | "Driver" | u32 credits | u32 xp | ... (a fresh profile has 10 000 / 0);
ppsc | u32 5 | u32 | string name further in is the championship snapshot. The (solo) tournament
state is in the same file: a leot block with the season's events, ending in
neot(empty) | u32 fame | u8 season | nrpu(shop items) - that u32 is the fame balance (0 on a
fresh profile, season byte 0xff), and it survives the game's own re-save.
RSWreckGarage.cmd / .ps1 GUI + CLI, no dependencies (the one to copy to guest PCs)
rswreckgarage.py Python CLI, same features
favicon.svg the mark (the GUI draws the same wheel for its window icon)
make_colors.cmd one cars5.ccrs per color from a master profile in wreckfest\ beside it
LaunchWreckfestAs.cmd USERNAME experiment for the player name
samples/fresh-profile/ an anonymous fresh profile (34 cars, 10 000 credits) used by the tests
tools/selftest.py round-trip, edit-isolation and PowerShell-parity checks
tools/charcheck.py style check: no em/en dashes, scripts stay ASCII
tools/make-hero.ps1 regenerates docs/hero.png from a local profile (paths swapped for the standard one)
tools/make-social.ps1 regenerates docs/social-preview.png from the hero (GitHub's link-preview card)
docs/ hero.png (the screenshot above), social-preview.png
Real profiles (any wreckfest*\ folder, colors\, any *.bak) are git-ignored on purpose: they are
personal save data. Run python tools/selftest.py and python tools/charcheck.py before committing;
both must exit 0.
- Recoloring, credits, XP and fame are confirmed working in-game on the GOG version (the game re-saves the files in its own encoding and keeps the values; the tournament shop is pricey enough that 999,999 fame did not cover everything, hence the 99,999,999 default). Steam, Epic and MS Store locations are searched and protected by the same guards, but no edit has been confirmed in-game there. Equip-best and the name field are verified against the file format but not yet loaded in the game - try them on a copy first.
- If a huge XP value makes the level display look silly, lower it; the exact level curve isn't known.
- The Xbox / Game Pass version has no offline tournament, so a fame balance may be useless there (nothing to spend it on) or the counter may be absent altogether - in that case the tools find no fame slot and refuse to write one (the GUI greys the field out) rather than guessing.
- GOG Galaxy cloud saves may push an older profile back over your edited one; disable cloud saves for Wreckfest on the guest PCs if that happens.
- Backups pile up if you save a lot (
.bak2,.bak3...). They are plain copies - delete the older ones whenever you like; keepname.bakandrswreckgarage-original\if you want the pre-edit state around.
