Overview
With this guide I will give you an overview about modding in Transports.
Overview
This guide will give you an overview about modding in Transports.
Transports supports two ways of modding.
First: themes. Themes should give the player a complete Transports content set.
Second: mod files.
In this guide I’ll focus on the mod files.
Please note:
Some of the attribute/object names and ids are inconsistent or english/german mixed.
The Guide is currently incomplete. Descriptions for the objects are missing. I’ll update the Guide soon with the missing information.
Uploading a mod
The game will search for mod files in ..DocumentsTransportsMods.
( or ..DocumentsTransports TestingMods if you are using the testing branch version)
Copy your mod files into that folder and start Transports.
Go to Play ->Additional content->Manage.

In the top image list you can find all the available mod files in the Mods directory. Select the Mod you want so upload and hit the Upload button.
Now wait for the file being uploaded successfully. That may take a while depending on your internet connection and the mod file size.
Before uploading the game copies the mod file to the Modsupload folder and modifies it so it can not be uploaded by other players. Also a preview.png file will be copied the the Mods folder. This file will be used as the preview image in the workshop for that item.
The bottom image list will update when the upload was completed.
Currently there is a 500MB and max. 30 mod files limit.
Updating a mod
The game will search for mod files in ..DocumentsTransportsMods.
( or ..DocumentsTransports TestingMods if you are using the testing branch version)
Copy your mod files into that folder and start Transports.
Go to Play ->Additional content->Manage.

