Contents
Introduction
The following page contains modding guidelines for the new update of the game.
To better understand changes in units it is recommended to check Units documentation page.
Recommendations
- When basing your model on the original ones, add to your mod also ALL original /automat/ files used by it. The names of the files are generated as CityHash64 hash of theirs content so whenever we change the parameters of the material in any way, a different file will be used to store them and the original file might cease to exist if there is no other model utilizing the original parameters.
- When modifying original models, always include ALL components of the model (pmg+pmd) instead of just those you changed. Otherwise you risk crash if we change the model.
- As always when adding new objects to files which support multi-file approach (e.g. road_look.sii) it is HIGHLY RECOMMENDED to use suffix or prefix in the name to avoid conflicts with new objects we are adding in patches. Otherwise you might have to use the batch renaming functionality (see Batch renaming) to fix the conflicts when new patch appears.
How to convert map
- If your mod adds Estonia, Latvia, Lithuania, Russia or Finland update your country, ferry, semaphore model and semaphore profile definitions to avoid conflicts.
- Load map
- Do rebuild (F8)
- Save map
- Select correct looks for models where the selection of the looks changed
Changes & New Features
Curve items
TBA, map
Mover/walker unification and improvement
Approach to movers and similar object has been completely reworked. Walker item is now obsolete and it is possible that it will be removed in the future. For the similar functionality use mover item with mover model group. Mover item now supports all important properties from the walker item.
Moverover mover_model_u
property model_anim_alt
is also now obsolete and it will be removed in the next update. It means that pedestrian hookups using this property won't work correctly. Recommended approach is to replace them by new mover hookups with mover model group models.
Traffic changes
Trailer chains
Supported trailers are now defined at one place: in traffic_vehicle by defining the whole trailer chain (previously it was combination of per vehicle/trailer type + per vehicle/trailer) Related attributes in traffic_trailer, traffic_vehicle_type and traffic_trailer_type are now obsolete. Partial backward compatibility is provided (more complex trailer configurations may not be created correctly using old attributes)
Note: Support for wildcards has been removed to avoid the unnecessary complexity.
TIP: If you have used (now obsolete) attribute allowed_tractor, the similar functionality can be achieved by setting spawn_ratio: 0.0 for trailers which have been using it. This way, they won't be chosen for any vehicle unless explicitly set in trailer_chains.
Each trailer chain element can be specified either by trailer type name (a random trailer model of that type will be spawned) or directly by traffic trailer unit name. Optionally, for each element, the minimum and maximum count of occurrence can be specified. Elements and counts are separated by '|'.
Examples:
trailer_chains[]: "semi_trailer"
- the vehicle will have one trailer of type semi_trailer
trailer_chains[]: "traffic_trailer.first | traffic_trailer.middle 2-4 | traffic_trailer.last"
- trailer chain with specific elements, 'traffic_trailer.middle' can occur 2-4 times.
Spawn density rules
Trailer chain support has been added also to spawn density traffic rules (traffic_rules_spawn.sui). All items beyond the first one in the str_params attribute are now interpreted as allowed trailer chains. This can be useful for specifying areas in map where custom trailers (custom cargo) are spawned.
Example:
traffic_rule_data : traffic_rule.s_train_c2 { name: "Spawn density - cargo train (plane)" rule: "density" str_params[]: "train_cargo" str_params[]: "train_car.trplane_car 1 | train_car.trplane_care 1 | train_car.trplane_car 1 | train_car.trplane_care 1 | train_car.trplane_car 1 | train_car.trplane_care 1" num_params[]: 0.0 # 00:00 num_params[]: 0.015 # frequency num_params[]: 1 # count limit }
Parked vehicles/trailers
Parked vehicle/trailer attribute allowed_trailer is now also interpreted as a trailer chain definition.
Note: Attribute allowed_trailer_count is now obsolete, since the trailer count is determined from trailer chain automatically.
Trailer type and storage renaming
Some trailer types and corresponding storages have been renamed by using a more universal special suffix to better match their usage. They contain trailers which are always selected explicitly, never randomly across the whole storage:
- traffic_storage_train_car_pass.sii → traffic_storage_train_car_special.sii
- traffic_storage_trailer_parked.sii → traffic_storage_trailer_special.sii
Dynamic lods
use dynamic_lod_desc[] instead of lod_desc
TBA
Modded trucks support
For a brand/truck to show up correctly in the Mod Truck Dealer screen, the following conditions must be met:
- The truck's data is located in /def/vehicle/truck/<brand>.<model>/.
- The truck's unit name in its data.sii is correctly formatted as vehicle.<brand>.<model>.
- The truck's dealer definition is located in /def/vehicle/truck_dealer/<brand>/.
- The <brand> token must match for all of these.
The brand's icon in the dealer will be /material/ui/truck_brand_logo/<brand>.mat.
COG data in accessory_chassis_data
Center of gravity (COG) data has been moved from trailer definition to chassis data. They are easier to edit, they have less count than trailer definitions and on given chassis cargo is typically loaded in same way.
Value logic itself work as before: cog_cargo_mass_min (float, default 0) and cog_cargo_mass_max (float, default 20000) sets border limits and cog_cargo_offset_min (float3, default (0,0,0)) and cog_cargo_offset_max (float3, default (0,1,0)) set values for interpolation.
In addition, default COG is now in center of model based on some trailer geometry analysis regardless of trailer model scene origin. So the longitudinal offset used as workaround should be discarded.
Cabin suspension
4 point simulation (locator, obsolete/new values in physics.sii) TBA
Wipers duration+delay format
In unit accessory_interior_data attribute wiper_delay has been removed. Instead, the new attribute wiper_duration_and_delay (array of float2) has been added. Each element contains animation length (in seconds) and time delay between animation loops (in seconds) of one active state.
If no wiper_duration_and_delay is correctly stated it is defaulted to single element float2(2.0, 0.0), which serves as single active state in such case.
Trailer braces sound
Default value is now set empty. So there is sound only if data explicitly state it.
Cargo model randomized
If there are stated more than one model of cargo visualization (see data_path array in cargo_model_match unit, stored in def/cargo/*/ folders of cargoes for owned trailers) for given trailer, the one used is chosen pseudo-randomly from them.
Timezone sub-areas
Data for time zone sub-areas has been introduced silently in 1.34 update (look for Malheur county, Oregon in ATS or Kaliningrad area, Russia in ETS).
One set of data is in city_data units and data is used for static city-based zone usage (eg. delivery times in game economy):
- time_zone (integer, default is undefined value, represented by week of time, 10080) - time zone of given city in minutes
- time_zone_name (string, default empty) - name of eventual time zone
If city time zone is undefined (or 10080) then there is used time zone of country the city belongs to.
Second set of additional data consists of three synchronized arrays (same length expected) stored in country_data units and is used for spatial detection of time zone on map:
- secondary_time_zone_area (float4 array) - elements of rectangle areas in editor coordinates
- secondary_time_zone (integer array) - time delta of given area in minutes
- secondary_time_zone_name (string array) - name of time zone in given area
If point is in given country (decided by map logic by road/prefabs & borders) then all existing rectangle elements are checked for different time zone than country has. First matching area element defines the proper time zone. If no area is found, country time zone is used instead.
Transmission mode names
Unit accessory_transmission_data has two new string attributes - auto_mode_name (default "A") and manual_mode_name (default "M"). Their value is used in dashboard computer display as transmission mode element (id 1310) if truck display contains one.