Руководство пользователя по добавлению модификации — прицепа в City Car Driving - City Car Driving (CCD) гайд

Автор: horunzhin.artem

Текстовая версия гайда на русском языке

Предисловие

С точки зрения набора файлов и самой модели, прицеп — это такое же транспортное средство, как и автомобиль, за некоторыми исключениями. Здесь Вы сможете прочесть, как настроить прицеп и как подготовить автомобиль к его зацеплению.

Для этого нам потребуются кое-что настроить в файлах, которые располагаются в папках:

  • data\gamedata\cars\<My_trailer_name>\.
  • data\physics\cars\<My_trailer_name>\.
  • export\gfxlib\cars\<My_trailer_name>\.
  • export\gui\ccd\imagesets\cars\<My_trailer_name>\.
  • export\meshes\cars\<My_trailer_name>\.
  • export\texturesdds\cars\<My_trailer_name>\.

А также XML файл вида «<My_trailer_name>.xml», расположенный в папке: «data\config\user_cars\».

А теперь подробнее.

CarProperty.ini

Если Вы хотите, чтобы при загрузке прицепа в режиме малогабаритных грузоперевозок в нём появлялся груз, нужно в модель добавить 2 объекта:

  • Груз, обозначающий частичную загрузку.
  • Груз, обозначающий полную загрузку.

Опорная точка (pivot) объектов должна быть в начале координат (0; 0; 0). Имена объектов должны быть соответственно «сargo_1» для неполной загрузки и «сargo_2» для полной загрузки. Имена грузов указываются в конфигурационных файлах.

CarProperty.ini — Руководство пользователя по добавлению модификации - прицепа в City Car Driving

В файле CarProperty.ini, расположенном в папке «data\gamedata\cars\<My_trailer_name>», где «<My_trailer_name>» — имя Вашего прицепа, добавляется новый раздел (указывается в квадратных скобках) и несколько параметров, в которых указываются грузы:

[Cargo]
MinCargoLevel = 0.05
CargoLevel = (max = 0.5, detail = «cargo_1»)
CargoLevel = (max = 1.0, detail = «cargo_2»)

  • MinCargoLevel — минимальный уровень загрузки, при котором появляется груз.
  • CargoLevel, cargo_1 — максимальный относительный уровень загрузки для груза detail. Максимальное значение = 1. detail = «cargo_1» — имя детали-груза в сцене с моделью прицепа.
  • CargoLevel, cargo_2 — максимальный относительный уровень загрузки для груза detail. Максимальное значение = 1. detail = «cargo_2» — имя детали-груза в сцене с моделью прицепа.

В разделе «[Common]» указывается грузоподъемность прицепа в килограммах:

[Common]
MaxCargo = 700

  • MaxCargo — максимальная масса груза, используется в грузоперевозках.

«CarProperty.ini» — единственный файл в папке «data\gamedata\cars\<My_trailer_name>», необходимый для работоспособности прицепа.

p_player_setup.ini

В этом файле настраиваются физические свойства прицепа.

С точки зрения физики прицеп — это тоже автомобиль, но его можно прицепить сзади к другому (основному) автомобилю-тягачу. Так как прицеп не должен ехать сам, его конструкция, как и в жизни, может быть в значительной степени упрощена: у него может не быть ДВС, трансмиссии, рулевого управления, но базовые компоненты, вроде подвески, колес, и кузова быть должны, также могут присутствовать тормоза.

Точки зацепления прицепа

Для того, чтобы можно было прицепить прицеп, нужно настроить тягачу и прицепу точки заднего и переднего зацепления соответственно.

Точка зацепления прицепа с фаркопом автомобиля обозначается в файле «p_player_setup.ini», который можно найти в папке: «data\physics\cars\<My_trailer_name>».

В разделе «[Misc]» (если такого раздела нет — создаем) прописываем параметр:

[Misc]
TractorTrailerConnectionPoint_Front = 0.0; 0.036; -3.522

  • TractorTrailerConnectionPoint_Front — передняя точка крепления, используется для прицепа, чтобы прицепиться к тягачу (локальная система координат). Первое значение — это -X из редактора, второе Z, третье Y.

Для определения координат точки крепления создадим на сцене модели автомобиля сферу и расположим её на месте замка сцепного устройства:

