[ RU ] Rimworld 1.5 Создание мода
(90 ratings)
Jul 21, 2024 @ 9:33am2,586279
Modding or ConfigurationWorkshopRussian
Структура мода
Папка Rimworld
└ Mods
└ <Name_Mod>
├ About
│ ├ About.xml
│ ├ Preview.png
│ └ ModIcon.png
├ Assemblies
├ Defs
│ ├ <Name_Folder>
├ Languages
│ ├ <Language>
│ │ ├ DefsInjected
│ │ ├ Keyed
│ │ └ Strings
├ Patches
├ Sounds
│ └ <Name_Folder>
│ └ <Sound.ogg / .mp3 / .wav>
└ Textures
└ <Name_Folder>
└ <Texture.png>
└ Mods
└ <Name_Mod>
├ About
│ ├ About.xml
│ ├ Preview.png
│ └ ModIcon.png
├ Assemblies
├ Defs
│ ├ <Name_Folder>
├ Languages
│ ├ <Language>
│ │ ├ DefsInjected
│ │ ├ Keyed
│ │ └ Strings
├ Patches
├ Sounds
│ └ <Name_Folder>
│ └ <Sound.ogg / .mp3 / .wav>
└ Textures
└ <Name_Folder>
└ <Texture.png>
About
Папка с основной информации о вашем проекте / моде.
About.xml ( Обязательно )
Используемый для идентификации в списке модов Rimworld и последующей его загрузки
<?xml version="1.0" encoding="utf-8"?> - Пролог, являющийся необязательным, но содержит номер версии XML и устанавливает кодировку файла UTF-8
<ModMetaData> - обязательный корневой тег
Обязательные теги в файле:
Необязательные теги:
<?xml version="1.0" encoding="utf-8"?> - Пролог, являющийся необязательным, но содержит номер версии XML и устанавливает кодировку файла UTF-8
<ModMetaData> - обязательный корневой тег
Обязательные теги в файле:
Строка
Описание
<packageId>AuthorName.ModName</packageId>
packageId должно быть буквенно-цифровым, по крайней мере, с одной точкой, разделяющей две строки. Обычно рекомендуется использовать YourName.YourModName, YourProjectName.YourModName, YourName.YourSeriesName.YourModName, или что-то подобное.
packageId должен быть глобально уникальным для всех модов. Если RimWorld встретит более одного мода с одинаковым packageId, даже если их нет в вашем текущем списке модов, тогда будет выдана ошибка и возможно будет использовать только первый мод. Единственный раз, когда можно использовать то же самое packageId, это если вы создаёте или продолжаете мод и хотите, чтобы он действовал как замена. В таких случаях игроки должны отказаться от подписки на оригинальный мод, чтобы иметь возможность использовать ваш.
Примечание: packageId не учитывает регистр
packageId должен быть глобально уникальным для всех модов. Если RimWorld встретит более одного мода с одинаковым packageId, даже если их нет в вашем текущем списке модов, тогда будет выдана ошибка и возможно будет использовать только первый мод. Единственный раз, когда можно использовать то же самое packageId, это если вы создаёте или продолжаете мод и хотите, чтобы он действовал как замена. В таких случаях игроки должны отказаться от подписки на оригинальный мод, чтобы иметь возможность использовать ваш.
Примечание: packageId не учитывает регистр
<name>ModName</name>
Название вашего мода.
<author>
<li>AuthorName</li>
<li>AuthorName2</li>
</author>
<li>AuthorName</li>
<li>AuthorName2</li>
</author>
Автор(ы) мода.
<description>Description</description>
Текстовое описание вашего мода в игре.
<supportedVersions>
<li>1.4</li>
<li>1.5</li>
</supportedVersions>
<li>1.4</li>
<li>1.5</li>
</supportedVersions>
Версия игры, нужная для полной поддержки мода.
Доступные значения:
0.14
0.15
0.16
0.17
0.18
0.19
1.0
1.1
1.2
1.3
1.4
1.5
Доступные значения:
0.14
0.15
0.16
0.17
0.18
0.19
1.0
1.1
1.2
1.3
1.4
1.5
Необязательные теги:
Строка
Описание
<modVersion>1.0</modVersion>
Версия вашего проекта.
<modIconPath>Путь/к/иконке</modIconPath>
Добавляет значок вашего мода, который отображается на экранах загрузки мира
Обратите внимание, что текущая нестабильная версия RimWorld 1.5 также автоматически загружает About/ModIcon.png, поэтому для отображения значка мода в этом поле нет необходимости. Он нужен вам только в том случае, если вы по какой-то причине хотите сохранить значок мода в папке "Текстуры"
Иконки модов должны представлять собой PNG-файлы размером 32x32
Обратите внимание, что текущая нестабильная версия RimWorld 1.5 также автоматически загружает About/ModIcon.png, поэтому для отображения значка мода в этом поле нет необходимости. Он нужен вам только в том случае, если вы по какой-то причине хотите сохранить значок мода в папке "Текстуры"
Иконки модов должны представлять собой PNG-файлы размером 32x32
<url>URL</url>
Веб-ссылка с дополнительной информацией по вашему проекту.
<descriptionsByVersion>
<1.4>Description For 1.4</1.4>
<1.5>Description For 1.5</1.5>
</descriptionsByVersion>
<1.4>Description For 1.4</1.4>
<1.5>Description For 1.5</1.5>
</descriptionsByVersion>
Описание вашего проекта для каждой версии.
<modDependencies>
<li>
<packageId>ID мода</packageId>
<displayName>Название мода</displayName>
<steamWorkshopUrl>Ссылка на страницу мода в Мастерской Steam</steamWorkshopUrl>
</li>
</modDependencies>
<li>
<packageId>ID мода</packageId>
<displayName>Название мода</displayName>
<steamWorkshopUrl>Ссылка на страницу мода в Мастерской Steam</steamWorkshopUrl>
</li>
</modDependencies>
Используется для указания зависимостей для вашего проекта.
<modDependenciesByVersion>
<v1.4>
<li>
<packageId>ID мода</packageId>
<displayName>Название мода</displayName>
<steamWorkshopUrl>Ссылка на страницу мода в Мастерской Steam</steamWorkshopUrl>
</li>
</v1.4>
<v1.5>
<li>
<packageId>ID мода</packageId>
<displayName>Название мода</displayName>
<steamWorkshopUrl>Ссылка на страницу мода в Мастерской Steam</steamWorkshopUrl>
</li>
</v1.5>
</modDependenciesByVersion>
<v1.4>
<li>
<packageId>ID мода</packageId>
<displayName>Название мода</displayName>
<steamWorkshopUrl>Ссылка на страницу мода в Мастерской Steam</steamWorkshopUrl>
</li>
</v1.4>
<v1.5>
<li>
<packageId>ID мода</packageId>
<displayName>Название мода</displayName>
<steamWorkshopUrl>Ссылка на страницу мода в Мастерской Steam</steamWorkshopUrl>
</li>
</v1.5>
</modDependenciesByVersion>
То же самое, что и <modDependencies>, только для каждой версии.
<loadBefore>
<li>ID мода</li>
</loadBefore>
<li>ID мода</li>
</loadBefore>
Используется для указания модов, которые должны будут загрузиться ПОСЛЕ вашего.
<loadBeforeByVersion>
<v1.4>
<li>ID мода</li>
</v1.4>
<v1.5>
<li>ID мода</li>
</v1.5>
</loadBeforeByVersion>
<v1.4>
<li>ID мода</li>
</v1.4>
<v1.5>
<li>ID мода</li>
</v1.5>
</loadBeforeByVersion>
То же самое, что и <loadBefore>, только для каждой версии.
<forceLoadBefore>
<li>ID мода</li>
</forceLoadBefore>
<li>ID мода</li>
</forceLoadBefore>
То же самое, что и <loadBefore>, но вместо простого предупреждения RimWorld не позволит загрузить ваш мод после указанных модов.
<loadAfter>
<li>ID мода</li>
</loadAfter>
<li>ID мода</li>
</loadAfter>
Используется для указания модов, которые должны будут загрузиться ДО вашего.
<loadAfterByVersion>
<v1.4>
<li>ID мода</li>
</v1.4>
<v1.5>
<li>ID мода</li>
</v1.5>
</loadAfterByVersion>
<v1.4>
<li>ID мода</li>
</v1.4>
<v1.5>
<li>ID мода</li>
</v1.5>
</loadAfterByVersion>
То же самое, что и <loadAfter>, только для каждой версии.
<forceLoadAfter>
<li>ID мода</li>
</forceLoadAfter>
<li>ID мода</li>
</forceLoadAfter>
То же самое, что и <loadAfter>, но вместо простого предупреждения RimWorld не позволит загрузить ваш мод раньше указанных модов.
<incompatibleWith>
<li>ID мода</li>
</incompatibleWith>
<li>ID мода</li>
</incompatibleWith>
Используется для указания модов, с которыми ваш мод абсолютно несовместим.
<incompatibleWithByVersion>
<v1.4>
<li>ID мода</li>
</v1.4>
<v1.5>
<li>ID мода</li>
</v1.5>
</incompatibleWithByVersion>
<v1.4>
<li>ID мода</li>
</v1.4>
<v1.5>
<li>ID мода</li>
</v1.5>
</incompatibleWithByVersion>
То же самое, что и <incompatibleWith>, только для каждой версии.
Preview.png ( Обязательно )
Используется в качестве изображения предварительного просмотра этого мода как в игровом менеджере модов, так и в Мастерская Steam.
Настоятельно рекомендуется использовать PNG-файл размером 640x360, поскольку это размер и соотношение сторон по умолчанию ( 16:9 ). ( Использование других размеров может привести к размытию ).
Вы также можете использовать разрешение 1280x720 для изображений с более высоким разрешением, но файлы предварительного просмотра должны иметь размер менее 1 МБ, иначе Мастерская Steam отклонит вашу загрузку.
Настоятельно рекомендуется использовать PNG-файл размером 640x360, поскольку это размер и соотношение сторон по умолчанию ( 16:9 ). ( Использование других размеров может привести к размытию ).
Вы также можете использовать разрешение 1280x720 для изображений с более высоким разрешением, но файлы предварительного просмотра должны иметь размер менее 1 МБ, иначе Мастерская Steam отклонит вашу загрузку.
ModIcon.png ( Необязательно )
Отображается на экранах загрузки игры.
Это должен быть PNG-файл размером 32x32 или 64x64, следует избегать слишком большого количества деталей или цветов.
Это должен быть PNG-файл размером 32x32 или 64x64, следует избегать слишком большого количества деталей или цветов.
Assemblies
Папка используется для добавления пользовательского кода в RimWorld в виде скомпилированного файла .DLL.
Правильно скомпилированные сборки будут автоматически загружены RimWorld.
Правильно скомпилированные сборки будут автоматически загружены RimWorld.
Defs
Имена файлов или папок внутри Defs не имеют значения, поэтому вы можете свободно называть их как хотите для своей личной организации, однако рекомендуется следовать основным соглашениям. (SoundDef в папке SoundDefs, ThingDef в различных /ThingDef_*** папках).
Шаблон с основными названиями папок Defs можно найти в Rimworld/Data/
Шаблон с основными названиями папок Defs можно найти в Rimworld/Data/
Languages
Сюда входят как переводы Defs, так и текст, связанный с кодом, а также список слов для процедурного имени и генерации контента.
DefsInjected
Папка DefInjected должна соответствовать типу Def, который вы пытаетесь перевести. Таким образом, переводы ThingDefs должны находиться внутри ThingDef папка.
XML-файлы DefInjected имеют LanguageData в качестве их корневого тега, а отдельные узлы внутри них должны соответствовать структуре XML тегов, которые вы пытаетесь перевести.
Пример:
в Defs/Thing_Defs/ лежит файл Machete.xml, а в этом файле написано:
исходя из этого мы в Languages/DefsInjected/Thing_Defs/Machete.xml напишем:
XML-файлы DefInjected имеют LanguageData в качестве их корневого тега, а отдельные узлы внутри них должны соответствовать структуре XML тегов, которые вы пытаетесь перевести.
Пример:
в Defs/Thing_Defs/ лежит файл Machete.xml, а в этом файле написано:
<?xml version="1.0" encoding="UTF-8"?>
<ThingDef>
<defName>Reizi.ExampleMachete</defName>
<label>Machete</label>
<description>Description for Machete</description>
<tools>
<li>
<label>handle</label>
<capacities>
<li>Blunt</li>
</capacities>
<power>9</power>
<cooldownTime>2</cooldownTime>
</li>
<li>
<label>point</label>
<capacities>
<li>Stab</li>
</capacities>
<power>14</power>
<cooldownTime>2</cooldownTime>
</li>
<li>
<label>edge</label>
<capacities>
<li>Cut</li>
</capacities>
<power>14</power>
<cooldownTime>2</cooldownTime>
</li>
</tools>
</ThingDef>
исходя из этого мы в Languages/DefsInjected/Thing_Defs/Machete.xml напишем:
<?xml version="1.0" encoding="UTF-8"?>
<LanguageData>
<Reizi.ExampleMachete.label>Мачете</Reizi.ExampleMachete.label>
<Reizi.ExampleMachete.description>Описание для мачете</Reizi.ExampleMachete.description>
<Reizi.ExampleMachete.tools.0.label>удар ручкой</Reizi.ExampleMachete.tools.0.label>
<Reizi.ExampleMachete.tools.1.label>колющий удар</Reizi.ExampleMachete.tools.1.label>
<Reizi.ExampleMachete.tools.2.label>режущий удар</Reizi.ExampleMachete.tools.2.label>
</LanguageData>
Keyed
В отличие от файлов DefInjected, эти файлы необходимо создавать даже для языка, который используется в моде по умолчанию. Использование файлов Keyed настоятельно рекомендуется для Strings, используемых в пользовательских Assemblies.
Даже если вы не планируете выполнять какие-либо переводы самостоятельно; если вы их не используете, то никто другой ваш мод тоже не сможет перевести.
в Languages/<Язык_мода>/Keyed/FileName.xml записываются сообщения, которые будут появляться в различных ситуациях.
Например, как в моде DubsHygiene, у которого в Languages/English/Keyed/DubsHygiene.xml написано:
Даже если вы не планируете выполнять какие-либо переводы самостоятельно; если вы их не используете, то никто другой ваш мод тоже не сможет перевести.
в Languages/<Язык_мода>/Keyed/FileName.xml записываются сообщения, которые будут появляться в различных ситуациях.
Например, как в моде DubsHygiene, у которого в Languages/English/Keyed/DubsHygiene.xml написано:
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<dbh.Things>Things:</dbh.Things>
<dbh.Terrain>Terrain:</dbh.Terrain>
<dbh.Environment>Environment:</dbh.Environment>
<dbh.Pollution>Pollution</dbh.Pollution>
<dbh.Sewagecontamination>Sewage contamination</dbh.Sewagecontamination>
<!--Construction-->
<DesignatorRemovePlumbing>Remove pipes</DesignatorRemovePlumbing>
<DesignatorRemovePlumbingDesc>Designate sections of a pipe type for deconstruction.</DesignatorRemovePlumbingDesc>
<RemoveSewage>Remove sewage</RemoveSewage>
<RemoveSewageDesc>Remove sewage from the ground and place it into barrels.</RemoveSewageDesc>
<RemovePlumbing>Remove plumbing</RemovePlumbing>
<RemoveAirCon>Remove air-con</RemoveAirCon>
<!--Warnings-->
<DBH.requiresSaunaRoom>Room is too large to heat!\nMaximum of 50 cells per heater\nAdd more sauna heaters or shrink the room</DBH.requiresSaunaRoom>
<DBH.HeatedPool>Pool is heated</DBH.HeatedPool>
<DBH.CantUsePool>Cannot use pool now:</DBH.CantUsePool>
<DBH.PoolRaining>Raining</DBH.PoolRaining>
<DBH.PoolTooCold>Too cold {0}</DBH.PoolTooCold>
<DBHPrisonWater>Prison needs water source</DBHPrisonWater>
</LanguageData>
а в русском переводе всё также, но переведёно.
Strings
Файлы Strings используются для создания списков слов для RulePackDefs, которые будут использоваться при генерации имён и предложений.
Patches
Способ безопасной и совместимой модификации Defs из оригинальной игры, DLC или даже других модов.
Это можно использовать для изменения баланса или настройки стандартного контента, удаления или отключения нежелательного контента или внесения дополнительных изменений или контента для лучшей совместимости с модами.
Полная справка об этом разделе в Руководстве по эксплуатации патчей[rimworldwiki.com]
Примечание:
Вся страница на английском языке, поэтому советуется использовать расширение для браузера Linguist[chromewebstore.google.com]
Это можно использовать для изменения баланса или настройки стандартного контента, удаления или отключения нежелательного контента или внесения дополнительных изменений или контента для лучшей совместимости с модами.
Полная справка об этом разделе в Руководстве по эксплуатации патчей[rimworldwiki.com]
Примечание:
Вся страница на английском языке, поэтому советуется использовать расширение для браузера Linguist[chromewebstore.google.com]
Sounds
Папка используется для хранения пользовательских звуковых файлов для модов.
Обычно рекомендуется использовать Ogg-файлы, но Unity также может распознавать и использовать файлы MP3 и WAV.
Как и текстуры, звуковые файлы в RimWorld идентифицируются по именам путей.
Если мод содержит звуковой файл с тем же путем и именем, что и другой мод или даже ванильная игра или DLC, то последний загруженный файл в вашем списке модов перезапишет остальные.
Иногда это делается намеренно модами, которые хотят изменить звук ванили или другого мода.
Обычно рекомендуется использовать Ogg-файлы, но Unity также может распознавать и использовать файлы MP3 и WAV.
Как и текстуры, звуковые файлы в RimWorld идентифицируются по именам путей.
Если мод содержит звуковой файл с тем же путем и именем, что и другой мод или даже ванильная игра или DLC, то последний загруженный файл в вашем списке модов перезапишет остальные.
Иногда это делается намеренно модами, которые хотят изменить звук ванили или другого мода.
Textures
Папка используется для хранения пользовательских файлов текстур для модов. Обычно рекомендуется использовать PNG-файлы.
как и звуки, файлы текстур в RimWorld идентифицируются по именам путей.
Если мод содержит файл текстуры с тем же путем и именем, что и у другого мода или даже у ванильной игры или DLC, то последний загруженный в вашем списке модов перезапишет остальные.
Иногда это делается намеренно модами ретекстурирования, которые хотят изменить текстуры из ванильной игры или других модов.
как и звуки, файлы текстур в RimWorld идентифицируются по именам путей.
Если мод содержит файл текстуры с тем же путем и именем, что и у другого мода или даже у ванильной игры или DLC, то последний загруженный в вашем списке модов перезапишет остальные.
Иногда это делается намеренно модами ретекстурирования, которые хотят изменить текстуры из ванильной игры или других модов.
Пример
В Defs/ThingDefs_Buildings/ThingDefs.xml:
Все классы уникальных свойств можно посмотреть здесь[github.com]
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<ThingDefs ParentName="BuildingBase">
<defName>ID_NAME</defName>
<label>NAME</label>
<description>DESCRIPTION</description>
<graphicData>
<texPath>PATH/TO/.PNG</texPath>
<graphicClass>GraphicSingle</graphicClass>
</graphicData>
<blockWind>true / false</blockWind>
<castEdgeShadows>true / false</castEdgeShadows>
<thingCategories>
<li>Category</li>
</thingCategories>
<statBases>
<MaxHitPoints> Прочность </MaxHitPoints>
<WorkToBuild> Время создания </WorkToBuild>
<Mass> Масса </Mass>
<Flammability> Воспламеняемость </Flammability>d
<Beauty> Красота </Beauty>
</statBases>
<costList>
<Название_предмета>Кол-во</Название_предмета>
</costList>
<constructionSkillPrerequisite> Уровень строительства </constructionSkillPrerequisite>
<designationCategory>Категория предмета</designationCategory>
<comps>
<li Class="CompProperties_?">
</li>
</comps>
</ThingDefs>
</Defs>
Все классы уникальных свойств можно посмотреть здесь[github.com]