In the top image list you can find all the available mod files in the Mods directory. Select the Mod you want so update to the workshop. Select the existing one in the workshop from the bottom image list that you want to override with the new mod file. Click the update button.
Now wait for the file being uploaded successfully. That may take a while depending on your internet connection and the mod file size.
The bottom image list will update when the upload was completed.
If you want to change the titel or description of your workshop items go to your Steam profil->content->workshop objects.
Deleting a mod
If you want to delete an existing mod you uploaded in the past from the workshop go to your Steam profil->content->workshop objects. Open the workshop item you want to delete and click delete.
Creating a mod
Create a folder where you want to add all the mod content and create a txt file in it and add the content you want to it.
Content
ThemeName
ThemeName defines the name of your mod.
ThemeName=”Sample mod file”;
ThemeDescription
ThemeDescription defines the description of your mod.
ThemeDescription=”Mod extends the game by a new vehicle.”;
ThemeAuthor
ThemeAuthor defines the author of your mod.
ThemeAuthor=”Your name.”;
ThemeUpdateDescription
ThemeUpdateDescription defines the update information of your mod.
ThemeUpdateDescription=”Version 4: Fixed a bug.”;
Version
Version defines the version of your mod. It’s an integer value.
Version=1;
ThemeImage
ThemeImage defines the image file that will be shown in the mod list ingame. The image should be 64×64 pixels and needs to be in the DDS format.
ThemeImage=DataModIcon.dds;
ThemeStartYear
Set the ThemeStartYear with an integer value to change the themes start year.
ThemeStartYear=1900;
ThemeEndYear
Set the ThemeEndYear with an integer value to change the themes endyear.
ThemeEndYear=2200;
ThemeLanguageFile
Set the ThemeLanguageFile to add language data to the game. The content from the file will add and override existing language data.
ThemeLanguageFile=lang.txt;
ThemePeriod
Attribute
Accepted values
Description
Name
String
Id of the ThemePeriod-object
ThemePeriodName
String
Caption of the ThemePeriod
ThemeStartYear
Numeric value
ThemePeriod start year
ThemePeriodBuildingsSmall
Comma seperated string of Building ids
Buildings of the small size
ThemePeriodBuildingsMid
Comma seperated string of Building ids
Buildings of the medium size
ThemePeriodBuildingsLarge
Comma seperated string of Building ids
Buildings of the large size
OPTION
a for add, o for override, c for clear or m for merge
add, override an existing or merge the object with an existing one – important attribute for mod creation, without it it will be ignored
ThemePeriod= { Name=StandardThemePeriodName1950; ThemePeriodName=language.StandardThemePeriodName1950; ThemeStartYear=1950; ThemePeriodBuildingsSmall=SmallHouse1975_1,SmallHouse1975_2,SmallHouse1975_3,SmallHouse1975_4,SmallHouse1975_6,SmallHouse1975_7,SmallHouse1975_8,SmallHouse1975_9; ThemePeriodBuildingsMid=MidHouse1975_1,MidHouse1975_2,MidHouse1975_3,MidHouse1975_4,MidHouse1975_5,MidHouse1975_6,MidHouse1975_8,MidHouse1975_9,MidHouse1975_10; ThemePeriodBuildingsLarge=LargeHouse1975_1,LargeHouse1975_3,LargeHouse1975_6,LargeHouse1975_8; OPTION=a; };
Building
Attribute
Accepted values
Description
ID
String
Id of the ThemePeriod-object
Object
Object id
The object displayed after construction
Populution
Numeric value
Populution given by the building
BuildTime
Numeric valu
Build time in days
ConstructionObject
Object id
The object displayed while construction
Name
String
The name of the building
DestroyedObject
Object id
The object displayed after destruction
OPTION
a for add, o for override, c for clear or m for merge
add, override an existing or merge the object with an existing one – important attribute for mod creation, without it it will be ignored
Building= { ID=SmallHouse1; Object=SmallHouse1; Populution=5; BuildTime=20; ConstructionObject=SmallConstruction; Name=language.StandardThemeBuildingName1; DestroyedObject=DestroyedBuildingSmall; };
Object
Object= { ID=Building2_1_1; File=ObjectsBuildings1975Building2_1_1.dat; Textures=Building2_1_1,Building2_1_1spec,Building2_1_1env,Env1; AdditionalObject=Side1x1,Plane1x1building2; };
CommodityGroup
CommodityGroup= { Name=Waren; Caption=language.Waren; CapAdd=language.ton; Description=language.WarenDesc; };
Ware
Ware= { Name=Fleisch; Value=61; Caption=language.Fleisch; Description=language.FleischDesc; CapAdd=language.ton; LoadingTime=0.05; Group=Nahrungsmittel; DeclineAfterDays=45; DeclineTime=30; WasteProduct=Abfall; Weighting=1.0; Object=Waren; };
Industrie
Industrie= { Name=Kohletagebau; Caption=language.Kohletagebau; Requirement=; Output=Kohle,240; Accepted=Maschinen,50; Objects=Kohletagebau; Water=false; Snow=true; Fence=true; Minsize=3; Maxsize=3; ProducesEnergy=false; NeedsEnergy=false; StartYear=1950; Costs=37000000; Description=language.KohletagebauDesc; AvailableOnStart=true; AmbientSound=Ambient_Industry; Upgrades=KohletagebauLager,KohletagebauLager; };
IndustrieUpgrade
IndustrieUpgrade= { Name=KohletagebauLager; Caption=language.KohletagebauLager; Description=language.KohletagebauLagerDesc; ProductionBonus=0.1; Object=KohletagebauLager; Width=2; Height=2; Costs=500000; };
Blueprint
Blueprint
Texture
Texture= { ID=Building2_1_1; File=ObjectsBuildings1975Building2_1_1.dds; Type=ALBEDO; };
Unit
Unit= { Name=Bus1957; Type=BUS; Caption=language.BusP57; Description=language.BusP57Desc; Year=1957; Capacity=Passagiere,25; Object=Bus1957; PossibleAttachments=; AttachmentCount=0; Acceleration=1.0; TopSpeed=1.1; Replaces=Bus1950,Bus1957; Costs=29000; OperatingCosts=2300; VehicleOnEndOnly=false; VehicleDistaceToNextTrailer=0.25; AdditionalUnit=; SpeedReductionPerTrailer=0.0; MaxAge=15; ProfitScale=1.0; Upgrades=UpgradeBus1957_Capacity,0,0,0,UpgradeBus1957_Age,0,0,0; Maintenance=100; AgeLoss=0.001666; Personal=Driver; };
City
City= { Name=CityLevel1; Accepted=Passagiere,0.5,Post,0.25,Wasser,13.0; Produced=Passagiere,0.3,Post,0.075,Abfall,0.1,Abwasser,11.0; Population=0; Caption=language.CityNameVillage; EnergyConsumption=0.02; };
GUIOverrideTexture
GUIOverrideTexture= { Name=Ware1; File=ObjectsGUIWareWaren.dds; };
GUIOverrideControl
GUIOverrideControl
Upgrade
Upgrade= { Name=SpeedUpgrade1; EnhancementValue=Speed; Value=0.1; };
VehicleUpgrade
VehicleUpgrade= { Name=UpgradeLKW1950_Speed; Caption=language.UpgradeLKW1950_Speed; Description=language.UpgradeLKW1950_SpeedDesc; PreviewModel=LKW1950-Hat; Model=LKW1950-Hat; ResearchCosts=1000
Creating a mod 2
AirportMovement
AirportMovement= { Name=AirportSmallLoadingToDepot2; Waypoints=2,2,0,0.75,2,1,0,0.75,1,1,0,0.75,0,1,0,0.75,0,2,0,0.75; };
Airport
Airport= { Name=AirportSmall; Caption=language.AirportSmall; Width=4; Height=3; DepotToWaiting=AirportSmallDepotToWaiting; DepotToLoading=AirportSmallDepotToLoading1,AirportSmallDepotToLoading2; LoadingToWaiting=AirportSmallLoadingToWaiting1,AirportSmallLoadingToWaiting2; LoadingToDepot=AirportSmallLoadingToDepot1,AirportSmallLoadingToDepot2; LandingToWaiting=AirportSmallLandingToWaiting; WaitingToLoading=AirportSmallWaitingToLoading1,AirportSmallWaitingToLoading2; WaitingToDepot=AirportSmallWaitingToDepot; WaitingToStarting=AirportSmallWaitingToStarting; WaitingForLanding=AirportSmallWaitingForLanding; Model=FlughafenKlein; DepotX=0; DepotY=2; };
Audio
Audio= { Name=Music1; File=ObjectsMusicmenu.wav; Application=MenuMusic; };
TileRotation
TileRotation= { Name=Field1; Function=Field1; TileRotation=Feld1,Feld2,Feld3; };
Tile
Tile= { Name=Gras; TextureFile=ObjectsTilesGras.dds; TileRotation=; Application=Base; };
Script
Script= { Name=WorldEvent1; File=ObjectsScriptWorldEvent1.script; };
WorldEvent
WorldEvent= { Name=Wirtschaftskrise1; Year=1973; Month=5; Script=WorldEvent1; };
Manufactory
Manufactory= { Name=TruckInc; Caption=language.Manufactory3; Description=language.ManufactoryDesc3; Width=4; Height=3; Model=ManufactoryStreet; Year=2010; Vehicle=Truck2010,Computerchips,500,Maschinen,750,Werkzeug,750; Vehicle=Drone1,Computerchips,1500,Maschinen,1250,Werkzeug,500; Vehicle=DroneAtt_Passenger,Computerchips,50,Maschinen,100,Werkzeug,100; Vehicle=DroneAtt_Post,Computerchips,50,Maschinen,100,Werkzeug,100; Vehicle=DroneAtt_Box,Computerchips,50,Maschinen,100,Werkzeug,100; Vehicle=DroneAtt_Nahrung,Computerchips,50,Maschinen,100,Werkzeug,100; Vehicle=DroneAtt_Genuss,Computerchips,50,Maschinen,100,Werkzeug,100; Vehicle=DroneAtt_Luxus,Computerchips,50,Maschinen,100,Werkzeug,100; Technology=TruckTechnology1_1,TruckTechnology1_2; Technology=TruckTechnology2_1,TruckTechnology2_2; Technology=TruckTechnology3_1,TruckTechnology3_2; Technology=TruckTechnology4_1,TruckTechnology4_2; };
Prestige
Prestige= { Name=PrestigeState1; Model=PrestigeState1; Requirement=; }; Prestige= { Name=PrestigeState2; Model=PrestigeState2; Requirement=Stahl,5000,Holz,2500,Maschinen,2500; };
PrestigeProject
PrestigeProject= { Name=PrestigeTowerOfTheFuture; Caption=language.PrestigeProject1; Description=language.PrestigeProjectDesc1; Stages=PrestigeState1,PrestigeState2,PrestigeState3; Costs=50000000; Width=7; Height=7; };
DecorativeObject
DecorativeObject= { Name=ZierobjektPark; Caption=language.DecorativeObject01; Description=language.DecorativeObject01Desc; Model=Zierobjekt01; Costs=200000; Value=-0.2; };
StationUpgrade
StationUpgrade= { Name=AirportLounge; Caption=language.AirportLounge; Description=language.AirportLoungeDesc; Model=Lounge; Costs=500000; Value=0.25; Width=1; Height=1; Modifier=ATTRACTIVENESS; };
Station
Station= { Name=Haltestelle; Caption=language.Haltestelle; Description=language.HaltestelleDesc; Type=BUS; Models=Haltestelle,Haltestelle2,Haltestelle3; MonthlyCosts=100; Costs=5000; Capacity=50; Upgrades=ParkingSpace; PlantingType=0; UpgradeCosts=10000; UpgradeCapacity=25; };
CityTask
CityTask= { Name=CityTask01; Caption=language.CityTask01; Description=language.CityTaskDesc01; News=language.CityTaskNews01; Requirement=Fruechte,400; Reward=200000; Duration=12; };
Opponent
Opponent= { ID=Opponent01; Name=language.aiName01; Description=language.aiDesc01; Speed=240; Aggressiveness=10; Money=500000; Preferences=TRUCK,10,BUS,5; reaction_sabotage_mad=sabotage_mad; reaction_sabotage_neutral=sabotage_neutral; reaction_sabotage_positive=sabotage_positive; reaction_sabotage_attempt_mad=sabotage_attempt_mad; reaction_sabotage_attempt_neutral=sabotage_attempt_neutral; reaction_sabotage_attempt_positive=sabotage_attempt_positive; reaction_citybuild_mad=citybuild_mad; reaction_citybuild_neutral=citybuild_neutral; reaction_citybuild_positive=citybuild_positive; reaction_vehicle_explode=vehicle_explode,vehicle_explode1,vehicle_explode2; };
OpponentReaction
OpponentReaction= { ID=sabotage_mad; Text=language.sabotage_mad; AudioFile=; };
Biome
Biome= { Name=Grasslands; Caption=language.Grasslands; GroundTile=Gras; TileForBiomeSwitch=GrasToGrasDunkel,DunklesGrasslands,GrasToDesert,Desert; TileForDirt=Erde; TileForDirtToBase=GrasErde; MinHeight=0; MaxHeight=5; Fields=true; Forests=true; Vegetation=bush1,stone1,tree1,tree3,tree4,BaumNew01; AmbientObjects=Funkturm,Jagdhochsitz; AmbientSound=Ambient_Forest; };
Personal
Personal= { Name=Pilot; Caption=language.StaffPilot; Upgrades=StaffNoAdvantage,SpeedUpgradeStaff; };
PersonalUpgrade
PersonalUpgrade= { Name=BreakdownTimeStaff; DescriptionMale=language.BreakdownTimeStaff1; DescriptionFemale=language.BreakdownTimeStaff2; Level=1; Upgrades=BreakdownTimeStaff; };
Technology
Technology= { Name=TruckTechnology1_1; Caption=language.TruckTechnology1_1; Description=language.TruckTechnology1_1Desc; Vehicles=Truck1950,Truck1960,Truck1968,Truck1990; Upgrades=TechUpgradeSpeed; Requirements=Holz,50; };
Convert your mod txt file
Open the Transports MOD Tool and click the “Convert mod txt” button.
Drag and drop your mod txt file into the Transports MOD Tool window. A .dat file will be generated which included all the mod content. Copy that file to the Transports Mods folder in ..DocumentsTransportsMods.
The mod in than usable and or uploadable from inside the game.
Currently the Transports MOD Tool is only available on the discord server.
Sample
Version=1; ThemeName=”Speed Mod for truck 1950″; ThemeDescription=”This mod increases the vehicle speed of truck 1950.”; ThemeUpdateDescription=; ThemeAuthor=”Name”; ThemeImage=ModIcon.dds; Unit= { Name=Truck1950; TopSpeed=2.0; OPTION=m; };