Точки зацепления прицепа — Руководство пользователя по добавлению модификации - прицепа в City Car Driving

Точка зацепления должна быть указана и у тягача-автомобиля, к которому будет цепляться прицеп, например, вот так:

[Misc]
TractorTrailerConnectionPoint_ForTrailer = 0; 0.0; 1.5

  • TractorTrailerConnectionPoint_ForTrailer — задняя точка крепления, используется для тягача, чтобы зацепить прицеп (локальная система координат), при зацеплении совместится с передней точкой прицепа.

Масса и объем груза

Чтобы в авто или прицеп можно было загружать груз, нужно прописать центр массы груза, или просто позицию груза. В нашем случае он должен быть расположен между осями прицепа:

Масса и объем груза — Руководство пользователя по добавлению модификации - прицепа в City Car Driving

[Misc]
CargoEnabled = true
CargoPosition = 0.0; 0.0; 0.0

  • CargoEnabled — позволяет загружать груз в транспортное средство.
  • CargoPosition — позиция опорной точки груза (локальная система координат [-X; Z; Y]).

Объем кузова прицепа указывается в разделе «[Cargo]». Значение указывается в литрах:

[Cargo]
CargoVolume = 2700

HavokVehicleKit отвечает за моделирование физики авто в целом, и подвески в частности. Подвеска авто может начать вести себя неадекватно, если масса груза будет сопоставима с массой самой машины. Чтобы этого избежать, можно часть массы груза перераспределить на автомобиль. Это позволит загрузить всю необходимую массу груза, то есть общая масса авто + груз будут соответствовать ожиданиям.

Такой коэффициент из настроек указывает, что 30% массы груза перейдет в автомобиль, а 70% в груз, который лежит в прицепе:

CargoToChasisFraction = 0.3

Угол поворота

Чтобы ограничить степень свободы поворота прицепа относительно тягача, нужно настроить ограничивающие углы. Это делается в настройках тягача:

[Common]
TrailerRotateAngle = 115
TrailerUpAngle = 30
TrailerTwistAngle = 30

  • TrailerRotateAngle — максимальный угол поворота прицепа вокруг вертикальной оси (поворот влево/вправо)
  • TrailerUpAngle — максимальный угол поворота прицепа вокруг горизонтальной оси (поворот вверх/вниз).
  • TrailerTwistAngle — максимальный угол поворота прицепа вокруг продольной оси (наклон влево/вправо).

Инерционные свойства

Немаловажно правильно настроить момент инерции прицепа (и/или автомобиля). Это позволяет сделать маневрирование авто более правдоподобным. Момент инерции для груза берется из настроек момента инерции шасси. Данные настройки относятся и к прицепу, и к автомобилю.

Чем выше значение, тем более инертно ТС при поворотах по разным осям. Параметры оказывают влияние на «поворачиваемость» посредством сил от колес, а также от внешних сил и от столкновений с окружением:

[Common]
m_chassisUnitInertiaYaw = 4
m_chassisUnitInertiaPitch = 3
m_chassisUnitInertiaRoll = 1.5

  • m_chassisUnitInertiaYaw — момент инерции вокруг оси поворота влево/вправо.
  • m_chassisUnitInertiaPitch — момент инерции вокруг оси наклона вперед/назад.
  • m_chassisUnitInertiaRol — момент инерции вокруг оси крена влево/вправо.

Множители момента инерции шасси прицепа или автомобиля могут сделать авто более вертким и динамичным при ускорении, торможении и маневрировании, если коэффициенты параметров выше единицы, или более инертным — если ниже. Мы рекомендуем оставить их равными 1.

По сути «m_torque[…]Factor» — это множитель сил, передающихся на авто через колеса. Он не оказывает влияние взаимодействие через удары о кузов.

[Common]
m_torqueYawFactor = 1
m_torquePitchFactor = 1
m_torqueRollFactor = 1

  • m_torqueYawFactor — множитель момента инерции шасси вокруг оси поворота влево/вправо
  • m_torquePitchFactor — множитель момента инерции шасси наклона вперед/назад
  • m_torqueRollFactor — множитель момента инерции шасси вокруг оси крена влево/вправо

