RimWorld

RimWorld

Not enough ratings
Как сделать мод на оружие [Rimworld]
By [AKASD]MR HEIZENBURGER
В этом небольшом гайде вы узнаете как сделать мод на оружие дальнего и ближнего боя в римворлд не имея опыта в программировании. 100% Актуально на всех версиях игры начиная с 1.3.
   
Award
Favorite
Favorited
Unfavorite
Строение любого мода
В данном руководстве вы узнаете как делать ту штуку, которой нигде нет, но вам очень хочется ее увидеть.
Начнем со структуры мода.
Любой мод делится на 3 или более папки:
  • About
  • Defs
  • Textures
В папке About хранится файл по которому игра 'узнает' ваш мод, а так же превью мода разрешением 640*360

В папке Defs хранятся скрипты оружия/технологий итд

В папке Textures хранятся все текстуры вашего мода.
Создание файла About.xml
Создайте папку с любым названием и создайте в ней еще 3 папки с именами выше.
В папке About создайте текстовый файл и поменяйте его название и формат на About.xml

Вставьте в файл следующий код:
<?xml version="1.0" encoding="utf-8"?> <ModMetaData> <name>Имя вашего мода, оно отображается в меню моддинга в игре</name> <author>Ваш ник/псевдоним</author> <description>Описание мода, отображается так же в меню моддинга</description> <packageId>Вашник.Названиемода</packageId> <supportedVersions> <li>1.6</li> </supportedVersions> <loadAfter> <li>Ludeon.RimWorld</li> </loadAfter> </ModMetaData>

Поменяйте строки name author description и packageId.
В строке packageId НЕ должно быть пробелов!

supportedVersions - поддерживаемые версии то есть 1.1 1.2 1.4 итд
loadAfter - после чего ваш мод будет загружен (В данном случае после официального контента rimword, лучше не менять)

Для добавления превью просто добавьте в папку about желаемую картинку разрешением 640*360 с названием Preview.png (Необязательно)

Если вы не создали папку с модом в папке модов римворлда, то перенесите ее туда.
После создания данного файла ваш мод уже будет отображаться в меню модов.

Папка Defs
В папке Defs располагаются скрипты вашего мода, рассмотрим оружие ближнего и дальнего боя.
Создайте файл с вашим названием и расширением xml, например gun.xml
В него вставьте следующий скрипт -

Для ближнего боя:

<?xml version="1.0" encoding="utf-8"?> <Defs> <ThingDef ParentName="BaseMeleeWeapon_Sharp_Quality"> <!--Эта строка определяет будет ваше оружие острым или тупым(Sharp или Blunt) Quality - имеет ли оружие качество после крафта (нормально,шедевр,плохо итд)--> <defName>Название оружия для консоли и последующих xml(БЕЗ пробелов)</defName> <label>Отображаемое название</label> <description>Описание</description> <graphicData> <texPath>Название текстуры в папке textures формат png (пример - gun.png)</texPath> <graphicClass>Graphic_Single</graphicClass> </graphicData> <costList> <Steel>80</Steel> <Plasteel>100</Plasteel> <ComponentIndustrial>6</ComponentIndustrial> <!--Тут пишем ресурсы,требуемые для создания оружия. Примеры:ComponentIndustrial - компонент, ComponentSpacer - продвинутый компонент, wood - дерево--> </costList> <statBases> <WorkToMake>12000</WorkToMake> <!--Сколько работы требуется для создания--> <Mass>3</Mass> <!--Масса--> <DeteriorationRate>0</DeteriorationRate> <!--Как быстро оружие гниет 1- обычная скорость,0 - не гниет--> <AccuracyTouch>0.95</AccuracyTouch> <!--Точность вашего оружия--> <AccuracyShort>0.85</AccuracyShort> <AccuracyMedium>0.75</AccuracyMedium> <AccuracyLong>0.65</AccuracyLong> <!--По идее остальную точность можно не менять, оно ни на что не влияет --> <RangedWeapon_Cooldown>1.5</RangedWeapon_Cooldown> <!--В теории не влияет ни на что (без этих строк у меня не работало)--> </statBases> <equippedStatOffsets> <MoveSpeed>0.3</MoveSpeed> <!--Модификаторы при ношении MoveSpeed - скорость--> </equippedStatOffsets> <weaponTags> <li>Archotech</li> <!--Теги оружия Industrial, Medieval, Spacer итд. Для игрока не важно--> </weaponTags> <recipeMaker> <skillRequirements> <Crafting>10</Crafting> <!--Нужный уровень навыка крафта--> </skillRequirements> <researchPrerequisite>ArchotechWeapons</researchPrerequisite> <!--(НЕОБЯЗАТЕЛЬНАЯ СТРОКА)БЕЗ СТРОКИ ОРУЖИЕ ДОСТУПНО СРАЗУ. Необходимое исследование для крафта, снизу будет сказано как сделать кастомное. Ванильные исследования можно найти в дефах ядра римворлда.--> </recipeMaker> <!--Снизу пойдут типы ударов (рукояткой,лезвием итд)--> <tools> <li> <label>Название в игре</label> <capacities> <li>Cut</li> <!--Тип урона Cut, Stab, Blunt--> </capacities> <power>26</power> <!--Базовый урон при качестве нормально--> <cooldownTime>1.5</cooldownTime> <!--Время отката удара в секундах--> <armorPenetration>0.75</armorPenetration> <!--Пробивание брони--> </li> </tools> <tools> <li> <label>point</label> <capacities> <li>Stab</li> </capacities> <power>22</power> <cooldownTime>1.4</cooldownTime> <armorPenetration>0.9</armorPenetration> </li> </tools> </ThingDef> </Defs>[/i][/u][/b][/u]
ЕСЛИ ЧТО ТО НЕ РАБОТАЕТ ПОПРОБУЙТЕ УДАЛИТЬ КОММЕНТАРИИ - <!--комментарий-->
ИЛИ ЗАДАТЬ ВОПРОС МНЕ
Defs для дальнего боя
Если что то в коде не будет работать попробуйте удалить комментарии, так как некоторые из них могут читаться игрой как код - < !-- -- >
<?xml version="1.0" encoding="utf-8" ?> <Defs> <ThingDef ParentName="BaseHumanMakeableGun"> <defName>Название для консоли(без пробелов)</defName> <label>Название в игре</label> <description>Описание</description> <graphicData> <texPath>Путь до картинки(формата png, просто название текстуры если она лежит в папке textures)</texPath> <graphicClass>Graphic_Single</graphicClass> </graphicData> <soundInteract>Interact_Rifle</soundInteract> < !--Звук при поднятии, можно найти в файлах игры(этот ванильный)-- > <generateCommonality>0.3</generateCommonality> < !--распространенность оружия-- > <weaponClasses> <li>RangedHeavy</li> </weaponClasses> < !--Класс оружия(можно пропустить)-- > <weaponTags Inherit="False"> <li>HeavyGrenade</li> </weaponTags> < !--Тэг оружия(можно пропустить)-- > <tradeTags> <li>WeaponRanged</li> </tradeTags> < !--Трейд тэг оружия(можно пропустить)-- > <statBases> <WorkToMake>30000</WorkToMake> <Mass>3.4</Mass> < !--Тут все так же как в ближнем-- > <RangedWeapon_Cooldown>4</RangedWeapon_Cooldown> </statBases> <costList> <Steel>75</Steel> <ComponentIndustrial>8</ComponentIndustrial> </costList> < !--Из чего оружие делается(список примеров был в ближнем)-- > <recipeMaker> <skillRequirements> <Crafting>5</Crafting> </skillRequirements> < !--Какой навык ремесла нужен для создания-- > <researchPrerequisite>MicroelectronicsBasics</researchPrerequisite> < !--Какое исследование требуется для создания (нужен defname исследования)-- > <displayPriority>471</displayPriority> </recipeMaker> < !--Влияет на порядок отображения в исследовании-- > <verbs> <li> <verbClass>Verb_Shoot</verbClass> <hasStandardCommand>true</hasStandardCommand> <defaultProjectile>Defname вашего снаряда(ниже)</defaultProjectile> <warmupTime>3</warmupTime> < !--Влияет на скорость изготовки оружия(в секундах)-- > <range>30</range> < !--Дальность оружия-- > <forcedMissRadius>1</forcedMissRadius> < !-ЭТА СТРОКА ТОЛЬКО ДЛЯ ГРАНАТОМЕТОВ ИТД(ЕЕ НУЖНО УДАЛИТЬ ДЛЯ ДРУГИХ ОРУЖИЙ)-- > <burstShotCount>1</burstShotCount> < !--Сколько снарядов ваше оружие выстрелит за раз-- > <ticksBetweenBurstShots>40</ticksBetweenBurstShots> < !--ЭТА СТРОКА ТОЛЬКО ЕСЛИ BURSTSHOT БОЛЬШЕ 1 (УДАЛИТЬ ЕСЛИ 1)-- > <soundCast>Shot_IncendiaryLauncher</soundCast> <soundCastTail>GunTail_Medium</soundCastTail> < !--Звуки вашего оружия, так же можно найти в файлах игры пример - ChargeLance_Fire - энергокопье-- > <muzzleFlashScale>14</muzzleFlashScale> < !--Размер дульной вспышки при выстреле(косметика)-- > <targetParams> <canTargetLocations>true</canTargetLocations> < !--Может ли нацеливаться на землю, как граната-- > </targetParams> </li> </verbs> <tools> <li> <label>stock</label> <capacities> <li>Blunt</li> </capacities> <power>9</power> <cooldownTime>2</cooldownTime> </li> < !-Тип атаки вашего оружия в ближнем бою(sharp/blunt), урон, время кулдауна-- > <li> <label>barrel</label> <capacities> <li>Blunt</li> <li>Poke</li> </capacities> <power>9</power> <cooldownTime>2</cooldownTime> </li> < !-Тип атаки вашего оружия в ближнем бою(sharp/blunt), урон, время кулдауна-- > </tools> </ThingDef> < !-Снизу - описание вашей пульки (это все один файл)-- > </ThingDef> <ThingDef ParentName="BaseBullet"> <defName>ДЕФНЕЙМ ПУЛИ ЕГО ВСТАВЛЯЕТЕ В СТРОКУ ОРУЖИЯ(без пробелов)</defName> <label>Название в игре</label> <graphicData> <texPath>Путь к текстуре</texPath> <graphicClass>Graphic_Single</graphicClass> <shaderType>TransparentPostLight</shaderType> <drawSize>0.5</drawSize> < !-размер прорисовки пули-- > </graphicData> <projectile> <damageDef>Bullet</damageDef> < !-Тип урона, еще примеры - Bomb и Fire -- > <damageAmountBase>30</damageAmountBase> < !-Базовый урон при качестве normal-- > <armorPenetrationBase>0.7</armorPenetrationBase> < !-Как хорошо ваше оружие пробивает броню-- > <stoppingPower>1</stoppingPower> < !-Останавливающая способность(замедление уроном)-- > <speed>100</speed> < !-Скорость вашего снаряда-- > </projectile> </ThingDef> </Defs>
Отдельный пример скрипта пули для гранатомета или ракетницы (всего взрывающегося):
<ThingDef ParentName="BaseBullet"> <defName>Дефнейм</defName> <label>название</label> <graphicData> <texPath>путь к текстуре(просто название текстуры если она лежит в папке textures)</texPath> <graphicClass>Graphic_Single</graphicClass> <shaderType>TransparentPostLight</shaderType> <color>(140,135,156)</color> </graphicData> <thingClass>Projectile_Explosive</thingClass> <projectile> <speed>45</speed> <damageDef>Bomb</damageDef> <explosionRadius>2</explosionRadius> < !-Радиус взрыва-- > <explosionRadiusDisplayPadding>2</explosionRadiusDisplayPadding> <ai_IsIncendiary>true</ai_IsIncendiary> < !-является ли поджигающим(Для ии)-- > <arcHeightFactor>0.2</arcHeightFactor> <shadowSize>0.6</shadowSize> <screenShakeFactor>0.6</screenShakeFactor> < !-Тряска экрана-- > </projectile> </ThingDef> </Defs>
Если что то в коде не будет работать попробуйте удалить комментарии (< !-- -- >) , так как некоторые из них могут читаться игрой как код.
Research Def
Этот раздел только для тех кто делает кастомные изучения.
Создайте еще 1 файл xml и вставьте следующий код:
<Defs> <ResearchProjectDef> <defName>ДЕФНЕЙМ НУЖНО ВСТАВИТЬ В ОРУЖИЕ(без пробелов)</defName> <label>Название в игре</label> <description>Описание в игре</description> <baseCost>6000</baseCost> <!--Сколько нужно очков изучения--> <techLevel>Archotech</techLevel> <!--Medieval Industrial Spacer итд--> <prerequisites> <li>MultiAnalyzer</li> <!--После какой технологии стоит ваша--> </prerequisites> <researchViewX>6.00</researchViewX> <researchViewY>4.00</researchViewY> <!--Графическое расположение во вкладке с изучениями--> </ResearchProjectDef> </Defs>
На этом со скриптами все, осталось сделать текстуры.
Textures
Пришло время для последней папки вашего мода.
Текстуры оружия обычно разрешением 64*64 пикселя, можно больше, но без включенной функции в настройках вашу текстуру игра 'сожмет' под 64*64.
Для создания текстур я использую фотошоп, но на худой конец подойдет и paint.
Нет определенного алгоритма чтобы создать идеальную текстуру, но вот несколько советов из официальных и наполовину официальных источников:
  • Детали на текстуре размером меньше 3 пикселей, если контраст маленький, лучше не создавать т.к. они будут сливаться с окружением

  • Почти у всех ванильных текстур есть обводка в 1 слой черных пикселей, чтобы текстуру было легче отличить.

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

