Моддинг

Модификации для 1.9.0

рекомендации

При добавлении новых объектов в файлы, поддерживающие многофакторный подход (например, road_look.sii), ВЫСОКО РЕКОМЕНДУЕТ использовать суффиксы или префикс в имени, чтобы избежать конфликтов с новыми объектами, которые мы добавляем в патчи. В противном случае вам, возможно, придется использовать функцию переименования пакетов (см. Переименование пачек ), чтобы исправить конфликты при появлении нового патча.

Некоторые новые модели, использующие суффикс или префикс «sc», все еще работают, и вполне вероятно, что они могут значительно измениться в следующем патче. По этой причине рекомендуется избегать использования их в ваших моделях в это время.

Как преобразовать карту

  • Если у вас есть какие-либо объекты, которые используют префикс, не соответствующий типу (например, это не «знак» для знаков), исправьте их. В игре предполагается, что префикс исправлен (см. Проверка имени элемента ).
  • Если вы изменили знаки, установите атрибут distance_type и оставьте устаревшие (см. Изменения в знаках )
  • Если вы изменили внешний вид дороги, обновите атрибуты ai_speed_type и lane_count_ * и оставьте устаревшие (см. « Изменения в дорожных взглядах» )
  • Если вы изменили дорожные материалы, преобразуйте их в новый формат (см. Изменения в дорожных материалах )
  • Если вы изменили материалы ландшафта, преобразуйте их в новый формат (см. Изменения в материалах ландшафта )
  • Если вы добавили пользовательские шрифты, вам необходимо обновить формат (см. Раздел «Изменение шрифтов» )
  • Загрузите карту в редактор. Если сбой нагрузки, проверьте журнал и исправьте ошибки. Параметр командной строки -unlimitedlog может быть полезен в этом случае, если у вас много старых готовых файлов.
  • Используйте инструмент поиска в редакторе, чтобы найти дорожные объекты, указанные как «Плохая дорожная позиция (X)». Скорее всего, вы подключаете дороги Великобритании к небританским.
  • Используйте инструмент поиска в редакторе, чтобы найти сборные файлы, которые были зарегистрированы в журнале, как «Неверный исходный узел обнаружен, но не исправлен!» когда редактор преобразует карту в новый формат и при необходимости обновляет ее.
  • Убедитесь, что в журнале не содержится ЛЮБЫХ ошибок, связанных с отсутствующими знаками. (см. Проверка имени элемента )
  • Если вы добавили новый дорожный материал или материал для ландшафта для использования в новых секторах, вы можете переименовать их, чтобы добавить префикс или суффикс к имени, чтобы избежать конфликтов с материалами, которые мы добавили (см. Переименование партии ).
  • Используйте диалог замены (F3, «Корректировка префикса узла»), чтобы добавить к узлам карты, которые мы добавили в сборные блоки (см. « Изменения в сборных файлах» ).
  • Сохраните и перезагрузите карту или выполните перестройку (F8)

изменения

Изменения в paintjobs

У грузовиков теперь есть дополнительные третьи координаты UV с улучшенной компоновкой, и некоторые paintjobs были обновлены, чтобы воспользоваться этим. Paintjobs могут использовать эту координату uv, используя новый параметр alternate_uvset в определении paintjob. Обратите внимание: это ошибка, когда paintjob требует координаты, которой нет у модели, и полученное поведение не определено. Это может произойти, если вы модифицируете стандартный грузовик и плеер, который я использую один из красок, которые мы обновили. В этом случае вы можете включить более старую версию определений рисования и текстур в свой мод.

Изменения в шрифтах

Файлы шрифтов теперь содержат информацию о размерах базовых текстур. Вам нужно обновить все строки определения изображения, чтобы добавить размер.

Например

Изображение: /font/big_0.mat

Если текстура, связанная с /font/big_0.mat, имела бы размеры 256x512, новая строка должна быть.

image: /font/big_0.mat, 256, 512

Проверка имени элемента

Многие из файлов определения мира (например, /world/sign.sii) ожидают, что имена полных блоков начинаются с фиксированного компонента префикса (например, «знак»), за которым следует один компонент с именем (Есть несколько исключений. Если у вас есть сомнения, обратитесь к именованию, используемому в исходном файле, который является частью игры). В зависимости от ситуации игра может иногда находить единицы измерения только с использованием компонента имени или может содержать полное имя из фиксированного префикса и имя и определять местоположение с помощью этого полного имени. Чтобы гарантировать, что игра найдет устройство с использованием обоих методов, юниты должны использовать ожидаемое соглашение об именах.