Подвеска прицепа настраивается так же, как подвеска обычного авто, но есть одна особенность. Мы не можем задать транспортному средству меньше двух осей — это особенность HavokVehicleKit.

Чтобы получить прицеп с одной осью, нужно сделать физику прицепа с двумя осями, но видоизменить настройки колес второй оси, придав им номинальный характер. Это означает сделать подвеску с нулевым ходом, задать незначительный размер колес, и разместить колеса так, чтобы они не могли касаться земли, а на случай, если они все же смогут коснуться земли, задать им нулевое трение. Для этого в файле «p_player_setup.ini» указываем следующие настройки:

[Suspension]
dampingCompression_and_dampingRelaxation = 3.0
suspension_length_0_1 = 0.3
suspension_length_2_3 = 0
suspension_strength_0_1 = 35
suspension_strength_2_3 = 0

  • Suspension — трение.
  • dampingCompression_and_dampingRelaxation — коэффициент амортизации (демпфирования).
  • suspension_length_0_1 — высота/ход подвески колес 0 и 1.
  • suspension_length_2_3 — высота/ход подвески колес 2 и 3.
  • suspension_strength_0_1 — жесткость пружины подвески колес 0 и 1.
  • suspension_strength_2_3 — жесткость пружины подвески колес 2 и 3.

[Wheels]
m_numWheels = 4
WheelRadius = 0.5
m_wheelParams[2].m_radius = 0.1
m_wheelParams[3].m_radius = 0.1

  • Wheels — настройки колес.
  • m_numWheels — общее количество колес.
  • WheelRadius — радиус физических колес по умолчанию (чтобы не прописывать каждому колесу).
  • m_wheelParams[2].m_radius — радиус физического колеса 2.
  • m_wheelParams[3].m_radius — радиус физического колеса 3.

Как правило, современные прицепы даже небольших размеров имеют тормозные механизмы. Небольшие прицепы обычно имеют инерционно-накатный тормоз, но на данный момент этот тип тормозов у нас не реализован. Тем не менее, имеется возможность настроить гидравлический или пневматический тормоз, который будет включаться синхронно на тягаче и прицепе при нажатии на соответствующую педаль:

[Brake]
m_maxBreakingTorque_0_1 = 500
isConnectedToHandbrake_0_1 = false

  • m_maxBreakingTorque_0_1 — максимальный тормозной момент оси.
  • isConnectedToHandbrake_0_1 — подключена ли ось к стояночному тормозу.

Настройки для пневматических тормозов расширяют базовые тормозные настройки из секции «[Brake]».

Если нужно, чтобы тормоза были пневматические, нужно назначить им правильный тип:

[Brake]
Type = 2

  • Type — пневматический тип тормозов

Также следует указать параметры пневматики, например:

[AirBrake]
CircuitCount = 2
AxisUseCircuit[0] = 0
AxisUseCircuit[1] = 1
Capacity[0] = 20
Capacity[1] = 40
MaxPressure[0] = 8
MaxPressure[1] = 8
WorkPressure[0] = 5
WorkPressure[1] = 5
AirVolume[0] = 80
AirVolume[1] = 160
AirPumping[0] = 1
AirPumping[1] = 2
AirOutgo[0] = 10
AirOutgo[1] = 20
BrakeInSpeed[0] = 5
BrakeInSpeed[1] = 5
BrakeOutSpeed[0] = 5
BrakeOutSpeed[1] = 5

  • CircuitCount — количество тормозных пневмоконтуров, количество ресиверов (баллонов с воздухом).
  • AxisUseCircuit — какой контур используется для пневмоконтура.
  • Capacity — объем баллона для воздуха (в литрах) для пневмоконтура.
  • MaxPressure — максимальное давление воздуха в баллоне (в атмосферах) для пневмоконтура.
  • WorkPressure — минимальное рабочее давление в пневмоконтуре, при котором тормозное усилие достигает 100%.
  • AirVolume — объем воздуха, закачанный для пневмоконтура на старте вождения X/20 = Y атм.
  • AirPumping — скорость накачки воздуха (в литрах в секунду на каждые 1000 об.мин двигателя) для пневмоконтура  Если газовать мотором то накачка будет быстрее.
  • AirOutgo — скорость расхода воздуха (литры) на каждое полное нажатие педали тормоза для пневмоконтура.
  • BrakeInSpeed — скорость срабатывания тормоза для пневмоконтура.
  • BrakeOutSpeed — скорость отпускания тормоза для пневмоконтура.