https://images.steamusercontent.com/ugc/12961890523099339885/A9F20B4B8075A098442F6373F68C0365339FEFA9/?imw=256&&ima=fit&impolicy=Letterbox&imcolor=%23000000&letterbox=false
гранатомет
https://images.steamusercontent.com/ugc/11508146030821693605/267DBF35DDC5D4A3F7060D6A87DF0002CA5FE99A/?imw=256&&ima=fit&impolicy=Letterbox&imcolor=%23000000&letterbox=false
двуручный меч
https://images.steamusercontent.com/ugc/17901892250261213176/CB823B2B8E3F68E289BC693C630882907B665EC7/?imw=256&&ima=fit&impolicy=Letterbox&imcolor=%23000000&letterbox=false
автоматическая винтовка
https://images.steamusercontent.com/ugc/15487149837410009669/F7A93B25D9CE5E8A476DBA9617CAD204472AF74F/?imw=256&&ima=fit&impolicy=Letterbox&imcolor=%23000000&letterbox=false
снайперская винтовка

Больше текстур вы можете найти в интернете, их официально выкладывал разработчик (В файлах игры их нет)
Так же дополнительная информация по модам скриптам итд есть на сайте римворлда (ищите rimworld modding) там информация на английском языке
Заключение
САМОЕ ГЛАВНОЕ!!! Если вы хотите сделать какой либо мод, не требующий создания c# скриптов, но не знаете как создать его, то просто найдите похожий мод в мастерской и поменяйте его Defs и текстуры под себя. Моды из мастерской стима хранятся в папке steam/steamapps/worksop/content/294100

Если вы хотите выложить ваш мод в мастерскую, то во вкладке моддинга у вашего мода будет вкладка расширенные настройки, через которую ваш мод будет выложен в стим (только офф версия игры)


Это полностью оригинальное руководство, написанное мной. Я не самый опытный мододел, но сделал, а главное разобрался как делать моды на самое разнообразное оружие. Если у вас остались вопросы, задавайте их ниже.
Возможно будут еще гайды на кастомную одежду (тут нужно будет рисовать очень много текстур), растения и многое другое.