Как сделать свой мод для Rimworld(Будет дополняться)
(105 ratings)
Jan 7, 2024 @ 8:56am3,996238
Russian
Введение
Сперва заходим на страницу игры в стиме, жмем настройки и следом "Просмотреть локальные файлы", вас перекинет в файловый менеджер с открытой папкой игры.
Так вы увидите две папки: "Data" и "Mods". Заходим в папку "Data" и видим папки каждого дополнения игры. Обратите внимание, на уровне построения разницы между официальными дополнениями и модификациями практически нет, так что мой совет-просто покопайтесь в папках. Не спешите, осмотритесь, это сильно облегчит задачу.
Закончили тур? Отлично. Теперь сделаем также, но по-своему.
Так вы увидите две папки: "Data" и "Mods". Заходим в папку "Data" и видим папки каждого дополнения игры. Обратите внимание, на уровне построения разницы между официальными дополнениями и модификациями практически нет, так что мой совет-просто покопайтесь в папках. Не спешите, осмотритесь, это сильно облегчит задачу.
Закончили тур? Отлично. Теперь сделаем также, но по-своему.
Основы и написание About
Заходим в папку "Mods" и создаем там папку с названием вашего мода. Внутри этой папки создаем еще две, и называем их "About" и "Defs".
Воу-воу-воу, полегче! Откуда мне знать что все это означает?!
Ну, я сейчас объясню.
Папка "About"-это информация о вашем моде: название, ваша подпись и порядок загрузки. А также требования других модификаций.
Вооружаемся блокнотом и внутри этой папки создаем текстовый файл с именем: "About.xml", после чего при помощи блокнота начинаем редактирование. Пример:
На этом мы переходим к папке "Defs". И начинаем работу.
Для начала, что добавляет ваш мод? И вот начиная с этого момента написание руководства разветвляется.
Воу-воу-воу, полегче! Откуда мне знать что все это означает?!
Ну, я сейчас объясню.
Папка "About"-это информация о вашем моде: название, ваша подпись и порядок загрузки. А также требования других модификаций.
Вооружаемся блокнотом и внутри этой папки создаем текстовый файл с именем: "About.xml", после чего при помощи блокнота начинаем редактирование. Пример:
<?xml version="1.0" encoding="utf-8"?> Вот это пишем ВСЕГДА в начале каждого .xml
<ModMetaData>
<packageId>Really.Cool.Mod</packageId> Сюда вписываем название мода, например: Really.Cool.Mod
<author>Modmaker</author> Сюда ставим ваш никнейм
<supportedVersions> Версии игры, на которых будет работать ваш мод.
<li>1.4</li>
</supportedVersions>
<forceLoadAfter> Это то, после каких ДЛС и модификаций должен загружаться ваш мод.
<li>Ludeon.RimWorld.Core</li>
<li>Ludeon.RimWorld.Royalty</li>
<li>Ludeon.RimWorld.Ideology</li>
<li>Ludeon.RimWorld.Biotech</li>
</forceLoadAfter>
<packageId>really.cool.mod</packageId> ID вашего мода.
<description>Hello I create this mod</description> Описание вашего мода.
</ModMetaData>
На этом мы переходим к папке "Defs". И начинаем работу.
Для начала, что добавляет ваш мод? И вот начиная с этого момента написание руководства разветвляется.
Рецепт 1. Черты персонажа
Создаем папку "TraitDefs" и в ней файл, для примера, ModTraits.xml
Вот шаблон для черт персонажей:
Вписываем все необходимое, убираем ненужное, проверяем закрыты ли все скобочки и сохраняем файл. Открываем файл с помощью приложения читающего .xml(Например я использую Edge) и если все сделано правильно то вы увидите код. Если нет-то сообщение об ошибке. Доводим разметку до рабочего состояния и запускаем игру, там находим свой мод, включаем его и бежим проверять. Та-да, вы создали свой мод на трейты!
Далее я напишу о том как создавать гены и способности.
Вот шаблон для черт персонажей:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<TraitDef>
<defName>ModTrait</defName> РАБОЧЕЕ название вашей черты. Оно не показывается в игре, но именно РАБОЧЕЕ название используется чтобы, например, обозначить конфликт черт.
<degreeDatas>
<li>
<label>ModTrait</label> А вот это уже название черты отображающееся в игре.
<description>{PAWN_nameDef} have a mod trait.</description> описание черты.
"{PAWN_nameDef}"-универсальный код имени персонажа, так что если вашего персонажа зовут, например, Джон, то в игре описание будет выглядеть: "Джон have a mod trait."
<statOffsets> Модификаторы которые черта накладывает на персонажа.
<AimingDelayFactor>0</AimingDelayFactor> Время перезарядки(Обратите внимание, число 1 прибавляет к времени, а -1 сокращает. Такая же логика используется и во всем остальном, не пишите +1)
<ShootingAccuracyPawn>0</ShootingAccuracyPawn> Точность стрельбы
<MoveSpeed>0</MoveSpeed> Скорость передвижения
<MeleeHitChance>0</MeleeHitChance> Шанс удара в ближнем бою
<MeleeDodgeChance>0</MeleeDodgeChance> Шанс уклонения в ближнем бою
<GlobalLearningFactor>0</GlobalLearningFactor> Скорость обучения(Вот здесь, кстати, счет идет иначе. Чем быстрее-тем меньше написанное здесь число, чтобы понять где какой вариант используется-просмотрите черты из файлов игры)
<ResearchSpeed>0</ResearchSpeed> Скорость исследования
<PawnBeauty>0</PawnBeauty> Красота
<CarryingCapacity>0</CarryingCapacity> Переносимый вес
<IncomingDamageFactor>0</IncomingDamageFactor> Множитель получаемого урона
<ImmunityGainSpeed>0</ImmunityGainSpeed> Скорость выработки иммунитета
<MentalBreakThreshold>0</MentalBreakThreshold>
<ToxicResistance>0</ToxicResistance> Сопротивление токсинам
<ComfyTemperatureMax>0</ComfyTemperatureMax> Максимальная комфортная температура
<ComfyTemperatureMin>0</ComfyTemperatureMin>Минимальная комфортная температура
<WorkSpeedGlobal>0</WorkSpeedGlobal> Скорость работы
<RestRateMultiplier>0</RestRateMultiplier> Скорость сна/отдыха
<EatingSpeed>0</EatingSpeed> Скорость поглощения пищи
<CaravanRidingSpeedFactor>0</CaravanRidingSpeedFactor> Скорость передвижения каравана(В теории)
PsychicSensitivity>0</PsychicSensitivity> Пси-восприимчивость
<MeditationFocusGain>0</MeditationFocusGain> Получаемый от медитации пси-фокус
<PsychicEntropyMax>0</PsychicEntropyMax> Максимум пси-перегрева
<PsychicEntropyRecoveryRate>0</PsychicEntropyRecoveryRate> Скорость снятия пси-перегрева
<InjuryHealingFactor>0</InjuryHealingFactor> Регенерация
<BloodFiltration>0</BloodFiltration> Фильтрация крови
<Manipulation>0</Manipulation> Работа
<Sight>0</Sight> Зрение
CookSpeed>0</CookSpeed> Скорость приготовления пищи
<FoodPoisonChance>0</FoodPoisonChance> Шанс испортить еду при готовке
</statOffsets>
</li>
<skillGains> Навыки, которые увеличивает или уменьшает черта.
<li>
<key>Shooting</key> Название навыка(Для примера это Стрельба. Но вот все остальные: Melee(Ближний бой), Construction(Строительство), Mining(Горное дело), Cooking(Готовка), Plants(Растениеводство), Animals(Животноводство), Crafting(Ремесло), Artistic(Искусство), Medicine(Медицина), Social(Общение), Intellectual(Умственный труд).
<value>0</value>Значение, на которое увеличивается или уменьшается навык
</li>
</skillGains>
</degreeDatas>
<conflictingTraits> Конфликтующие черты(т.е. колонист не может иметь одновременно эту черту и те, что прописаны в данном разделе)
<li>ModTrait</li>
</conflictingTraits>
</TraitDef>
</Defs>
Вписываем все необходимое, убираем ненужное, проверяем закрыты ли все скобочки и сохраняем файл. Открываем файл с помощью приложения читающего .xml(Например я использую Edge) и если все сделано правильно то вы увидите код. Если нет-то сообщение об ошибке. Доводим разметку до рабочего состояния и запускаем игру, там находим свой мод, включаем его и бежим проверять. Та-да, вы создали свой мод на трейты!
Далее я напишу о том как создавать гены и способности.
Рецепт 2. Гены и способности.
В папке "Defs" создаем файл "GeneDefs.xml" и начинаем редактирование.
Вааааксвеел!1! Зачем ты говоришь мне что гены могут добавлять кастомные способности, если я без понятия как их сделать?1!
Ну, я сейчас объясню.
Способности по своей сути делятся на три типа: Псионические(Т.е. завязанные на псионике), Идеологические(Т.е. выдаваемые определенными ролями в идеологии) и Генетические(Т.е. доступные благодаря определенным генам).
А теперь о кастомных категориях и иконках.
Чтобы создать категорию в папке "Defs" создаем файл "GeneCategoryDefs.xml" внутри пишем:
Чтобы использовать кастомную иконку в папке с модом создаем папку "Textures", в ней папку "UI", в ней папку "Icons", далее "Genes" или "Abilities" и после кидаем туда изображение. Далее в строке "iconPath" указываем путь начиная с UI и вуаля!-ваша иконка в игре.
Далее я разберусь со способностями и примусь за новый рецепт. Не вижу смысла писать о создании ксенотипов и фракций(ибо этот гайд уже доступен на просторах сообщества), так что скорее всего я попробую разобраться в имплантах или материалах.
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<GeneDef>
<defName>ModGene</defName> Имя вашего гена.
<label>mod gene</label> Отображающееся в игре имя вашего гена.
<labelShortAdj>mod-gene</labelShortAdj> Короткий идентификатор вашего гена
<description>Carriers of this gene have a mod gene.</description> Описание вашего гена.
<resourceLabel>resource</resourceLabel> Ресурс, на который ген оказывает влияние(если оказывает. В оригинале игры я могу найти только Гемоген и пишется он вот так: "hemogen".)
<iconPath>UI/Icons/Genes/Mod_gene</iconPath> Иконка, которую использует ваш ген. О добавлении кастомных иконок для генов и способностей позже.
<prerequisite>ModGene</prerequisite> Требование какого-либо гена
<resourceLossPerDay>0</resourceLossPerDay> Потеря ресурса в день(можете вписать отрицательное значение и получите прибавление в день)
<displayCategory>ModGenes</displayCategory> Категория, в которой будет отображаться ваш ген. О добавлении кастомных категорий позже.
<statFactors> Модификаторы которые накладывает ваш ген
<InjuryHealingFactor>0</InjuryHealingFactor> Регенерация
<ImmunityGainSpeed>0</ImmunityGainSpeed> Скорость выработки иммунитета
<ToxicEnvironmentResistance>0</ToxicEnvironmentResistance> Сопротивление токсичной среде
<Fertility>0</Fertility>
<biologicalAgeTickFactorFromAgeCurve> Старение/Взросление.
<points>
<li>(0, 0)</li> Первой цифрой пишем возраст, на который влияет этот ген, а второй-скорость взросления/старения. Так 0 отключает его вовсе, а чем выше цифра-тем быстрее носитель данного гена взрослеет.
</points>
</biologicalAgeTickFactorFromAgeCurve>
<hediffGiversCannotGive> Невозможность получить повреждения/болезни
<li>Carcinoma</li> Карцинома
<li>HeartAttack</li> Сердечный приступ
<li>BadBack</li> Больная спина
<li>Frail</li> Немощь
<li>Cataract</li> Катаракта
<li>Dementia</li> Деменция
<li>Alzheimers</li> Альцгеймер
<li>Asthma</li> Астма
<li>HeartArteryBlockage</li> Тромб
</hediffGiversCannotGive>
<makeImmuneTo> Иммунитет к болезням(Полный)
<li>Flu</li> Грипп
<li>Malaria</li> Малярия
<li>SleepingSickness</li> Криптосонная болезнь
<li>Plague</li> Чума
<li>WoundInfection</li> Инфекция(раны)
<li>LungRot</li> Гниение легких
</makeImmuneTo>
<damageFactors> Множитель разных типов получаемого урона
<Flame>0</Flame> Огонь
</damageFactors>
<ComfyTemperatureMin>0</ComfyTemperatureMin> Минимальная комфортная температура
<ComfyTemperatureMax>0</ComfyTemperatureMax> Максимальная комфортная температура
<MoveSpeed>0</MoveSpeed> Скорость передвижения
<PawnBeauty>0</PawnBeauty> Красота
<GlobalLearningFactor>0</GlobalLearningFactor> Множитель скорости обучения
<ToxicResistance>0</ToxicResistance> Сопротивление кислоте
<forcedTraits> Добавляемые черты
<li>
<def>ModTrait</def>
</li>
</forcedTraits>
<IncomingDamageFactor>0</IncomingDamageFactor> Множитель получаемого урона
<painFactor>0</painFactor> Множитель ощущаемой боли
<socialFightChanceFactor>0</socialFightChanceFactor> Шанс драки
<aggroMentalBreakSelectionChanceFactor>0</aggroMentalBreakSelectionChanceFactor> Шанс агрессивного нервного срыва
<prisonBreakMTBFactor>0</prisonBreakMTBFactor> Шанс побега из плена
<RestFallRateFactor>0</RestFallRateFactor> Множитель потребности сна/отдыха
<MeleeDamageFactor>0
</MeleeDamageFactor> Множитель наносимого урона в ближнем бою
<lovinMTBFactor>0</lovinMTBFactor>
</statFactors>
<marketValueFactor>0</marketValueFactor> Стоимость данного гена у торговцев.
<abilities> Способности, добавляемые этим геном
<li>ModAbility</li> Сюда вставляем игровое название вашей способности
</abilities>
<descriptionHyperlinks>
<AbilityDef>ModAbility</AbilityDef> А сюда рабочее
</descriptionHyperlinks>
<biostatCpx>0</biostatCpx> Сколько очков сложности добавляет ген.
<biostatMet>0</biostatMet> Сколько очков метаболизма добавляет ген(большинство генов отнимают метаболизм, так что скорее всего вы напишите отрицательное число)
<biostatArc>0</biostatArc> Сколько архитных очков добавляет ген.
<symbolPack> Сюда вы можете добавить слова, которые будут использоваться при генерации названия ксенотипа носителей этого гена.
<prefixSymbols>
<li>
<symbol>modded</symbol> вооот в эту строчку, если быть точным. Если вы хотите добавить больше чем одно слово, то...
</li>
<li>
<symbol>modded2</symbol> ставьте его таким образом.
</li>
</prefixSymbols>
</symbolPack>
</GeneDef>
</Defs>
Вааааксвеел!1! Зачем ты говоришь мне что гены могут добавлять кастомные способности, если я без понятия как их сделать?1!
Ну, я сейчас объясню.
Способности по своей сути делятся на три типа: Псионические(Т.е. завязанные на псионике), Идеологические(Т.е. выдаваемые определенными ролями в идеологии) и Генетические(Т.е. доступные благодаря определенным генам).
...и вот примерно на этом моменте я обнаружил небольшую неполадку, так что продолжу написание позже, когда сделаю несколько тестов. Если быть конкретным: будет-ли работать способность БЕЗ указания родительской категории.
А теперь о кастомных категориях и иконках.
Чтобы создать категорию в папке "Defs" создаем файл "GeneCategoryDefs.xml" внутри пишем:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<GeneCategoryDef>
<defName>ModGenes</defName> Рабочее название категории
<label>mod genes</label> Отображаемое название категории
<displayPriorityInXenotype>0</displayPriorityInXenotype> В моем понимании это редкость появления генов данной категории в ксенотипах, где чем выше число-тем более редкие это гены, но я не уверен. Возможно это вовсе порядок отображения данной категории в редакторе ксенотипа.
</GeneCategoryDef>
</Defs>
Чтобы использовать кастомную иконку в папке с модом создаем папку "Textures", в ней папку "UI", в ней папку "Icons", далее "Genes" или "Abilities" и после кидаем туда изображение. Далее в строке "iconPath" указываем путь начиная с UI и вуаля!-ваша иконка в игре.
Далее я разберусь со способностями и примусь за новый рецепт. Не вижу смысла писать о создании ксенотипов и фракций(ибо этот гайд уже доступен на просторах сообщества), так что скорее всего я попробую разобраться в имплантах или материалах.