RimWorld
42 beoordelingen
Как добавить кастомные Фракции и Ксенотипы
Door KKRLL
Данное руководство является переводом оригинального руководства под названием How to add custom Xenotypes and Factions
______________________________________________________________________________________________________________

Вы создали девушку-кошку, гнома или что-то совершенно другое, но вам нужна игровая фракция, в которой они могли бы появиться, а не рандом, когда кто-то появляется в случайной капсуле или в качестве раба. В этом руководстве я расскажу вам о том, как сделать кастомный Ксенотип и создать фракцию, в которой он будет появляться. Для этого вам не понадобятся знания программирования, вам просто нужно знать формат XML, который используется в игре
2
2
3
2
   
Prijs
Toevoegen aan favorieten
Toegevoegd aan favorieten
Verwijderen uit favorieten
Предисловие
Если вы расстроились из-за того, что не можете встретить в мире созданный вами ксенотип, (если только вам не повезет с дроп-капсулой или вы не найдете его в качестве раба), это руководство призвано помочь вам исправить ситуацию.

Я проведу вас через основы создания простого мода, который добавит ваш ксенотип в игру и создаст фракцию, использующую его для своих колонистов.
Дисклеймер
Прежде чем начать что-либо делать, вам нужно найти папку с модами для RimWorld.

  • Щелкните правой кнопкой мыши на игре,
  • Выберите "Свойства",
  • Перейдите в раздел "Локальные файлы"
  • Нажмите "Обзор". В результате вы попадете в каталог RimWorld.
  • Отсюда откройте папку Mods или, если ее еще нет, создайте папку Mods, а затем откройте ее.



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

Внутри этой папки вам нужно будет создать папку About и папку Defs.



Если вы планируете обновлять этот мод, чтобы он работал в новых версиях RimWorld, то вместо папки Defs создайте папку 1.4 (или той версии, на которой сейчас находится игра) и поместите в нее папку Defs. Если вы хотите создать свои собственные иконки для фракций и ксенотипов, вам также понадобится папка Textures рядом с папкой About.
Создание Мета-Даты
Теперь нам нужно создать набор определений, которые объяснят игре, что это за мод и что он делает. Для начала откройте "Блокнот" или любой другой текстовый редактор по вашему выбору. Я не рекомендую использовать для этого Microsoft Office или аналогичный продукт, так как вам нужен редактор, который будет сохранять только текст. Notepad++ - мой любимый, но есть много других, которые подойдут для этого. Теперь скопируйте это в свой текстовый редактор:

<?xml version="1.0" encoding="utf-8"?> <ModMetaData> <name>Mod Name</name> <author>Username</author> <packageId>username.modcategory.modname</packageId> <supportedVersions> <li>1.4</li> </supportedVersions> <modDependencies> <li> <packageId>Ludeon.RimWorld.Biotech</packageId> <displayName>Biotech</displayName> </li> </modDependencies> <loadAfter> <li>Ludeon.RimWorld.Biotech</li> </loadAfter> <description>A description to explain what your mod does when checking it in game.</description> </ModMetaData>

Теперь обновите данные в этом файле, чтобы они соответствовали вашему новому моду. Внутри <name></name> введите имя вашего мода. Например:
<name>Robots</name>

Внутри <author></author> укажите свое имя пользователя или любое другое имя, которое вам захочется вставить туда. Например:
<author>KKRLL</author>

Теперь <packageId></packageId>. Здесь нужно задать специальное имя, которое предназначено для того, чтобы даже если два человека создадут мод с одинаковым именем, RimWorld распознал, что моды разные.(По сути это является уникальным идентификатор).

То есть, если у вас есть два мода с одинаковыми именами, и вы используете один из них в игре, RimWorld проверяет, какие моды загружены, и видит моды с одинаковым именем, этот тег проверяет уникальный идентификатор. Вы можете вписать все, что хотите, но лучше всего для этого подходят username.modname или username.modCategory.modName. Например:
<packageId>KKRLL.Robots</packageId>