Например, ожидается, что имена знаковых единиц начинаются со «знака». поэтому «fkmm070» или «add.navsg001» не являются допустимыми именами и не будут найдены при преобразовании карты.

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

Изменения в паромах

Формат определения паром был расширен для поддержки добавления новых соединений к существующим паромам без необходимости переопределять базовый файл .sii.

Помимо стандартного определения в файлах /def/ferry/<name>.sii , игра также загружает все файлы из / def / ferry / connection . Каждый из этих файлов должен содержать единый блок ferry_connection (см. Пример ниже), который определяет соединение между двумя паромами и должен быть назван conn. <From>. < To > где от и до имен соответствующих паромов. Игра добавит указанное соединение к определению базового парома или переопределит его параметры, если соединение уже существует. В настоящее время нет способа удалить существующее соединение с помощью этого механизма.

Если несколько файлов определяют одно и то же соединение, он не определен, какой из них выигрывает. По этой причине файлы должны быть названы как <from> _ <to> .sii (например, europoort_harwich.sii), даже если игра в настоящее время не обеспечивает этого.

Пример определения соединения из eurpoort в harwich с использованием модуля подключения, хранящегося в /def/ferry/connection/europoort_harwich.sii

SiiNunit {ferry_connection: conn.europoort.harwich {цена: 960 раз: 480 расстояние: 207}}

Изменения в определениях городов

Добавлены атрибуты, связанные с движением:

  • traffic_density_coef
    • изменяет плотность спава трафика вокруг игрока (значение по умолчанию равно 2.0)
    • если больше городов достаточно близко, добавляются их коэффициенты плотности
  • traffic_density_range
    • значение по умолчанию - 2000,0
    • устанавливает максимальный диапазон за пределами городской границы, по которому применяется функция traffic_density_coef
    • значение применяемого параметра traffic_density_coef уменьшается с расстоянием: максимальное значение находится на границе и 0.0 на уровне traffic_density_range

Изменения в дорожных взглядах

Дороги теперь поддерживают указание различного количества полос движения в левой и правой частях. Они определяются с использованием новых атрибутов lane_count_left и lane_count_right . Атрибуты ai_lane_count и one_way теперь устарели. Чтобы сохранить обратную совместимость с существующими определениями, игра переопределит значение новых атрибутов, если в определении установлены атрибуты ai_lane_count или one_way . Обратите внимание, что этот резерв может быть отключен в будущем патче, поэтому настоятельно рекомендуется обновить внешний вид, чтобы использовать новый механизм. Функция контролирует только поведение ИИ на дороге и не влияет на визуализацию дорог. Поддержка большего пользовательского определения дорожной визуализации, включая больше полос, планируется для некоторого будущего патча.

Атрибуты ai_road_offset и actor_lane_count устарели и игнорируются.

Атрибут ai_speed_type теперь имеет перечисление со следующими значениями: none (-1), city (0), regular (1), шоссе (2). Прямые числовые значения все еще работают в это время и совместимы с предыдущим состоянием, однако использование имени является предпочтительным.

Изменения в дорожных материалах

Чтобы обеспечить независимое добавление дорожных и тротуарных материалов, мы выделили их для разделения файлов ( road_material.sii и road_sidewalk.sii ), которые поддерживают соглашение. <Idofyourmod> .sii и имена суффикса / префикса. Значения соответствующих массивов внутри road.sii игнорируются.

При преобразовании карты из старого формата индексы материала преобразуются в единицы, которые имеют суффикс того же значения (т. Е. Индекс 5 сопоставляется с единицей road_mat.5). Если вы добавили материалы, которые противоречат материалам, которые мы добавили в этот патч, вы можете использовать функцию переименования, чтобы переместить новый материал в новое суффиксное представление.

Изменения в материалах ландшафта

Как и в дорожных материалах, terrain_material.sii был изменен, чтобы обеспечить независимое дополнение . Поддерживаются соглашения . <Idofyourmod> .sii и имена суффикса / префикса.

При преобразовании карты из старого формата индексы материала преобразуются в единицы, которые имеют суффикс того же значения (т. Е. Индекс 5 сопоставляется с единицей terrain_mat.5). Если вы добавили материалы, которые противоречат материалам, которые мы добавили в этот патч, вы можете использовать функцию переименования, чтобы переместить новый материал в новое суффиксное представление.

Изменения в семафорах

Игра теперь поддерживает профили семафора, на которые ссылаются из сборных.

Характеристики семафоров определены в файле semaphore_profile.sii . При поиске используемого профиля игра находит узел с именем tr_sem_prof. <Имя_файла>. <Country_code>, и если это не удается, он пытается найти tr_sem_prof. <Имя_файла>

