For the LOD mesh, the UV mapping must be within the 0-1 area (main tile) of the UV map, no tiling is allowed. This
is because ingame all the LOD textures are combined into a single texture called an atlas, so having incorrect uv
mapping will end up putting the texture of some other random vehicle on your LOD.
UV mapping for LOD mesh using automatic mapping in 3ds Max. No overlap and contained within the main tile - good for
All imported main textures must be the same resolution.
Powers of 2 is a standard practice in 3D graphics, which means resolutions such as 1024x1024, 1024x512, 256x512,
2048x128 etc. It is recommended to stick to this standard, otherwise, your texture may be corrupted by compression,
which may be more visible at longer distances or grazing angles. The smallest allowed resolution is 32x32.
Texture sizes of various vanilla assets. See the resolution in the top right corner of the preview window.
Make sure texture quality is set to high in the game's graphics settings. otherwise, your imported textures will be
downscaled to a lower resolution.
If you don't provide LOD textures, the game will try to bake them using the UV mapping your LOD mesh has, and that may cause
visual issues, so it's recommended that you create your own LOD textures using baking.
For the default vehicle shader (used by cars, trucks, bicycles, scooters, buses, trams), this defines headlights and
turn signals. The turn signals are 0 (black) the headlights and taillights are 255 (white), everything else is 128
For the train shader, this defines always-on lights (headlights/taillights) and lights which are only on at night
(windows). The always-on lights are 255 (white) and the night lights are 0 (black), everything else is 128 (medium
For the ship shader (used by ships, monorails, cable cars), this defines lights which are only on at night (windows). The
randomly changing night lights are brighter or darker than 128. If they are much darker or brighter than 128 - they will never
go dark. Everything else is 128 (medium gray).
For the aircraft shader (used by helicopters, blimps, planes), this defines lights which are only on at night (windows) and
always-on diffuse contribution illumination. The window lights are above 128 and the diffuse contribution illumination is below
128. Everything else is 128 (medium gray).
If you don't import an illumination map, it will default to black.
The normal map generator should be set to +X +Y, which means no color channel inversions are required. Read more in the normal map article .
High specularity and normal map don't work well together because of the compression, so you might want to paint over
shiny parts with a solid color before generating a normal map or paint over these parts 128,128,255 on the final normal
If you don't import a normal map, it will default to a flat normal map - no bump.
Example normal map for rocks.
Problem: normal maps appear incorrectly if the asset importer mesh rotation feature is used.
Problem: default normal map value is 0.5, which isn't possible by using 127(left) or 128(right). Image shows the
same flat normal map on faces with different UV rotation/flip.
The game supports other formats as well, but there is no reason to use another one, it doesn't matter how much your texture is
compressed or even if it's completely solid or complicated, the game will convert it to a DXT format, so the final size won't be
affected by anything other than resolution.
Make sure the texture is 8 bits/channel because a 16 bits/channel image can't be imported. Do not use the "Smaller File (8-bit)"
feature in the Photoshop Export As window, as that creates an indexed color image, not an 8 bits/channel one.
After you choose your mesh, depending on how it was exported, you might need to set the correct scale and rotation,
scale 100 and rotating 3 times around X-axis are common necessities.
Importing a mesh in asset importer.
Using the mesh rotation feature will result in broken mesh tangents - that means the normal maps will appear incorrectly
or not at all on some parts. To fix this, don't use the rotation feature and make sure the mesh is rotated properly
before import. If you need to use the mesh rotation feature - use the Mesh Import Rotation Tangents Fix mod to fix it.
If you get an unsupported color error, one of your textures might be a 16 bits/channel file, you need to change it to 8
bits/channel, in Photoshop: Image > Mode > 8 Bits/Channel.
If the mesh preview doesn't display or you can't continue, you may have a problem with it such as multiple mesh objects,
other entities like dummies, cameras, lights, or layers in the exported file.
You can add additional meshes as sub-meshes, which appear only when certain conditions are met, for example - the vanilla bus
has a left hand traffic sub-mesh, and the forestry trailer has a loaded trailer sub-mesh.
Train trailers can display different sub-meshes based on the cargo type they are carrying using this mod .
Active for vehicle trailers which have been inverted based on the invert probability of the trailer. Usually used for randomly
inverted train passenger cars and the last trailer of a train - the inverted train engine.
When loading a trailer template, the sub-mesh UI doesn't show up. To fix this, open the scene explorer, go to Tool Controller > ToolController > m_editPrefabInfo > m_placementStyle
and set it to automatic, save and load the asset, the sub-mesh UI should show up. Once you add the sub-mesh, change m_placementStyle back to procedural and save your asset.
The flags for the main mesh and sub-meshes are oversimplified in the UI. The main mesh conditions are actually just like for any
sub-mesh, and the regular flags and parked flags are separate fields. You can change them using this script .
On the snapshot image, bottom right corner. Use this one to replace the snapshot, you can replace it with a 1x1 px image to save
on the asset file size. This image will only be visible in the content manager. It will also default as the Steam preview image,
but you can change that separately when publishing.
Below thumbnail, on the right side. Use this one to change the thumbnail (109x100) and tooltip (492x147) of your asset.
Once you change the main thumbnail, the hover/active states will update automatically.
There is a folder icon again on the snapshot image, bottom right corner. Here you can change the Steam preview image,
which is the thumbnail visible on steam. The largest size the image will be visible is 437x437 (on the front page) but
it will get upscaled to 512x512 by Steam so that's the size you should use.
There is also the content folder, which is where the actual asset file is. You can paste multiple .crp files here if you
would like to upload a pack of assets.
To update your own item, you must subscribe to it first, then it will show up in the content manager. It won't be the same as a
local asset, as it will show an "update" button.
When you click update, click the folder icon, and now you can change the Steam preview image and put your new asset in the
content folder. If updating a pack, remember to put all the assets inside the content folder.
You can also add more assets to make it a bigger pack.
Make sure your updated assets are saved with exactly the same name as before, otherwise, it will disappear from your
subscribers' saves, as the game uses the internal prefab name to refer to it. In the case of networks (roads, tracks
etc.) it may completely break a save.