<supportedVersions></supportedVersions> должен представлять собой список номеров версий, поддерживаемых вашим модом, с каждой версией внутри тегов <li></li>. На момент написания статьи текущей версией была 1.4, поэтому я поместил туда именно ее, но это может быть как одна версия, так и список поддерживаемых версий.

<modDependencies></modDependencies> - это список всего, что кроме основной игры необходимо этому моду для работы. Поскольку мы играем с Ксенотипами, это означает, что нам нужно DLC BioTech. В тексте, который я попросил вас скопировать, уже есть список DLC, так что никаких изменений здесь делать не нужно.

<loadAfter></loadAfter> служит для указания RimWorld места, где ваш мод должен отображаться в списке активных модов и DLC. Таким образом, если мод находится в неправильном месте, RimWorld выделит его и сообщит вам, что его нужно исправить. Также есть <loadBefore></loadBefore>, но он вам не понадобится. Это еще одно изменение, которое вам не понадобится для этого мода.

<description></description> - это место, где вы описываете свой мод. При просмотре списка модов, если вы выберете мод, будет отображено то, что вы напишете в теге description, чтобы объяснить назначение мода.

Теперь, когда вы создали метаданные мода, пришло время сохранить их. Вы хотите сохранить в папке About вашего мода под именем About.xml. Если вы используете "Блокнот", вам нужно нажать на выпадающий список "Текстовые документы" (*.txt) и изменить его на "Все файлы" (*.*). Если вы не сделаете это изменение, то в итоге сохраните файл под названием About.xml.txt. Это должен быть About.xml с расширением .xml, а не .txt.
Создание своего Ксенотипа
Теперь, когда мы определили наш мод, пора приступить к его созданию. Для работы мода необходимо определить две вещи. Первая - это ваш ксенотип и соответствующая генетика, которую он будет использовать, а вторая - фракция для вашего ксенотипа. Как и прежде, пришло время для нового текстового документа. Вот шаблон, который вам нужно скопировать.

<?xml version="1.0" encoding="utf-8" ?> <Defs> <XenotypeDef> <defName>Name</defName> <label>name</label> <description>A detailed description of your Xenotype</description> <descriptionShort>A short description of your Xenotype</descriptionShort> <iconPath>texture/path/to/icon</iconPath> <inheritable>true</inheritable> <nameMaker>CustomXenotypeNameGenerator</nameMaker> <nameMakerFemale>CustomXenotypeNameGenerator_Female</nameMakerFemale> <chanceToUseNameMaker>1</chanceToUseNameMaker> <combatPowerFactor>1.0</combatPowerFactor> <genes> <li>gene1</li> <li>gene2</li> <li>gene3</li> ... </genes> </XenotypeDef> </Defs>
Прежде чем мы начнем, я сразу скажу, что теги <nameMaker>, <nameMakerFemale> и <chanceToUseNameMaker>, вероятно, следует удалить. В этом уроке я не буду углубляться в то, как они используются в rulePackDefs и как они работают.

Цель этих тегов - позволить вам определить, как должно быть сгенерировано имя для вашего Ксенотипа, и сослаться на определенный вами генератор имен. Я оставляю их в XML-шаблоне просто для того, чтобы вы знали, что есть такая возможность, на случай, если у вас возникнет желание изучить, как генерируются имена в RimWorld.

<defName></defName> - это имя для вашего ксенотипа, но оно не должно совпадать с существующим ксенотипом, иначе вы перезапишете этот ксенотип, удалите его из игры и замените своим. Поэтому убедитесь, что вы выбрали что-то уникальное, что игра не использует, и что другой мод вряд ли будет использовать также.

<label></label> - это имя, которое вы увидите в игре. Обычно defName и label могут быть одинаковыми, но это не всегда так, даже в игровых данных. Ярлык может быть любым, какой вы захотите, это то, что вы увидите в игре.

<description></description> предназначен для полного описания истории Ксенотипа. Вы можете рассказать о том, как появился ваш Ксенотип, в чем он преуспел, какие у него проблемы, чем он любит заниматься и т. д.