<My_trailer_name>.xml

Файл мода, расположенный в папке «data\config\user_cars», должен иметь следующий вид:

<Car type=»trailer» trailerType=»turnBuckle» trailerConnectionPointHeight=»0.42″/>

По параметру trailerType=»turnBuckle» определяется совместимость прицепа с автомобилем, т.е. если значение параметра «trailerType» у машины и прицепа отличается, прицеп не будет доступен для выбора с этим автомобилем. В данный момент допустим только один тип трейлера — «turnBuckle».

Параметр «trailerConnectionPointHeight» — высота точки сцепления прицепа с автомобилем от поверхности земли. Если значение этого параметра у машины и прицепа отличается более чем на «0.15», прицеп не будет доступен для выбора с этим автомобилем.

Для определения высоты точки сцепления (указывается в метрах) измерим расстояние от замка сцепного устройства трейлера до земли (в данном случае нижняя точка колеса) с помощью инструмента «Helpers» -> «Tape»:

Физическая модель и ее свойства — Руководство пользователя по добавлению модификации - прицепа в City Car Driving

Есть второй вариант: сделать материал прицепа прозрачным для материала тягача, чтобы они не могли столкнуться, а имитацию столкновения настроить ограничивающими углами поворота («TrailerRotateAngle», «TrailerUpAngle», «TrailerTwistAngle»).

Если мы все же хотим, чтобы прицеп мог сталкиваться с тягачом, но сквозь дышло ничего не проходило, то физику прицепа можно сделать составной. Для этого нужно сделать дышло и кузов прицепа разными деталями с разными материалами. Это позволит сделать дышло поворотным (вверх/вниз), как у прицепов грузовиков.

Настройки для загрузки составной физики с разными материалами в файле «p_player_setup.ini»:

[Common]
UseFilePhysics = true
PhysicsFiles = «meshes:cars/CustomCar/p_body.hkx»
RootBodyName = «body»
MaterialName = «TrailerBody»
BodiesMaterials = (frontDetail = «DeviceCollidable»)

  • UseFilePhysics — используется композитная физика: авто может состоять больше чем из одной детали, а параметры вроде трения, упругости, центра массы и моментов инерции задаются в модели 3ds Max.
  • PhysicsFiles — путь до физического меша.
  • RootBodyName — название детали-кузова транспортного средства.
  • MaterialName — основной материал авто (по умолчанию).
  • BodiesMaterials — назначение материалов деталям. Можно указать несколько, разделитель при перечислении — «,» либо «;».

В случае, если необходимо создать по-настоящему сложный прицеп с подвижным дышлом и поворотной тележкой, то придется разбить его на два прицепа:

  • Первая половинка прицепа — поворотная тележка, состоящая из двух деталей: тележки и дышла.
  • Вторая половинка прицепа — основная деталь.

По сути это будет выглядеть как «автопоезд»: тягач + прицеп + прицеп. Чтобы половинки прицепов поворачивались между собой только вокруг вертикальной оси, нужно настроить ограничивающие углы поворота между первой и второй половинкой.

Это делается через параметры раздела «Угол поворота»:

[Common]
TrailerRotateAngle = 180
TrailerUpAngle = 0
TrailerTwistAngle = 0

Отсечение пыли и брызг

Для отсечения частиц пыли и брызг в прицепе необходимо добавить новую деталь в модель. Для нашего прицепа она выглядит вот так:

Отсечение пыли и брызг — Руководство пользователя по добавлению модификации - прицепа в City Car Driving

На деталь необходимо назначить шейдер «ParticleClippingDepthShader». Деталь должна быть выпуклая, нормали наружу. Внутри детали частицы будут скрываться.

Ограничения

При создании прицепа следует учитывать следующие ограничения:

  • Корректная работа физики прицепа гарантирована только для двухосных прицепов (с двумя парами колес). Прицепы с одной осью могут вести себя не так, как ожидается.
  • Для корректного взаимодействия с игровым миром важно, чтобы размеры прицепа (включая дышло) не превышали 5.1 метра в длину и 2.3 метра в ширину.