Модели визуализации семафора определены в semaphore_model.sii . При поиске используемой модели игра находит узел с именем tr_sem_mdl. <Имя_файла>. <Country_code>, и если это не удается, он пытается найти tr_sem_mdl. <Имя_файла>

Семафорные профили

Большинство атрибутов профиля - это массивы. При применении профиля идентификаторы семафора используются в качестве индексов. У сборных семафоров должен быть установлен «тип» для «(использовать профиль)».

Если для некоторого ID нет значения, используется последнее значение из соответствующего атрибута массива

  • model - массив токенов (суффиксы имен семафорных моделей из semaphore_model.sii без суффиксов стран)
  • type - массив значений перечисления:
    • барьер_диагностика - барьер, активируемый близостью объекта (дорожные переходы)
    • барьер_мануал - барьер, который закрыт до тех пор, пока не будет выполнено условие (tollgates, АЗС)
    • model_only - если установлено, текущий экземпляр будет только визуальным представлением реального семафора трафика
    • traffic_light - стандартный светофор
    • traffic_light_blockable - светофор, который блокируется проезжающими транспортными средствами (контроль односторонних участков дороги, например дорожных работ)
    • traffic_light_major - стандартный светофор с знаком «главная дорога»
    • traffic_light_minor - стандартный светофор со знаком «незначительная дорога»
  • interval - массив значений float4 (зеленый, оранжевый, красный, оранжевый)
  • цикл - массив значений float (сдвиг цикла семафора)
  • id_map - массив индексов
    • в некоторых случаях (например, типы model_only, используемые для дорожных переходов), несколько семафоров должны быть связаны с каким-либо другим семафором, чтобы обеспечить их синхронизацию
  • inherited - полное имя резервного файла (атрибуты, не заданные в текущем профиле, взяты из унаследованного)

Изменения в моделях зданий

Новые атрибуты min_scale и max_scale блока building_model могут использоваться для рандомизации масштаба модели. Атрибут model_size_override теперь устарел и не должен использоваться для новых определений.

Новый атрибут rand_rot указывает максимальный диапазон в градусах, по которым может быть модель, случайным образом повернутая вдоль вертикальной оси. Модель будет повернута случайным значением в <-rand_rot / 2; rand_rot / 2> из его ориентации по умолчанию (т.е. указание 360 degress даст полностью случайное вращение). Чтобы избежать визуальных ошибок на существующих картах, не устанавливайте атрибут для ненулевого значения для моделей, которые уже используются на карте.

Изменения в ИИ

ИИ теперь использует дополнительную информацию, определенную в знаках (см. Ниже) для контроля ее поведения (например, скорости), поэтому важно использовать правильные знаки.

Знаки sign_models, определенные в /dev/world/sign.sii, теперь имеют новый необязательный атрибут traffic_rule, который ссылается на правило, определенное в traffic_rules.sii, определяющее дополнительную связанную с трафиком семантику для этого знака (например, ограничение скорости).

Добавлен дополнительный файл конфигурации (/def/traffic_data.sii), который контролирует поведение ИИ. Существует много атрибутов, которые контролируют поведение транспортных средств AI. Однако, поскольку некоторые из них могут быть изменены или удалены в ближайшем будущем, официально поддерживаются только атрибуты, уже находящиеся в файле конфигурации . В ближайшем будущем появятся новые атрибуты.

В настоящее время поддерживаются атрибуты трафика:

  • max_vehicle_count - максимальное количество всех активных транспортных средств. Увеличение его может снизить производительность
  • max_truck_count - максимальное количество всех активных грузовиков. Увеличение его может снизить производительность
  • ai_safety_modifier - изменяет общую безопасность поведения ИИ. Интервал возможных значений: <-1.0; 1.0>, где -1.0 означает «минимальная безопасность», 1.0 означает «максимальная безопасность», а 0.0 означает «без изменений»,


Максимальная скорость транспортных средств AI теперь указана в новом атрибуте max_speed блока traffic_vehicle, который указан в км / ч. Скорость атрибута является устаревшей и игнорируются.

Тип транспортного средства теперь определяется как тип атрибута на основе перечисления, который может иметь один из следующих значений: автомобиль , грузовик , автобус . Атрибуты speed_class и use_truck_path теперь устарели и игнорируются.

Теперь поведение переключателя транспортного средства описывается с использованием атрибута коробки передач . Он позволяет определять различные ускорения для разных скоростей транспортного средства: (скорость [км / ч], ускорение [м / с / с]).