<descriptionShort></descriptionShort> - это краткое описание вашего ксенотипа, обычно просто краткое изложение преимуществ и недостатков по сравнению с основным.

<iconPath></iconPath> - это место, где вы указываете свой пользовательский значок в папке Textures. Полный путь к ней не нужен. Например, если в папке Textures нет подпапок, а есть только файлы с иконками, вы укажете имя файла с иконкой, и все. <iconPath>dwarfIcon</iconPath> будет работать нормально. Однако если у вас есть вложенные папки, вам нужно будет перечислить эти подпапки. Если вы создали папку XenotypeIcon внутри Textures и поместили туда свою иконку, то вместо нее вы будете использовать что-то вроде <iconPath>XenotypeIcon/Dwarf</iconPath>. Вам не нужно включать .jpg, .png или что-то подобное.

<inheritable></inheritable> - это флаг, определяющий, являются ли гены данного ксенотипа наследуемыми детьми или нет (не наследуются детьми, и добавление новых генов заменяет существующие). Этот флаг нужен только в том случае, если вы хотите, чтобы дети данного ксенотипа наследовали черты своих родителей.
true - наследуется, false - не наследуется

<combatPowerFactor></combatPowerFactor> предназначен для определения того, насколько крут ксенотип. RimWorld не знает этого автоматически, поэтому здесь вы сами сообщаете ему об этом. Если ксенотип необычайно крут, установите более высокое число, и его появление будет стоить больше очков рейда по сравнению с базовым, поэтому рейдов с этим ксенотипом будет меньше. Более низкое число приведет к обратному результату.

Теперь мы переходим к <genes></genes>, и здесь вы можете определить, какие черты составляют ваш ксенотип. Вы будете перечислять каждый ген в формате <li>gene_name</li>, по одному в строке, пока не получите полный список внутри тега <genes></genes>. Я приведу полный список генов, которые вы можете использовать, но я настоятельно рекомендую вам зайти в игру и создать там свой собственный ксенотип.

Это позволит вам создать ксенотип, который находится в пределах шкалы метаболической эффективности от -5 до +5, используемой в игре, и вы сможете увидеть, сколько еды понадобится вашему ксенотипу, и находится ли он в диапазоне, который вам удобен.После этого сделайте скриншот своих генов, чтобы их можно было скопировать в тег <genes></genes>.

Если вам нужно несколько Ксенотипов, скопируйте и вставьте шаблон снова, начиная с <XenotypeDef> и заканчивая </XenotypeDef>. Вам не нужна первая строка или теги <Defs></Defs>. Они не являются частью определения, они просто содержат определение внутри него. Открывающий и закрывающий теги <XenotypeDef> - это собственно определение.

Скопировав соответствующий раздел, вставьте его после </XenotypeDef> и перед </Defs> в свой текстовый документ. Двойной интервал между строками помогает визуально разделить каждый ксенотип, чтобы вы могли быстро понять, где заканчивается один и начинается следующий.

Теперь, когда вы создали свой ксенотип (или несколько, как вам удобнее), вам нужно сохранить документ в папке Defs (внутри папки 1.4, если вы ее создали) под именем Xenotypes.xml. Обратите внимание, что название не обязательно должно быть Xenotypes.xml, но оно должно быть сохранено с .xml в качестве типа файла. Вы можете назвать его, например, Dwarf.xml, если хотите. Кроме того, небольшое напоминание: убедитесь, что вы не сохраняете файл в формате .txt, чтобы он не добавлял его в конец имени файла.
Список всех генов
A list of all the vanilla genes
Hair_BaldOnly
Hair_ShortOnly
Hair_LongOnly
Hair_Grayless

Beard_BushyOnly
Beard_NoBeardOnly
Beard_Always (Unisex beards)

Skin_InkBlack
Skin_SlateGray
Skin_LightGray
Skin_SheerWhite
Skin_Blue
Skin_Purple
Skin_PaleRed
Skin_DeepRed
Skin_PaleYellow
Skin_DeepYellow
Skin_Orange
Skin_Green