Публикация мода в мастерской Steam

Для публикации прицепа в Мастерской необходимо запустить сеанс «Свободное вождение» выбрав в меню «Транспорт» машину и добавляемый прицеп.

После загрузки сеанса свободного вождения необходимо вызвать игровую консоль нажатием клавиши «~» (тильда) на клавиатуре. В открывшемся окне введите команду «steam_publish_car», и нажмите «Enter».

В поле «Change notes» Вы можете указать описание изменения для публикуемой версии.

В выпадающем списке «Type» выберите «Trailer»:

Публикация мода в мастерской Steam — Руководство пользователя по добавлению модификации - прицепа в City Car Driving

Выпадающий список «Visibility» позволяет выбрать видимость мода («Public», «Private» или «Friends only»).

Когда вышеописанные действия проделаны, необходимо нажать кнопку «Publish». Начнется процесс публикации мода в Мастерскую. В поле «Status» будет появляться информация о ходе выполнения публикации мода, сообщения об успешном завершении или ошибке.

Text version of the guide «User Guide for Adding Trailer as Modification» in English

User Guide for Adding Trailer as Modification.

Preface

In terms of the set of files and the model itself, a trailer is the same vehicle as a car with some exceptions which will be described in this guide.

For that, we need to configure something in the files located in the folders:

  • data\gamedata\cars\<My_trailer_name>\;
  • data\physics\cars\<My_trailer_name>\;
  • export\gfxlib\cars\<My_trailer_name>\;
  • export\gui\ccd\imagesets\cars\<My_trailer_name>\;
  • export\meshes\cars\<My_trailer_name>\;
  • export\texturesdds\cars\<My_trailer_name>\.

As well as the XML file of “<My_trailer_name>.xml” type located in “data\config\user_cars\” folder.

Now let’s get down to the practical details.

CarProperty.ini

If you want cargo to appear on the trailer when downloading the trailer in the small cargo mode, two objects must be added to the model:

  • Cargo denoting partial loading;
  • Cargo denoting full loading.

The pivot of objects must be located at the origin of coordinates (0;0;0). The objects must have the names “сargo_1” and “сargo_2” for partial and full loading respectively. The names of cargo will be indicated in the configuration files.

CarProperty.ini — Руководство пользователя по добавлению модификации - прицепа в City Car Driving

A new section (indicated in square brackets) and several parameters indicating loads are added in CarProperty.ini located in the folder “data\gamedata\cars\<My_trailer_name>”, where “<My_trailer_name>” is the name of your trailer:

[Cargo]
MinCargoLevel = 0.05 // Minimum loading level at which the cargo appears
CargoLevel = (max = 0.5, detail = «cargo_1») // Maximum relative loading level for detail cargo. Maximum value = 1. detail = «cargo_1» — name of the detail-cargo in the scene with the trailer model
CargoLevel = (max = 1.0, detail = «cargo_2») // Maximum relative loading level for detail-cargo. Maximum value = 1. detail = «cargo_2» — name of the detail-cargo in the scene with the trailer model

The “[Common]” section shows the trailer capacity in kilograms:

[Common]
MaxCargo = 700 // Maximum cargo weight used in cargo transportation

CarProperty.ini” is the only file in the folder “data\gamedata\cars\<My_trailer_name>” required for trailer functioning.

p_player_setup.ini

You can configure the trailer physical properties in this file.

In terms of the physics, a trailer is also a car, but it can be attached to the other (main) traction truck from the backside. Since the trailer should not drive itself, its design, as in life, can be greatly simplified: it may exclude the ICE, transmission, steering control, but it should include such basic components as a suspension, wheels, and a body; brakes may be included as well.

Trailer attachment points

To have a trailer attached, you should set the points of rear and front attachment for a traction truck and a trailer, correspondingly.

The connection point of the trailer to the car’s trailer hitch is indicated in the file “p_player_setup.ini” located in the folder “data\physics\cars\<My_trailer_name>”.

Write the parameter in the section “[Misc]” (if there is no such section, create it):

[Misc]
TractorTrailerConnectionPoint_Front = 0.0; 0.036; -3.522 // Front attachment point is used for a trailer, which is to be attached to the traction truck (local coordinate system)