Значения по умолчанию:

# автомобиль по умолчанию коробка передач коробка передач []: (0, 4.5) коробка передач []: (20, 3.5) коробка передач []: (45, 2.5) коробка передач []: (70, 1.8) коробка передач []: (100, 1.2) # (10, 1.06) коробка передач []: (20, 0.89) коробка передач []: (32, 0.74) коробка передач []: (45, 0.61) коробка передач [ ]: (57, 0.49) коробка передач []: (70, 0.40) коробка передач []: (80, 0.33) # автобус по умолчанию коробка передач []: (0, 2.5) коробка передач []: (15, 1.8) коробка передач [] : (25, 1,5) коробка передач []: (50, 1.2) коробка передач []: (70, 0,9)

Изменения в сборных сборниках

Новый ИИ использует модифицированный формат сборника с дополнительной предварительно вычисленной информацией. Игра автоматически попытается преобразовать предыдущий формат в новый во время загрузки.

Основные структуры - макет памяти

ПРЕДУПРЕЖДЕНИЕ: любая информация в этом разделе может меняться без предупреждения !

Кривые навигации

struct ppd_curve_t {имя token_t; флагов u32; u32 ведет_то_ноды; float3_t pos0; float3_t pos1; float3_t dir0; float roll0; float3_t dir1; float roll1; длина поплавка; u32 next_curves [4]; u32 prev_curves [4]; u32 next_count; u32 previous_count; u32 tr_light_id; float speed_limit; // устаревший, не используется};

кривые флагов:

const unsigned PNCF_STOPPER = 0x00000001;
const unsigned PNCF_FORCE_NO_BLINKER = 0x00000004;
const unsigned PNCF_RIGHT_BLINKER = 0x00000008;
const unsigned PNCF_LEFT_BLINKER = 0x00000010;
const unsigned PNCF_SMALL_VEHICLES = 0x00000020;
const unsigned PNCF_LARGE_VEHICLES = 0x00000040;
const unsigned PNCF_PRIORITY_MASK = 0x000F0000;
const unsigned PNCF_PRIORITY_SHIFT = 16;
const unsigned PNCF_LOW_PROBABILITY = 0x00002000;
const unsigned PNCF_ADDITIVE_PRIORITY = 0x00008000;

(другие флаги, известные из предыдущей версии, устарели)

leads_to_nodes:

const unsigned PNLF_END_NODE_MASK = 0x000000FF;
const unsigned PNLF_END_NODE_SHIFT = 0;
const unsigned PNLF_END_LANE_MASK = 0x0000FF00;
const unsigned PNLF_END_LANE_SHIFT = 8;
const unsigned PNLF_START_NODE_MASK = 0x00FF0000;
const unsigned PNLF_START_NODE_SHIFT = 16;
const unsigned PNLF_START_LANE_MASK = 0xFF000000;
const unsigned PNLF_START_LANE_SHIFT = 24;

Дорожные семафоры

ПРИМЕЧАНИЕ: использование профилей семафора вместо установки атрибутов для каждого экземпляра настоятельно рекомендуется

struct ppd_tr_light_t {float3_t pos; quat_t qrot; тип u32; u32 id; интервалы float4_t; поплавковый цикл; Профиль token_t; флагов u32; };

семафоры:

const unsigned TST_PROFILE = 0; // использование значений из semaphore_profile.sii вместо prefab
const unsigned TST_MODEL_ONLY = 1;
const unsigned TST_TRAFFIC_LIGHT = 2;
const unsigned TST_TRAFFIC_LIGHT_MINOR = 3;
const unsigned TST_TRAFFIC_LIGHT_MAJOR = 4;
const unsigned TST_BARRIER_MANUAL_TIMED = 5;
const unsigned TST_BARRIER_DISTANCE = 6;
const unsigned TST_TRAFFIC_LIGHT_BLOCKABLE = 7;

Пересечения

пересечения:

  • ИНТЕРСИЦИОННЫЕ ТИПЫ:
    • начало пересечения - точка, в которой две или более кривых ведут от одного локатора
      • автоматически генерируется - нет приоритетного управления
    • пересечение - точка, в которой пересекаются две или более кривые
      • для каждой пересекающейся кривой должны быть установлены модификаторы с ненулевым приоритетом
    • конечное пересечение - точка, в которой две или более кривых приводят к одному локатору
      • для каждой пересекающейся кривой должны быть установлены модификаторы с ненулевым приоритетом
      • особый случай слияния полосы :
        • все кривые имеют одинаковый приоритет
        • в этом случае транспортные средства будут использовать «слияние zip»
struct ppd_intersection_t {u32 curve_id; поплавковая позиция; радиус плавания; флагов u32; };

флаги пересечения:

const unsigned PIF_SIBLING_COUNT_MASK = 0x000000F0;
const unsigned PIF_SIBLING_COUNT_SHIFT = 4;
const unsigned PIF_TYPE_START = 0x00010000;
const unsigned PIF_TYPE_END = 0x00020000;

Важные заметки:
  • структуры пересечений должны быть сгенерированы для КАЖДОЙ кривой, связанной с пересечением
  • структуры должны храниться таким образом, чтобы первая структура содержала количество братьев и сестер (задействованных кривых)
    • все оставшиеся братья и сестры должны немедленно следовать за первым и ДОЛЖНЫ ИМЕТЬ ЧИСЛО СИБИЛЬОВ, УСТАНАВЛИВАЕМЫХ К НУЛУ
  • В автомобилях AI теперь используются кривые предварительной обработки также для прогнозирования движения игрока, что означает
    • убедитесь, что действительные кривые ведут от / до всех направлений, в которых игрок может управлять (даже если транспортные средства AI никогда не будут туда ездить)
    • используйте правильные флаги мерцания - транспортные средства «видят», в котором мигающий игрок включен и предсказывает его путь соответственно
    • убедитесь, что есть сборные узлы во всех направлениях, где игрок может управлять (например, входы в док-станцию ??...)
      • После модификации сборника вы можете использовать команду «Корректировка узла префикса» в диалоговом окне замены (F3), чтобы позволить игре добавлять недостающие узлы.

Изменения в редакторе

Пакетное переименование

Теперь редактор поддерживает пакетное переименование некоторых типов объектов на основе файла конфигурации. Сначала вам нужно подготовить файл конфигурации, описывающий изменения, которые должны быть применены (см. Ниже). После этого вам нужно загрузить карту в редакторе, нажмите F3, чтобы открыть диалог замены, нажмите кнопку «Замена партии» и подтвердите изменение. После этого вы должны сохранить и перезагрузить карту.

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

Конфигурационный файл должен быть сохранен как Documents \ Euro Truck Simulator 2 \ replace.sii . Файл должен содержать одну единицу типа editor_search_replace . Блок содержит секторы атрибутов строковых массивов, которые должны содержать имена всех секторов, в которых применяются изменения. Имя сектора соответствует базовому имени файлов, используемых для хранения этого сектора (например, sec + 0001-0001). Устройство также содержит дополнительные атрибуты массива строк, которые определяют замены. Формат строки замены - «old_name | new_name». Поддерживаются следующие массивы:

  • ter_material - рельефные материалы
  • road_material - дорожные материалы
  • sidewalk_material - тротуарные материалы
  • bld_scheme - схемы построения
  • модель - модели
  • растительность - растительность
  • road_look - дорожные взгляды
  • ter_profile - профили местности
  • перила - перила на дорогах
  • знак - лампы / bollars вдоль дороги


Пример файла замены

SiiNunit {editor_search_replace: .edit_replace {# Список секторов, где необходимо заменить поиск секторов []: секторы «sec-0002-0007» []: «sec-0002-0008» # Суффикс материала для ландшафтного материала | новый суффикс субстрата материала ter_material []: "24 | 121" ter_material []: "103 | 129" # Блок-схема замены старого блока суффикса схемы | новый суффикс блока схемы bld_scheme []: «22 | 2sc» # Суффикс старой модели замены модели | модель суффикса модели новой модели []: модель «122 | 1sc» []: модель «757 | 2sc» []: «56a | 3sc»}}

категории

Новая атрибутная категория объектов model_def, sign_model, prefab_model и building_scheme указывает строку с категорией, к которой принадлежит устройство. Это можно использовать в соответствующих диалоговых окнах редактора, чтобы отфильтровать набор элементов только для элементов, принадлежащих выбранной категории.

Изменения в знаках

Знаки теперь появляются как автономные элементы в редакторе. Если вы изменили файл editor_data.sii, вам нужно обновить массив sub_mode_types, чтобы сделать соответствующую запись видимой в ui.

В определение знака добавлен новый атрибут distance_type (0 - короткий, 1 - закрытие, 2 - средний, 3 - далеко). Атрибут short_distance теперь устарел и игнорируется.

В свойствах «Значок» был добавлен новый флажок « Следующий дорожный каталог». Он выравнивает ориентацию знака в соответствии с ближайшей дорогой и сохраняет относительное положение, когда дорога движется.