Hair_SnowWhite
Hair_InkBlack
Hair_Gray
Hair_DarkBlack
Hair_MidBlack
Hair_DarkReddish
Hair_DarkSaturatedReddish
Hair_DarkBrown
Hair_ReddishBrown
Hair_SandyBlonde
Hair_Blonde
Hair_Pink
Hair_LightPurple
Hair_LightBlue
Hair_LightTeal
Hair_LightGreen
Hair_LightOrange
Hair_BrightRed

Furskin

Eyes_Red
Eyes_Gray

Brow_Heavy

Tail_Furry
Tail_Smooth

FacialRidges

Body_Fat
Body_Thin
Body_Hulk
Body_Standard

Ears_Human
Ears_Pig
Ears_Floppy
Ears_Cat
Ears_Pointed

Nose_Human
Nose_Pig

Jaw_Baseline (Human jaw)
Jaw_Heavy

Head_Gaunt

Headbone_Human
Headbone_MiniHorns
Headbone_CenterHorn

Voice_Human
VoicePig
VoiceRoar

AptitudeTerrible_(skillname) example: AptitudeTerrible_Cooking, AptitudeTerrible_Intellectual, etc.
AptitudePoor_(skillname)
AptitudeStrong_(skillname)
AptitudeRemarkable_(skillname)

ChemicalDependency_(drug) example: ChemicalDependency_GoJuice, ChemicalDependency_Alcohol
AddictionResistant_(drug)
AddictionImmune_(drug)

FireSpew
FoamSpray
LongjumpLegs
AnimalWarcall
PiercingSpine
AcidSpray

Hemogenic
Bloodfeeder
Coagulate
XenogermReimplanter
HemogenDrain
Deathless

PerfectImmunity
DiseaseFree (Non-senescent)
TotalHealing (Scarless)
Deathrest
Ageless
ArchiteMetabolism

Hands_Human
Hands_Pig (trotter hands)
ElongatedFingers

WoundHealing_Slow
WoundHealing_Fast
WoundHealing_SuperFast

Immunity_Weak
Immunity_Strong
Immunity_SuperStrong

ToxicEnvironmentResistance_Partial (Partial Antitoxic Lungs)
ToxicEnvironmentResistance_Total (Total Antitoxic Lungs)

ToxResist_Partial
ToxResist_Total

PollutionRush (Pollution stimulus)

Sterile
Fertile

Libido_Low
Libido_High

Superclotting

MinTemp_SmallIncrease (Cold weakness)
MinTemp_SmallDecrease (Cold tolerant)
MinTemp_LargeDecrease (Cold super tolerant)

MaxTemp_LargeIncrease (Heat super tolerant)
MaxTemp_SmallIncrease (Heat tolerant)
MaxTemp_SmallDecrease (Heat weakness)

FireResistant
FireWeakness (Tinderskin)
FireTerror (Pyrophobia)

PsychicAbility_Deaf
PsychicAbility_Dull
PsychicAbility_Enhanced
PsychicAbility_Extreme

PsychicBonding

MoveSpeed_Slow
MoveSpeed_Quick
MoveSpeed_VeryQuick

Beauty_VeryUgly
Beauty_Ugly
Beauty_Pretty
Beauty_Beautiful

Learning_Slow
Learning_Fast

Mood_Depressive (Very unhappy)
Mood_Pessimist (Unhappy)
Mood_Optimist (Happy)
Mood_Sanguine (Very Happy)

Delicate
Robust

Pain_Reduced
Pain_Extra

Aggression_DeadCalm
Aggression_Aggressive
Aggression_HyperAggressive

VerySleepy
Sleepy
LowSleep
Neversleep

MeleeDamage_Weak
MeleeDamage_Strong

UVSensitivity_Mild
UVSensitivity_Intense

KindInstinct
ViolenceDisabled

Instability_Mild (Mild cell instability)
Instability_Major

StrongStomach
RobustDigestion

Nearsighted
DarkVision
KillThirst
Unstoppable
NakedSpeed