TractorTrailerConnectionPoint_Front is a point of attachment of a trailer to a vehicle hitch, where the first value is —X from the editor, the second is Z, and the third is Y.

To determine the coordinates of the connection point, create a sphere on the car model scene and position it at the location of the hitch lock:

Trailer attachment points — Руководство пользователя по добавлению модификации - прицепа в City Car Driving

Attachment point should be indicated also for a traction truck to which the trailer is going to be attached, e.g.:

[Misc]
TractorTrailerConnectionPoint_ForTrailer = 0; 0.0; 1.5 // Rear attachment point is used for a traction truck to have the trailer attached (local coordinate system), when attaching, it will align with the front attachment point

Weight and volume of the cargo

To load the cargo on a car or trailer, it is necessary to specify the mass center of the cargo or simply the cargo position. The common mass center of loads in the vehicle is indicated in the same section. In our case it is located between trailer axles:

Weight and volume of the cargo — Руководство пользователя по добавлению модификации - прицепа в City Car Driving

[Misc]
CargoEnabled = true // Allows to load the cargo on the vehicle
CargoPosition = 0.0; 0.0; 0.0 // Position of the cargo reference point (local coordinate system [-X; Z; Y])

The volume of the trailer body is indicated in the section “[Cargo]”. The value is given in liters.

[Cargo]
CargoVolume=2700

HavokVehicleKit is responsible for simulating the physics of the car as a whole and of the suspension in particular. The car suspension can start behaving abnormally, if the cargo mass is equal to the mass of the car itself. To avoid this, part of the cargo mass can be redistributed onto the car. This would make it possible to load all necessary mass of the cargo, i.e., total mass of the car + the cargo will meet expectations.

This factor in the settings indicates that 30% of the cargo mass will be redistributed onto the vehicle, and 70% — onto the cargo on the trailer.

CargoToChasisFraction = 0.3

Rotation angle

To constrain the degree of the trailer rotation freedom with respect to the traction track, the angle constraints should be set. This is done in the Traction Truck Settings:

[Common]
TrailerRotateAngle = 115 // Maximum rotation angle of the trailer about the vertical axis (rotation to the left / right)
TrailerUpAngle = 30 // Maximum rotation angle of the trailer about the horizontal axis (rotation up / down)
TrailerTwistAngle = 30 // Maximum rotation angle of the trailer about the longitudinal axis (inclination to the left / right)

Inertial properties

It is of no small importance to set the moment of inertia for a trailer (and/or a vehicle) correctly. This makes it possible to simulate a vehicle maneuverability in a more realistic way. The moment of inertia for the cargo is obtained from the Settings of the Moment of Inertia for Chassis. These settings are relevant for both the trailer and the vehicle.

The higher the value, the more inert the vehicle when rotating along various axes. The parameters have an impact on the “rotatability” through the wheel forces, external forces, and collisions with the environment:

[Common]
m_chassisUnitInertiaYaw = 4 // The moment of inertia about the rotation axis (to the left / right)
m_chassisUnitInertiaPitch = 3 // The moment of inertia about the inclination axis (forward / backward)
m_chassisUnitInertiaRoll = 1.5 // The moment of inertia about the roll axis (to the left / right)

Multipliers of the moment of inertia for chassis of a trailer or vehicle can make the vehicle more agile and dynamic when accelerating, applying brakes, and maneuvering, if the parameter factors exceed one, or more inert, if they are below one. We recommend that you set them to 1.

In fact, m_torque[…]Factor is a force multiplier transferred to a vehicle through wheels. It does not affect the interaction through impacts with a body.

[Common]
m_torqueYawFactor = 1 // Multiplier of the moment of inertia for chassis about the rotation axis (to the left / right).
m_torquePitchFactor = 1 // Multiplier of the moment of inertia for chassis (inclination forward / backward)
m_torqueRollFactor = 1 // Multiplier of the moment of inertia for chassis about the roll axis (to the left / right)

The trailer suspension shall be set just like that of an ordinary vehicle, however, there is a peculiarity. We have to set at least two axes for a vehicle; this is a feature of HavokVehicleKit.

