Games/ETS2/Modding guides/1.31

From SCS Modding Wiki
Jump to navigation Jump to search

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

  • Ensure that ALL map files are updated to version compatible with 1.30 update by resaving them in 1.30 version. Otherwise you will be unable to load the map in 1.31 editor.
  • Load map
  • If the editor shows a warning dialog about items referencing obsolete TERRAIN ONLY road flag, you MUST remove or replace all those items in the map before saving the map. Otherwise the editor might crash when loading the resaved map.
  • Run prefab node corrections (F3 - "Prefab node correction")
  • Save map
  • Do rebuild (F8)
  • Save map
  • Run shoulder check from "Map\Validate road shoulders" This will generate list of all items which could cause issues with random events (mostly models clipping through). You have following options:
    • Adjust the items so they do not cause issues by moving them or removing them
    • Mark the related road as having blocked shoulder ("Shoulder blocked" checkboxes in Road item properties) to prevent generation of events.
    • If you do not care about the issues, you can ignore the item.
  • Save map

Changes

Game data

New float attribute blinker_auto_off_trigger has been added (default 0.01). It is used to define precise moment when blinker turn off automatically (if enabled) after they are armed by meeting blinker_auto_off_limit.

Country data

New boolean attribute trailer_standalone has been added (default false). It is used in countries where trailer does not have own registration and is registered with truck or similar vehicle and thus shares its licence plate (eg UK).

Vehicles data

Chassis accessory data

A new array attribute, steerable_axle[], was added to chassis data. It controls which axles are steerable instead of locator names. Locator names now define only the wheel type (model) dependency. The semantics of steerable_axle[] is the same as powered_axle[] or liftable_axle[]. If not defined, the values are inferred from the vehicle type. By default, a trailer will have no steerable axles and a truck will have its first axle steerable.

The powered_wheel[] array is no longer supported for defining powered wheels, and is now ignored. The powered_axle[] array must now be used properly.

New cables accessory data

With new feature of trailer cables, there is also new accessory type accessory_addon_trailer_cables_data that can be used on truck and trailer (for doubles, triples etc.). This accessory type can be used only in conjunction with accessory named: trlr_cables.

New accessory type, besides normal vehicle accessory attributes, has an array attribute of owner pointers of type physics_trailer_cable_data. This array defines what kind and how many cables will be used on vehicle. Each cable pointer from array has to be defined inside same SiiNunit.

Example of trailer cables accessory data:

SiiNunit
{
accessory_addon_trailer_cables_data : stock.<vehicle.name>.trlr_cables
{
	exterior_model: "<path/to/upgrade/model.pmd>"
	
	cables[]: .air_cable_b
	cables[]: .air_cable_r
	cables[]: .ele_cable_g
}

physics_trailer_cable_data : .air_cable_b
{
	locator_prefix: air_cable_b       // Name of the locator (in vehicle and trailer) where cable will be "connected".
	rest_locator_prefix: rst_cable_b  // Name of the locator (in vehicle only) where cable will be put to rest, when not connected to the trailer. 
                                          // If not present in vehicle, cable is not visible when disconnected from trailer.

	vehicle_plug_model: "/vehicle/share/models/cables_connectors/air_plug_b.pmd"    // Plug model for the cable end on vehicle side.
	vehicle_plug_model_offset: (-0.0205, 0.0, -0.121)                               // Visual offset of cable start in space of vehicle plug model.
	trailer_plug_model: "/vehicle/share/models/cables_connectors/air_socket_b.pmd"  // Plug model for the cable end on trailer side.
	trailer_plug_model_offset: (0.0, 0.0, -0.11)                                    // Visual offset of cable end in space of trailer plug model.

	ring_count: 10      // Number of rings in spiral of cable.
	ring_resolution: 7  // Resolution of the ring, how many sides each ring has.
	diameter: 0.9       // Diameter of spiral.
	width: 0.0175       // Width of the cable itself.

	material: "/material/ropes/cable_white.mat"  // Material used for cable rendering.
	color: (0.1, 0.35, 0.55)                     // Vertex color that will be used for the cable. Note that this color is in linear colorspace.
}

physics_trailer_cable_data : .air_cable_r
{
	locator_prefix: air_cable_r
	rest_locator_prefix: rst_cable_r

	vehicle_plug_model: "/vehicle/share/models/cables_connectors/air_plug_r.pmd"
	vehicle_plug_model_offset: (-0.0205, 0.0, -0.121)
	trailer_plug_model: "/vehicle/share/models/cables_connectors/air_socket_r.pmd"
	trailer_plug_model_offset: (0.0, 0.0, -0.11)

	ring_count: 10

	color: (0.5, 0.05, 0.05)
}

physics_trailer_cable_data : .ele_cable_g
{
	locator_prefix: ele_cable_g
	rest_locator_prefix: rst_cable_g

	vehicle_plug_model: "/vehicle/share/models/cables_connectors/electric_plug.pmd"
	vehicle_plug_model_offset: (0.0, 0.0, -0.134)

	ring_count: 10

	color: (0.1, 0.1, 0.1)
}

}

Truck data

Transmission accessory data

New float attribute shift_time has been added. Its value is approximate duration of the shift in seconds with default of 1.0. The time is measured from first moment of clutch disconnect to the moment clutch is fully connected again. By our precise measurement shifting times of most current transmissions are between 0.7 second (new Opticruises) and 1.5 seconds (old MP3 transmissions). Values drastically different may cause unwanted effects.

Truck dealer data

Truck dealer trucks are not handled by the list anymore, the game reads all unit files in given directory in same way as company or desktop trucks. The list file is gone, truck files must be separate units (start with SiiNunit header and properly enclosed in curled brackets). Broken units in directory won't prevent reading the rest.