Inbred (Вам, вероятно, не следует использовать этот вариант, он предназначен для наказания детей людей, которые состоят в родстве друг с другом)
Создание Фракции
Итак, последний важный шаг - создание фракции. Снова создайте новый текстовый документ, скопируйте и вставьте в него шаблон. Есть несколько шаблонов в зависимости от того, какую фракцию вы хотите создать. При желании вы можете очень подробно изучить эти фракции, но я просто расскажу, как создать базовую фракцию. Существуют дружественные, изначально враждебные и постоянно враждебные фракции, а также два технологических уровня - промышленный и племенной. Полностью пользовательское определение позволит вам создать гораздо более разнообразный набор фракций, используя пользовательские уровни технологий, но в рамках данного руководства мы будем использовать предварительный набор, который был определен Ludeon.

<?xml version="1.0" encoding="utf-8" ?> <Defs> <FactionDef ParentName="OutlanderFactionBase"> <defName>Name</defName> <label>name</label> <description>A description of the faction goes here.</description> <colorSpectrum> <li>(red, green, blue)</li> <li>(red, green, blue)</li> </colorSpectrum> <maxConfigurableAtWorldCreation>9999</maxConfigurableAtWorldCreation> <configurationListOrderPriority>30</configurationListOrderPriority> <factionIconPath>Path/To/Icon</factionIconPath> <xenotypeSet Inherit="False"> <xenotypeChances> <XenotypeDefName>999</XenotypeDefName> </xenotypeChances> </xenotypeSet> </FactionDef> </Defs>

Первое, на что мы хотим обратить внимание, это <FactionDef ParentName=""> Часть в кавычках позволяет вам выбрать уже созданный шаблон, который RimWorld использует для фракций. На выбор предлагаются следующие варианты: OutlanderFactionBase, OutlanderRoughBase, TribeBase, TribeRoughBase, TribeSavageBase и PirateBandBase.

То, что я сказал ранее о тегах <defName>, <label> и <description>, остается верным. <defName> — это имя, которое игра использует для ссылки на то, что мы создаем, и оно должно быть уникальным, чтобы вы не перезаписали то, что уже было создано. <label> — это имя, которое будет отображаться вам в игре.
<description> — это место, где вы описываете фракцию и ее можно будет увидеть в игре.

<colorSpectrum></colorSpectrum> позволяет вам определить цвет значка, который будет использоваться фракцией. Диапазон каждого цвета составляет от 0,0 до 1,0, поэтому желтый — это <li>(1,0, 1,0, 0,0)</li>, а коричневый — (0,4, 0,17, 0,0). Причиной двух определений цвета является установка диапазона цветов. Если красный имеет 0,3 в первом теге <li> и 0.
4 во втором, то каждый раз, когда генерируется фракция, будет выбираться случайный уровень красного цвета между 0,3 и 0,4, затем то же самое будет происходить с тем, что было определено для зеленого, затем для синего.

<maxConfigurableAtWorldCreation></maxConfigurableAtWorldCreation> позволяет вам указать максимальное количество фракций, которые могут быть в мире. Здесь нет смысла редактировать число, но если вы хотите иметь только 1 фракцию, вы можете изменить это число с 9999 на 1. В большинстве шаблонов это уже определено, но в TribeBase и OutlanderFactionBase этого нет, так что вам понадобятся эти теги, если вы создаете фракции любого из этих типов. В противном случае удалите эту строку.

<configurationListOrderPriority></configurationListOrderPriority> Это просто для того, чтобы упорядочить порядок фракций. Младшие номера отображаются первыми, старшие - позже. OutlanderFactionBase использует 10, TribeBase использует 30. У других типов фракций это уже определено, так что если вы используете один из них, удалите и эту строку.

<factionIconPath></factionIconPath> позволяет вам ссылаться на изображение, которое вы помещаете в текстуры, подобно тегу <iconPath> из определений Ксенотипа. Он необязателен, так как в определениях фракций, из которых мы черпаем информацию, уже определены иконки. Учитывая это, если вы хотите создать свои собственные иконки, убедитесь, что вы поместили их в папку Textures, а также иконки должны быть окрашены в белый цвет с прозрачным фоном.