To make a trailer have one axis, it is necessary to configure the physics of the trailer for two axes, but change the wheels settings for the second axis by defining their function as nominal. This means to set a suspension travel to zero, define small size for wheels, and position the latter so as for them not to touch the ground; and in case they can touch the ground, to set a zero friction therefor. To do so, you need to specify the following settings in “p_player_setup.ini” file:

[Suspension] // Friction
dampingCompression_and_dampingRelaxation = 3.0 // Depreciation factor (damping)
suspension_length_0_1 = 0.3 // Height / travel of the suspension of wheels 0 and 1
suspension_length_2_3 = 0 // Height / travel of the suspension of wheels 2 and 3
suspension_strength_0_1 = 35 // Stiffness of the suspension spring for wheels 0 and 1
suspension_strength_2_3 = 0 // Stiffness of the suspension spring for wheels 2 and 3

[Wheels] // Wheel settings
m_numWheels = 4 // Total number of wheels
WheelRadius = 0.5 // Radius of physical wheels by default (to avoid specifying for each wheel)
m_wheelParams[2].m_radius = 0.1 // Radius of physical wheel 2
m_wheelParams[3].m_radius = 0.1 // Radius of physical wheel 3

As a rule, today, even small trailers are equipped with braking mechanisms. Small trailers are usually equipped with inertia/overrun brake; however, we have not implemented this type of brakes so far. Nevertheless, it is possible to configure a hydraulic or compressed air brake, which will be engaged synchronously on both the traction truck and the trailer when depressing the relevant pedal:

[Brake]
m_maxBreakingTorque_0_1 = 500 // Maximum axis braking torque
isConnectedToHandbrake_0_1 = false // If the axis is connected to the parking-brake
Settings for compressed air brakes extend the brake basic settings in “[Brake]” section.

If you need compressed air brakes, you need to assign the right type thereto:

[Brake]
Type = 2 // Compressed air brakes

You also need to specify the parameters for compressed-air parts, e.g.:

[AirBrake]
CircuitCount = 2 // Number of compressed air brake circuits, number of receivers (air tanks)
AxisUseCircuit[0] = 0 // The circuit used for compressed-air circuit 0
AxisUseCircuit[1] = 1 // The circuit used for compressed-air circuit 1
Capacity[0] = 20 // The volume of the air tank (liters) for compressed-air circuit 0
Capacity[1] = 40 // The volume of the air tank (liters) for compressed-air circuit 1
MaxPressure[0] = 8 // Maximum air pressure in the tank (standard atmosphere) for compressed-air circuit 0
MaxPressure[1] = 8 // Maximum air pressure in the tank (standard atmosphere) for compressed-air circuit 1
WorkPressure[0] = 5 // Minimum operating pressure in compressed-air circuit 0, at which the braking force reaches 100%
WorkPressure[1] = 5 // Minimum operating pressure in compressed-air circuit 1, at which the braking force reaches 100%
AirVolume[0] = 80 // The volume of air pumped for compressed-air circuit 0 at the start of driving 80/20 = 4 atm
AirVolume[1] = 160 // The volume of air pumped for compressed-air circuit 1 at the start of driving 160/20 = 8 atm
AirPumping[0] = 1 // Air pumping rate (liters per sec for each 1,000 RPM of the engine) for compressed-air circuit 0. When increasing the speed with the engine, the pumping increases.
AirPumping[1] = 2 // Air pumping rate (liters per sec for each 1,000 RPM of the engine) for compressed-air circuit 1.
AirOutgo[0] = 10 // Air consumption rate (liters) per each full brake application for compressed-air circuit 0
AirOutgo[1] = 20 // Air consumption rate (liters) per each full brake application for compressed-air circuit 1
BrakeInSpeed[0] = 5 // Braking action speed for compressed-air circuit 0
BrakeInSpeed[1] = 5 // Braking action speed for compressed-air circuit 1
BrakeOutSpeed[0] = 5 // Brake release rate for compressed-air circuit 0
BrakeOutSpeed[1] = 5 // Brake release rate for compressed-air circuit 1

<My_trailer_name>.xml

The mode file located in the folder “data\config\user_cars” must be as follows:

<Car type=»trailer» trailerType=»turnBuckle» trailerConnectionPointHeight=»0.42″/>

The parameter trailerType=»turnBuckle» determines compatibility between the car and the trailer, i. e. if the car and the trailer have different values of the parameter trailerType, the choice of the trailer will not be available for this car.

