Crashday has a lot of different files used for different things. Generally there are two types: text and binary ones. Binary files can only be edited using special programs, plugins or the game itself. Text files can be opened with any text editor, though using notepad is not recommended.
All the text files are based on the same format:
Every line is important. The game will look for a certain variable on a certain line position, so don’t add any additional lines etc.
After every line you can add a comment using # symbol. Everything after it on the same line will be ignored by the game.
CD uses a dot to represent decimal numbers e.g. 1.23
Colors are represented as RGB, channels are separated with a space e.g. 255 255 255
is white color.
Text based files
.amb Ambience definition
path: content/ambience/
Ambience files are used by the game to change weather. In general it is a way to change how light, reflections and sounds work in the level.
Here is a cleaned up version of CD’s day.amb
1 | PropsFX-Ambience-File # defines a start of an .amb file |
ladder.lst Career opponent list
path: content/career/ladder.lst
Ladder list defines the names of opponents in career mode. Opponent names in quickplay can be found in translations files.
1 | Crashday-CareerLadder # defines a start of ladder.lst |
.lst Shop list
Shop lists are used to display what can be bought in the shop. There are three main lists:
content/shop/cars/
carname
/
items will show up for the given car. In these files you want to specify vinyls, car perf upgrades etc.content/shop/cars/
weapons.lst
is a list of available weapons in game and will show up for every car under weapons category. Usually you don’t need to edit this, unless you want to change some weapon’s shop stat.content/shop/
items will show up for all cars. Generally the only thing you want there are wheels
Every .lst files consists of a first line and then any amount of entry blocks separated by an empty line.
1 | Crashday-ShopDataList # defines a start of a .lst file |
an example of an entry block:
1 | Next: #--------------------------------------------- |
If you want to add any part to the car, not only you have to have it in the model and listed in carinfo.cca, you will also need to create an .lst entry for that part. For every new car you also have to create a car entry, usually looking like this:
1 | Next: #--------------------------------------------- |
In every block, if the .lst file was loaded in the car folder you can use *currentcar*
text. When the game process the file it will automatically replace it with the cars identifier.
There are three possible availability conditions
- withrespect [number] This item will unlock after number amount of respect is gained.
- aftercarbought This item will be unlocked when you buy a car. Can only be used for items with specified parent object.
- always This item will by always unlocked.
nowhere it is specified what car is used, so i guess the parent object is used for aftercarbought condition. But seeing how its named parent object originally and not car parent, makes me think we could define another item or something else as parent? Stackable objects or smth?
.tex Texture shader
path: found in the same folder as any texture you use. Has the same name as the given texture, but the .tex format.
These files define how textures are rendered in game.
1 | has_alpha # defines if the texture has opaque places. If it does not, comment out that line or leave it blank. !The line still should be there! |
There are multiple possible shader types. Each of them defines how the following lines are read. Next up you will see a list of shader types followed by their used variables.
1 | default # simple diffuse lighting (default shading type) |
1 | additiveblend # additively blended textures |
1 | specularvertex # diffuse lighting with specular reflection map |
1 | diffuseenvmap # diffuse lighting with environment mapping |
1 | chrome # chrome shader(great job explaining what it actually is) |
1 | use_shaderparams_from # reference to other .tex file to pick shader specified there |
These were taken from the old sdk, but looking at the reversed Crashday source code, these were also found: diffuse(possibly one parameter, should be the same as default), specularmapping(first variable is graphics setting, then something else?), alphatest, alphatestdoubleside, alphadoubleside
.cdo Dynamic object definition
path: content/dynamics/
These files define dynamic objects that can be placed on the map. To add an object to the editor, you will also need to add a .cat file
1 | Crashday-DynamicObject-File # defines a start of a .cdo file |
.tun Tuning definition
path: cars/*carname*/ .tun
These files has a list of all possible tuning parts which the cars could. If you want a part to be purchasable, you also need to define a .lst file for said item.
Generally a .tun files starts like this:
1 | # Crashday Car Tuning definition file |
Don’t forget to adjust the amount of items line if you add or remove anything.
after the first block on every line you will have a separate tuning item. Every one of those should start with a unique identifier, which will be used in the shop lists and carinfo.cca to define bot setups.
1 | name=meme1 *tuning item* |
Every tuning item can have multiple parameters, separated with a space. For parameters starting with add
, you can use negative values to remove some amount from that parameter. But be sure that total value would not go beyond possible limits e.g. a part that makes a car negative mass.
If the parameter starts without add
, it’s value will be multiplied with current value.
Here is a list of possible parameters:
- Physical tuning
add_massadd=
Amount of mass to add to the car.add_horsepower=
Amount of horsepower to add. This is a cosmetic value showed in garage.add_topspeed=
Amount to rise the top speed by.add_torquenm=
Amount of acceleration torque in Nm.add_antirollheight=
Amount of anti-roll in metersadd_trackfront=
Length of the front wheel track. Positive values move the wheels away from center.add_trackrear=
Same as add_trackrear but for rear wheels.add_wheelposyfront=
Vertical position of the front wheels with fully compressed springs.add_wheelposyrear=
Same as add_wheelposyfront but for rear wheels.brake=
Brake strength.diffratio=
Differential value.energyloss=
Amount of energy lost when the car gets hit.crashpower=
Amount of energy car gives to other cars on hit.deform=
Car’s deformation strength.springstiffness=
Suspension spring stiffness.springrange=
Suspension spring length.springdamping=
Suspension spring damping.
- DECALS/VINYLS & EFFECT PAINT
decaltype=decal
Defines a decal. Has to be present.decal1=
Texture name for the first decal e.g.decal2a.tga
. It is possible to add three more decals, just change the number (decal3=meme.tga
)decalcolor=
RGB hex color value (without ‘#’ or ‘0x’) to be multiplied with the decal textures.tex1toapplydecal1=
Name of the texture (body2.tga
to applydecal1
to. Change the last number to change the decal number applied. Change the first number if you want to apply to multiple textures (text2toapplydecal1=body2.tga
should work)
- OTHER
add_carclass=
Upgrade the car’s class. This can “0.5”, “1”, “1.5”, “2”. An upgrade of “1” is equal to increase the classification by one classification letter, like from a “B” to an “A” car.engsound=
Change the engine sound set.ignitionsound=
Change the ignition sound set.turbonoise=
Change the volume of turbo blow off from 0 to 1.gearboxnoise=
Change the volume of gear box noise from 0 to 1.backfires=
Change the intensity of backfires from 0 to 1.add_missilecapacity=
Amount of starting missles of the car.shift_exhaust1x=
Move the first exhaust on the X coordinate by this value. Change the last letter toy
orz
to move in other coordinates.shift_exhaust2x=
Same as previous but for the second exhaust.p3dmesh1=
Add a mesh to the car. Parameter can end from 1 to 16.removemesh1=
Remove a mesh from the car. Also ends from 1 to 16. Note that this should be used only to remove non tuning meshes, the ones specified in mesh list incarinfo.cca
.
.cfl Field object definition
path: /tiles/
These files are used to add tiles to the game.
1 | Crashday-FieldObject-File |
Crashday allows tiles to be bent using heightmaps in editor. Usually for that, tile models are pre-cut every meter. But sometimes you don’t want that, to avoid strange results e.g. misshaped houses on a slope. For that we can use the last parameter in .cfl, to restrain bending on certain axes. Here is an image to explain possible choices.