<xenotypeSet></xenotypeSet> - это место, где мы определяем, какие ксенотипы могут существовать во фракции. Теперь вы можете вставить созданный вами ксенотип во фракцию. Просто измените оба экземпляра XenotypeDefName на defName вашего ксенотипа. Это может быть <Dwarf>999</Dwarf>, или <Catgirl>999</Catgirl>, или даже <PointyEaredLeafLover>999</PointyEaredLeafLover>.

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

<xenotypeSet Inherit="False"> <xenotypeChances> <Dwarf>0.2</Dwarf> <Elf>0.05</Elf> <Goblin>0.1</Goblin> </xenotypeChances> </xenotypeSet>

При таком способе вы задаете процентный шанс появления каждого ксенотипа. 0,2 = 20%, 0,05 = 5% и т. д. Если вы не укажете достаточное количество, чтобы в сумме получилось 1.0 (или 100%), то дополнительный процент, не имеющий определенного ксенотипа, будет базовым. В моем примере выше у вас есть 20 % гномов, 5 % эльфов, 10 % гоблинов и 65 % базелинов.

Как и в случае с ксенотипами, вы можете создать более одной фракции таким образом, скопировав шаблон из <FactionDef> в </FactionDef> и вставив дополнительную копию для редактирования.

Когда документ будет готов, сохраните его под именем Factions.xml (или другим именем, заканчивающимся на .xml) в папке Defs, еще раз убедившись, что вы не сохраните его случайно как .txt.
Готово!
Теперь вы закончили. У вас есть готовый мод. Убедитесь, что все сохранилось правильно, что файлы имеют формат .xml, а не обычного текстового документа, и, если все прошло как ожидалось, вы сможете открыть RimWorld, проверить свой список модов и увидеть свой мод. Если вы хотите увидеть готовый мод в качестве примера, я выложил его здесь: My Custom Xenotype and Faction mod[drive.google.com]. Он добавляет эльфийское племя, гномью расу и дружелюбное племя людей-кошек. Вы можете скачать мод и изучить ксенотипы и фракции, чтобы увидеть, как я их настраивал.
Сведения об авторе
Данное руководство является переводом оригинального руководства под названием How to add custom Xenotypes and Factions
27 opmerkingen
KKRLL  [auteur] 15 sep om 4:24 
1) Можно
2) Использовать чат гпт
Fang 14 sep om 21:55 
Такой вопрос, могу ли я добавить ген в ксенотип фракции, как мне сделать это не разбираясь в написании кода
Syuta Atara 21 jun om 23:48 
Большое спасибо! :steamthumbsup:
KKRLL  [auteur] 21 jun om 16:08 
Также учитывай зависимости: если ген работает только вместе с каким-то Comp или Hediff (ещё один def файл), тебе тоже придётся их скопировать или подключить.
KKRLL  [auteur] 21 jun om 16:07 
Да, если выполнены следующие условия:
гены из других модов корректно прописаны def файле в XML другого мода
мод, откуда ты берёшь гены, загружен до твоего мода (в списке загрузки)
гены не помечены как abstract = true (то есть предназначены для использования).

Но некоторые модификации не предназначены для использования их генов извне: гены могут использовать специфический код или механики или гены могут быть не видны в DefDatabase (не загружаются глобально) - то есть ген создается через C# код, а не через XML.
Syuta Atara 21 jun om 4:28 
Можно ли добавить в список генома гены из других модификаций?:lunar2020ratinablanket:
KKRLL  [auteur] 16 jun om 4:06 
Знакомо, обращайся, если что:Sadly:
Офигеть, спасибо тебе огромное, потому что по римке очень мало инфы и приходится по крупицам собирать.
KKRLL  [auteur] 15 jun om 3:37 
По поводу иконки: 128×128 пикселей (px) — стандартный размер.
KKRLL  [auteur] 15 jun om 3:35 
Подробнее можешь почитать тут: https://vk.com/@rimworldmodding-def-factiondef