The parameter trailerConnectionPointHeight is the height of the trailer/car connection point above the ground. If the value of this parameter in the car and the trailer differs by more than 0.15, the choice of the trailer will not be available for this car.

To determine the height of the trailer connection point (given in meters), measure the distance between the trailer hitch lock and the ground (in this case the lowest point of the wheel) using the tool Helpers -> Tape:

Physical model — Руководство пользователя по добавлению модификации - прицепа в City Car Driving

There is another option: to make the trailer material transparent for the traction truck material so as for them not to collide, and to specify the rotation angle constraints for simulating the collision (TrailerRotateAngle, TrailerUpAngle, TrailerTwistAngle).

If you decide to make it possible for the trailer to collide with the traction truck, but exclude the possibility of passing anything through the hitch, you can make the physics of the trailer aggregate. To do so, you need to set the hitch and the trailer body as separate parts with different materials. This will make the hitch rotate (up / down) as that of the truck trailer.

Settings for uploading the aggregate physics with different materials in “p_player_setup.ini” file:

[Common]
UseFilePhysics = true // Composite physics is used: a vehicle can consist of more than one part, and such parameters as friction, elasticity, mass center, moments of inertia, shall be set in 3ds Max model
PhysicsFiles = «meshes:cars/CustomCar/p_body.hkx» // Physical mesh path
RootBodyName = «body» // Name of the part-body of the vehicle
MaterialName = «TrailerBody» // The base material of the vehicle (by default)
BodiesMaterials = (frontDetail = «DeviceCollidable») // Assigning materials to parts. You can specify several ones; use «,» or «;» for separation when enumerating

To simulate a really complex trailer with a moveable hitch and a swivel truck, you need to divide it into two trailers:

  • The first half of the trailer is a swivel truck consisting of two parts: a truck and a hitch.
  • The second half of the trailer is the basic part.

In fact, it will look like an “articulated” vehicle: traction truck + trailer + trailer. To make the halves of the trailers only rotate about a vertical axis between themselves, you need to set the rotation angle constraints between the first and the second halves.

This is done through the parameters of “Rotation Angle” section.

[Common]
TrailerRotateAngle = 180
TrailerUpAngle = 0
TrailerTwistAngle = 0

Dust and splash clipping

A new item must be added in the trailer model to clip particles of dust and splash. For our trailer, the item is as follows:

Dust and splash clipping — Руководство пользователя по добавлению модификации - прицепа в City Car Driving

The shader “ParticleClippingDepthShader” must be set to the item. The item must be convex, with its normals facing outward. Particles will be hidden inside the item.

Limitations

When creating a trailer, take into account the following limitations:

  • Correct operation of the trailer physics is guaranteed for two-axle trailers (with two wheel pairs) only. Single-axle trailers may have abnormal performance.
  • To ensure correct interaction with the game environment, it is important that the trailer (including the tow hitch) is no more than 5.1 meters long and 2.3 meters wide.

Mode publication in the Steam workshop

To publish the trailer in the Workshop, start the Free Driving session and select the car and the connected trailer in the menu “Transport”.

After the free driving session has loaded, call the game console by pressing the key ~ (tilde) on the keyboard. Enter the command “steam_publish_car” in the window that opens and press “Enter”.

You can give a description of the change in the published version in the field “Change notes”.

Select “Trailer” in the drop-down list “Type”:

Mode publication in the Steam workshop — Руководство пользователя по добавлению модификации - прицепа в City Car Driving

The drop-down list “Visibility” allows you to select mode visibility (“Public”, “Private” or “Friends only”).

When you have completed the actions described above, press “Publish” to publish the mode in the Workshop. The field “Status” will show the mode publication progress and notifications of successful completion or an error.

Другие гайды автора - horunzhin.artem

Другие гайды, похожие на "Руководство пользователя по добавлению модификации — прицепа в City Car Driving"

При каждом нажатии на ниже представленную кнопку, будут выводиться похожие гайды на "Руководство пользователя по добавлению модификации — прицепа в City Car Driving". Также для удобства поиска используйте ссылки на теги, которые расположены выше (в конце описания гайда).

Чтобы приступить к поиску, введите ваш запрос и нажмите клавишу «ENTER»