This page explains how to name textures, objects and source files when creating tracks, as well as where these files are typically stored.
This page is a copy of our internal documentation, you may not wish to follow such strict guidelines all the time, however some of these conventions are required all the time.
Source files such as texture PSDs and similar should be stored in an appropriate sub directory in <LocationName>\Assets\SOURCE. There is no specific naming scheme at this stage for extra source files, but we advise people to name things sensibly.
Textures should be named according to a common nomenclature. Enforcing this will help in the future if we wish to apply a texture compiler which auto converts from uncompressed textures, as well as allowing artists to find the file they are looking very quickly.
Present File Naming
Below are some notes about various features of texture naming in rFactor.
- Textures should be named with a common unique identifier.
- It's very important that the same texture name does not occur twice inbetween cars and tracks for example.
- We also often use a character identifier for multiple versions of a same unique name. GrassA, GrassB etc. Some times a number is also used in this circumstance.
- When texture animations are used, two digits are added to the end of the texture name.
Below are a range of examples of unique identifiers.
- ArmcoA, ArmcoB, ArmcoC etc.
- BuildingA, BuildingB etc
- CmwallA, CmwallB etc
- CautionLightA00, CautionLightA01
Pre PBR, textures are named using the following standard, although it is not enforced all the time:
- Diffuse maps: They are either just named with their unique identifier, or with "_DIFFUSE" or "_DIFF" suffix.
- Specular maps: They are named with _SPEC or _SPECULAR suffixes.
- Normal maps: They are named with _NORM or _NORMAL suffixes.
- AO maps: They are named with _AO suffix.
For PBR we have standardised the naming much more. This allows us to have automated batch scripts convert textures based on the naming structure, from uncompressed to optimized for game distribution format.
As such it is proposed that textures are named as follows:
- MajorCategory (limit to 10 chars) is the encapulating group, such as BuildingA, PitBuild, GstandA, Terrain, Track, Walls, etc
- MinorCategory (limit to 10 chars) is the sub category of the item with an id if required, Main, Windows, Armco, Cmwall, RoadA, RoadB, GrassA, GrassB.
- MipInformation is for the auto generation of number of mip maps. This section should be in the format of "m" followed by the number of mips desired. For example "m6".
- Type refers to the what this texture's function is, and is described below in order to ensure that we can convert to the appropriate texture format in an automated fashion if desired. This includes information if the map has an alpha channel, and potentially it's function.
- TextureSequence is for any animations. Such as light sequences. This is optional.
Below are a list of suggested names for different types of materials. The idea here is that there should be a unique identifier which tells us what format the texture should be saved in and what it should do. These identifiers are also all unique from previous formats.
|Albedo Maps with no alpha channel||_Alb||All||sRGB, RGB (RGB: Albedo)|
|Albedo Maps with alpha channel||_Alba||All||sRGB, RGBA (RGB: Albedo, A: usually Opacity)|
|Albedo Map with roughness in alpha||_Albr||All||sRGB, RGBA (RGB: Albedo, A: Roughness)|
|Metallic Roughness||_Mr||Standard||Linear, RG (R: Metallic, G: Roughness)|
|AO Specular||_Aos||Standard, Road||Linear, RG (R: Specular, G: AO)|
|Normal||_Nm||All||Linear, RG (RG: Normal)|
|Overlay (with alpha)||_Ov(a)||Blend, Road||Linear, RGBA (RGB: Albedo Overlay, optional alpha)|
|Decals (with alpha)||_Dc(a)||Standard||sRGB, RGBA (RGB: Decal albedo, optional alpha)|
|Multiplication (with alpha)||_Mu(a)||Blend||Linear, RGBA (RGB: Albedo Multiplication, optional alpha)|
|Pattern||_Pt||Terrain||Linear, RG (R: Pattern 1, G: Pattern 2)|
|Mix||_Mx||Terrain||Linear, RG (RG: Mixmap)|
|Groove||_Gr||Road||Linear, RG (R: Groove upto 50% wear, G: Groove upto 100% wear)|
|Marble Dust Mask||_Mdm||Road||Linear, RG (R: Marble mask, G: Dust Mask)|
|Blend Wet Mask||_Bwm||Road||Linear, RG (R: Overlay Mask or Mix Map, G: Wet Mask)|
|Road Details Map||_Rdt||Road/Curb||Linear, RGBA (R: Dust, G: Groove, B: Wear, A: Puddles)|
|Blend Map||_Bl||Standard Blend||Linear, RG (R: Blend Mask)|
|Emissive Map||_Em(a)||Standard||Linear, RGBA (RGB: Emissive Light, optional alpha)|
|Splatter Map||_Spl||Terrain||Linear, RGBA (RGB: Blend Albedo Maps, A: Baked Shadows)|
|Cloud Map||_cl||Clouds||Linear, RG (R: Linear Albedo, G: Alpha Mask)|
Here are some examples of file names:
Non PBR Naming
This is legacy suffix for any non PBR content.
|Specular Map||_Spec||Linear, RGB|
|Multiplication Map||_Mul||Linear, RGB|
Objects should be named in a similar fashion to the textures. Ensuring that they are significantly unique to ensure that we will not end up with two objects of the same name between cars and tracks. Generally with cars the objects are prefixed by the car unique identifier, so this reduces the chances of this happening somewhat. There are also some specific naming procedures for certain objects.
The prefix "RaceSurface" is required to enable Real Road calculations on objects.
Max Scenes can become very large, for this reason we recommend splitting them up into smaller files.
Source files such as Max Files should be named <LocationName>_<Category>.max. For example LochDrummond_Terrain.max.
If a scene has been majorly refactored, you may wish to store a back of an old copy, this should be named with a subversion indicating it's a backup and the date it was made as such... LochDrummond_Terrain_backup210119.max.
Commonly used categories for other max files include:
However it may not be necessary to split the scene up so much depending on its size.
Max Files are stored in <LocationName>\Assets\SCENES.
Be sure to use unique names for Multi Materials in 3ds Max. Materials should be split up into multiple multi materials. For instance a single multi material for terrains, a single for armco, a single for walls etc. These should be named appropriately. Each building should also have it's own unique multi sub, also matched to the object name.
To keeps these named appropriately please ensure that the multi sub materials are prefixed with the name of the circuit, and then also the building or category they cover. For example:
For generic props these of course would not necessarily need the location prefix, but should be named suitably still.
It's super important that material names are kept unique. When modelling TSOs, be sure to prefix unique materials by the object name. There maybe some generic materials which are reused such as Glass though, although we should still avoid such generic material names, and go for more specific material names such as Glass_Dark.
Collision and Driveable Naming Conventions (TDF File)
Materials which require collisions need to be named with certain prefixes as defined in the TDF file to activate different properties when driving on or colliding with these objects. There can be many different material names to give different roads, curbs, grass, gravel and more different surface properties. Different barriers require unique materials too, such as Armco, Walls, Fences and Tyre Barriers.
These are not case sensitive, and there can be multiple prefixes for each profile.
Below are some of the prefix examples from the recent LeMans track building include the following:
- Standard Race Circuit Asphalt: RDRACEOLD
- New Race Circuit Asphalt: RDRACENEW
- Race Circuit Asphalt that is not a legal race surface:
- Street Asphalt that is used on the Circuit: RDSTREETGEN
- Street Asphalt that is not a legal race surface: RDSTREETOFF
- Painted non legal race surfaces: RDRACEPAINT
- Normal Grass: GRAS
- Rough Grass: GRXS
- Gravel: GRVL
- Smooth Rumble Strips: RMBLFLAT
- 3D Rumble Strips: RMBLRAZOR, RMBLUNIQUE
- Tyre Walls: TWALL, TYRE
- Concrete Walls: CEM, WALL, CMWL
- Armco Barriers; ARMCO, GRDR
- Safer Barriers: SAFER
Wet Surface Materials
Final materials which need wet weather reflections enabled require a "_WET" suffix on the end of them at present, as well as wet feature enabled shader.
It is important to use 3ds Max layers effectively to ensure that objects can be quickly enabled and disabled in a large scene. Not only will this make your workflow more efficient, it will also ensure that any other artist who has to work on the scene in the future is able to find things easily.
Firstly, anything that does not need exporting to rFactor should be saved in layers that are named with an underscore at the start of their name. This can be helper objects, splines, or even custom versions of the terrain you created to help place objects.
Then it is advised to layer things sensibly after this, and to make use of sub layers. Below are some suggested groups, however these will expand and contract depending on the nature of the location:
- Large Buildings
- Small Buildings
- Road Lines
- TSOs (Track side objects)
- RescueVehicles (near mashal posts)
- XData (xSectors, horizon meshes, IBL hulls etc)