ACC Custom Liveries – What is a Custom Livery
In ACC a Custom Livery can be created using the built in editor, which captures your choices into a JSON file. If this is enough for you, nothing else is needed. The JSON file is automatically shared with all drivers in a multiplayer session and ACC knows how to render the car in the garage and on track.
However this might not be enough, you might want more control of your car design, colours, stickers and sponsors. For this you will combine a file created using the built in editor with a folder containing a set of image and JSON files. These files are stored in two locations within your Documents folder. The two locations are within the Assetto Corsa Competizione\Customs folder shown below.

Inside the Customs folder the two locations are the Cars and Liveries folders.

Custom Livery Files
For a truly Custom Livery where you have full control, consists of either three or five files that you create, depending on how you implement your livery, and other files that ACC generates from your files. The files you create are
- Car Definition – JSON file
- Decals Config – decals.json
- Decals Image – decals.png
- Sponsors Config – sponsors.json
- Sponsors Image – sponsors.png
So why did I say three or five files earlier. The conventional way to create a livery is using all five files and allow ACC to apply your design in two layers. However it is possible to put your design on just one of the image files, provide the image file and a corresponding config file and ACC will still be able to apply the design. So how do you know when to do one or the other.
Well I recommend always going with all five files, I have seen problems with liveries that are applied on just one layer, but to understand why you might choose to go with just three you need to understand how ACC uses the files you create.
How Do Custom Liveries Work
When you enter the garage to select a car, ACC scans the Cars folder shown earlier and displays a tile for each Car Definition it finds using the Team Name in the file to label the tile. If the Car Definition points to a folder in the Liveries folder shown earlier it will use the files in that folder to display the car design.
However the images you provide are 2D, that is flat images. To display your car realistically it needs to convert your flat images into 3D models that it can render both in the garage and on track. These files have a .dds extension and ACC creates one for each layer of your design.
You can usually tell when ACC is generating the .dds files. The first time you load a car with a Custom Livery into the garage there will be a delay before anything is displayed, how long the delay is depends on your computer, on a high spec gaming machine it may only be a second or two, on a lower spec machine it could be up to thirty seconds. This delay is ACC generating the first set of .dds files used to display the car in the garage. Once you have selected the car and start a driving session, you will experience a second similar length delay as ACC generates a further .dds file that it uses to render the car on track. In future both steps will be much faster because the .dds files already exist.
ACC applies your design in layers. First it applies the design configured in the Car Definition. If the decals.json file exists it is used to set the base appearance of the next layer, then it applies the design in decals.png. If the sponsors.json file exists it is used to set the base appearance of the next layer then it applies the design in sponsors.png.
So if you want to do something simple with your design, perhaps you just want a set of custom stickers or a custom sponsor on your car then you could do this simply on one layer using decals.png and decals.json or alternatively sponsors.png and sponsors.json. In this scenario ACC will take the colour scheme for the car created using the built in editor and overlay the custom content from your single image file.
Even if you are planning on a complex design with a complex colour scheme , custom stickers and sponsors you could use just one pair of files (json and png), so why wouldn’t you do this all the time and keep it simple. Well some well known livery designers who sell their designs do just that and there is nothing wrong with it. As mentioned my personal preference is to always use separate decals and sponsors files, but there is one scenario that will force you down this route. To understand this scenario you need to understand what Material Properties are and how decals.json and sponsors.json used to apply them.
What Are Materials
In the world of 3D we of course use Colours, but colours are flat 2D entities. In the 3D world (game development, cinematic scenes) entities known as Materials are used to describe how an object should look. Colours are typically defined using multiple channels using schemes like RGB(Red, Green, Blue) and HSV (Hue, Saturation, Value), for some image formats like PNG it is possible to use an Alpha channel to make a colour see through (transparent or opaque) giving it a 3D like appearance but that is quite limiting. To make objects look realistic we need to define additional attributes and this is exactly what Materials allow us to do.
A Material can define nothing more than a colour, but they can do so much more. Materials have attributes that determine how shiny a surface is, how rough it is and by combinging specific types of images referred to as maps a flat surface can be given a complete 3D look. We don’t have all of these capabilities in our Custom Liveries but through decals.json and sponsors.json we can apply limited Material Properties to the layers of our design.
When you use the built in Livery Editor you will notice as well as choosing colours you can choose options like Matte, Glossy and Metallic. These options apply Material Properties to the selected colours to get the desired effect on the car surfaces. These same Material Properties can be applied to the layers of your design.
Both decals.json and sponsors.json are in the same format and provide the same set of Material Properties for you to configure. Here is an example.
{
"baseRoughness": 0.45,
"clearCoat": 0.1,
"clearCoatRoughness": 0.3,
"metallic": 0
}
All attributes can be set to values in the range 0 to 1.
baseRoughness
This determines how smooth or rough the surfaces of the layer look 0 = completely smooth, 1 = completely rough. The following screenshots are of a Red Material defined in a game development tool with Roughness values of 0, 0.5 and 1.



clearCoat
This determines how glossy the surfaces of the layer look 0 = not glossy 1 = fully glossy. Think of this as painting a surface with a colour than adding a coat of clear varnish to give it a glossy sheen. The following screenshots are of a Red Material defined in a game development tool with Roughness at 0.5 and Clear Coat values of 0, 0.5 and 1.



clearCoatRoughness
Similar to baseRoughness this determines a level of smoothness or roughness that is combined with clearCoat. The following screenshots are of a Read Material defined in a game development tool with Clear Coat at 0.5 and Clear Coat Roughness values of 0, 0.5 and 1



metallic
This determines how much the surfaces of the layer look like metal. 0 = not metallic 1 = fully metallic. The following screenshots are of a Red Material defined in a game development tool with Roughness at 0.5 and Metallic values of 0, 0.5 and 1



Multi Layered Scenarios
So earlier it was mentioned there is one scenario where you will be forced to use the multi layered approach and create both decals.json, decals.png, sponsors.json and sponsors.png. That scenario is where you want to apply different Material Properties to each layer. Some examples are:
You want the colour scheme of your car to be metallic, but you want the logo of a sponsor on the car to be matte.
You want to mix matte and metallic surfaces on your car.
You want the base colour scheme to be satin metallic but you want a matte stripe running the length of the car.
All of these scenarios require you to paint part of your design in decals.png with decals.json configured to apply the appropriate Material Properties then the rest of the design in sponsors.png with sponsors.json configured to apply the appropriate Material Properties.
Here are some examples you might want to try. These were made available for us by Ohne Speed via his YouTube tutorials.
// chrome
{
"baseRoughness": 0,
"clearCoat": 1,
"clearCoatRoughness": 0,
"metallic": 0.9
}
// glossy
{
"baseRoughness": 0,
"clearCoat": 1,
"clearCoatRoughness": 0,
"metallic": 0
}
// matte
{
"baseRoughness": 0.45,
"clearCoat": 0.3,
"clearCoatRoughness": 0.6,
"metallic": 0
}
// metallic
{
"baseRoughness": 0,
"clearCoat": 1,
"clearCoatRoughness": 0,
"metallic": 0.625
}
// satin metallic
{
"baseRoughness": 0.3,
"clearCoat": 0.5,
"clearCoatRoughness": 0.3,
"metallic": 0.7
}
// satin
{
"baseRoughness": 0.45,
"clearCoat": 0.1,
"clearCoatRoughness": 0.3,
"metallic": 0
}
Now you know how Custom Liveries work in ACC we can move on to creating some. We will start very basic and move on from there.
