Добро пожаловать в сообщество по моддингу игр, в основном, от Paradox Interactive, в частности, игры Hearts of Iron 4.
Мы приглашаем всех энтузиастов-мододелов и любителей поиграть в модификации в один общий Союз! Так как это залог эффективного и развивающегося моддинга!
Вместе всегда проще решить проблемы, связанные с моддингом, поделиться своими идеями, знаниями, найти новых коллег для улучшения и создания проектов, к тому же осведомить поклонников игр о свежих наработках!
1. Обучать моддингу совершенно всех, независимо от того, каким уровнем знаний они обладают. 2. Сделать знания по моддингу более доступными, а не закрыться в высоком замке и не делиться ими. 3. Объединить всех мододелов под одной целью, делать годные моды, а не сраться из-за того, у кого больше подписчиков, код спиж*нный и член длиннее. 4. Быть открытой доступной площадкой для рекламы всех проектов по моддингу (предложка ждёт Ваших проектов). 5. Помочь игрокам легко и просто найти интересные, перспективные модификации и их создателей.
Гайды по созданию модов для игры Hearts of Iron IV
Часть I. Создание ивента (события).
Предисловие. Итак, прочитав тему вопросы по моддингу, я выяснил, что множество начинающих мододелов совершенно не имеют понятия о создании ивентов (внутриигрового события). В этой части гайда я постараюсь разъяснить сей процесс.
Начало. Для начала создаем мод (я думаю, все знают как это делается), затем заходим в папку мода (C:\users\user\Documents\Paradox Interactive\mod\%имя мода%) и создаем папку events в корне каталога. Затем создаем пустой текстовый файл с названием, в котором первое слово это тег страны события маленькими буквами, затем нижнее подчеркивание, затем название вашей страны. Пример: ger_Germany, sov_SovietUnion.
Заходим в созданный нами файл. Добавляем в самом начале переменную, отвечающую за обнаружение игрой этого файла в дальнейшем:
Затем копируем и вставляем туда структуру ивента:
Прописываем номер, название, описание ивента:
Теперь добавляем картинку события. Открываем папку с игрой (место, куда вы ее установили), заходим в папку gfx\event_pictures и выбираем нужную вам картинку с помощью Paint.net. Затем копируем ее название, открываем файла ивента и записываем в строку picture такой код:
Все предельно просто. Осталось только добавит условие срабатывания события. Делается это через команду trigger:
Триггер вставляется перед опцией. Вот так выглядит весь код:
Hearts of iron 4 создание мода
Переходим во вкладку «Модификации»
Затем нажимаем на кнопку «Инструменты модификаций» Нажимаем на кнопку «Создать модификацию»
Называем наш мод Вписываем версию мода И создаем папку (называют еще каталог)
После этого нажимаем на кнопку «Создать Мод»
Cоздаем файл history В history создаем две папки: countries и states
Теперь идем в оригинальную игру и ищем папку history Теперь все, что есть в states копируем в нашу, модовую папку states
Этот файл мы будем называть «Файл страны»
Открываем наш файл Файл страны через Atom или Notepad++ Копируем все это в наш файл
Теперь создаем папку common В папке «common» создаем папку country_tags и countries«
В нашу папку coutry_tags копируем из оригинальной игры файл country_tags\00_countries.txt
Открываем 00_countries.txt и идем в вниз Пишем «Тег страны» = «countries/»Название страны».txt» Пример GEG = «countries/Gerger.txt»
Теперь открываем папку «countries« Создаем txt файл «Название страны» Пример «Germen»
RGB Это цвет нашей Страны Если мы напишем color = rgb < 0 0 0 ]то это черный Если мы напишем color = rgb то это Ярко-Зеленый Также можно использовать спец. сайты Adobe Color [color.adobe.com]
Теперь идем в оригинальную игру по пути common/countries/ и копируем colors.txt в наш countries
Открываем, идем в самый вниз и пишем
Идем в по пути \history\states и видим уже заранее заготовленные Области
Когда определились с id, пишем его в поисковике и находим Когда нашли открываем его А теперь поподробнее
Нам нужно заменить только GER (или другой тег) на ваш
Теперь идем снова в \history\countries в Файл страны Изменяем capital = «Id области» Пример capital = 5 Это и будет ваша столица
Создаем папку localisation
Копируем файл countries_l_russian.yml из localisation оригинальной игры в нашу папку
Открываем Идем в конец Пишем
В Папке мода Создаем папку «gfx»
В Папке «gfx» Создаем две папки: «flags» и «leaders»
В Папке «flags» Создаем две папки: «medium» и «small»
Мы будем Использовать «paint.net» (Это не ссылка) Нажимаем «Изображение» Потом «Изменить Размер. « Откл. «Сохранять Пропоции» Нажимаем ок
Вставляем Картинку Нашего Флага и Нажимаем «Увеличить Плотно»
Большой Флаг: Ширина: 82 Высота: 52 Сохраняем Так: /gfx/flags
Средний Флаг: Ширина: 41 Высота: 26 Сохраняем Так: /gfx/flags/medium
Создаем В Папке «leaders» Папку «Тег Страны» (GEG,ВYВ)
Ищем фото Нашего Лидера Ну, например Путина/
Потрет нашего лидера должен сохранен быть так Ширина: 156 Высота: 210 В формате: DDS Параметры: A8R8G8B8 Сохраняем Так: «Каталог Мода»/gfx/leaders/»Тег Страны»/»Название нашего Лидера» (Например:Mega_Lider)
Идем в Файл страны Ищем Такой Код Изменяйте то, что вам нужно изменить
Создаем в Папке «common» Папку «national_focus» и создаем Файл «Название нашей страны»
Это будет Фокусы Страны
Копируем из оригинальной игры файл \localisation\focus_l_russian.yml в нашу папку localisation
Открываем и идем в вниз Пишем
Создаем новый фокус по координатам x = 10 y = 1 (а это вы сами) И после иконки добавляем mutually_exclusive = Например Focus_Number_2
Идем к фокусу который мы хотим с которым мы хотим прописать Исключение И после иконки пишем mutually_exclusive = Например Focus_Number_3 Должно получится вот так
Так же более подробно об Фокусах вы можете почитать на Вики [hoi4.paradoxwikis.com] (Англ.)
Если вам надоело все это. то эта программа для вас
Открываем программу
Видим это
Ищем Настройки И даем ему путь к игровым файлам
Потом Нажимаем на «Деревья Фокусов» И создаем (ПКМ) «Новый Элемент» Далее два клика по Цветку
Видим это
Нажмите на ПКМ что-бы Создать Фокус
Уникальное имя будет будет использована в файлах локализации, аля перевод
Изображения (СОХРАНЯЙТЕ! НЕ НАЖИМАЙТЕ НА КРЕСТИК)
Если вы в Изображениях нажимаете на «закрыть», то
В папке «gfx» Создайте папку «loadingscreens»
В этой главе мы научимся добавлять в игру музыку и радио для них
Также нам надо придумать название для нашего радио. И для примера мы дадим название «prosto_radio«
Мы снова идем в наш мод по пути \interface\ и создаем файл music_station_название_радио.gui (music_station_prosto_radio.gui) С кодировкой UTF-8 без BOM
Вставляйте свое название за место prosto_radio и сохраняйте
Все должно выглядеть так, кроме названия
Создаем папки по такому пути \gfx\interface\topbar\musicplayer\ Запускаем paint net либо что-то другое, создаем файл 304×120 и копируем картинку которая представлена внизу Может быть конечно не точно вырезано, но да ладно
В первую рамку мы вставляем картинку, когда радио не включено Во вторую наоборот, когда включено радио
Делаем и сохраняем нашу картинку как dds по типу название_album_art.dds (prosto_album_art.dds) Открываем musicplayer.gfx, идем вниз и пишим
Идем в music_station_название_радио.gui и находим строчку
После работы открываем название_soundtrack.txt Копируем
Также есть модификаторы
Это музыка может проигрыватся только если вы играете за Советский союз
Пример: prosto_radio_TITLE:0 «Просто радио»
Пример: Tachanka:0 «Тачанка»
Копируем не в самый конец и изучаем
Там много значений пусты, поэтому поставляйте как вам хочется.
Идеология практически готова (кроме иконки/локализаций), надо только прописать в файле стране лидера/соотношение и сделать флаг
Будем делать все эти вещи в файле СССР (можно конечно в другом файле), поэтому копируем его
Ищем где определяются идеологии и изменяем
Создаем иконку по 66×68 Сохраняем по пути \gfx\interface\ideologies в формате dds с названием «идеология_group.dds»
Берем файл countrypoliticsview.gfx из ванили Идем в не совсем конец и пишем
Ну, первым делом идем по этому пути \history\states и спускаемся Мы видим, что последний «id области» это 762
Создаем новый файл по типу «Id + 1-«Название области»» Например 763-Kaliningrad
Открываем и копируем это
Заменяйте ТЕГ на ваш Тег
Теперь нам нужно заполнить provinces регионами Но сначала надо определится откуда мы будем вытаскивать регионы
Так вот, по уроку мы будем вытаскивать регионы из 5 id области (ведь у нас Калиниград) Открываем файл Смотрим какие регионы мы хотим взять у других областей в нашу ID регионов [hoi4.paradoxwikis.com] Удаляем в ориг. файле регионе и перетаскиваем в нашу (Для создания Калиниграда нам нужны id регионов: 281 348 395 3384 6332 11265) Границы немного неровные из-за самих регионов
Теперь у вас появится кнопка «Hudge»
Нажимаем Видим это Теперь надо нажать на «Buildings» А там нажимаем на «Validate All States», либо на «Find Eroor» и делаем дело (если знаете как) Нажимаем на Save Идем по \Documents\Paradox Interactive\Hearts of Iron IV\map Копируем buildings.txt Идем в наш Каталог Создаем папку «map»
И копируем туда buildings.txt
Копируем \map\supplyareas в наш map
Ищем к какому стратег. региону мы хотим присоединить Например 1-SupplyArea.txt Добавляем наш id области Вот так
Так же надо эту область добавить в strategicregions (а теперь вы тут сами) Подробнее Вики (Англ.) [hoi4.paradoxwikis.com]
В этой главе мы научимся создавать ветки технологий
На примере мы создадим ветвь улучшения скорости мото дивизий
Создаем папку \interface\ и копируем countrytechtreeview.gui Что этот за файл? Это весь интерфейс технологий.
Открываем infantry.txt, и если мы хотим создать новую ветвь, то пишем следующее. Если вы хотите продолжить ветвь, то идите в подглаву «Продолжение ветки«
Идем теперь в countrytechtreeview.gui Ищем следующее
Крутим вниз пока не обнаруживаем это
Это начало ветви. Например вот этот именно код определяет начало ветви «помогательного вооружения»
Пишем после всех «gridboxtype» следующее:
Копируем из папки interface файл Technologies.gfx в нашу папку Сохраняем картинку в \gfx\interface\technologies
Открываем Technologies.gfx Идем в самый конец
А вот сама картинка исследования
Этот код говорит нам, что исследование improving_logistics приведет нас к возможности исследования improving_logistics2
После структуры improving_logistics пишем
У нас появилась новое исследование, но нет иконки. Так-что вот вам иконка, идите и добавляйте её с помощью верхней подглавы.
Сначала надо запихнуть саму картинку в вашу папку с модом (picter.png)
После тегов вы пишите picture=»Название вашей картинки.png»
Решение 1: Лишний символ, надо удалить его
Решение 2: Поменять кодировку на UTF-8
Проблема: Мод в лаунчере виден и включен, но при запуске игры не работает мод
«Скорее всего он изначально когда создавал мод кинул такую ссылку и при этом он не воспринимал ее, и поэтому он как бы видел что мод есть но не запускал его, так как ссылку он не мог считать. Я просто то что перед /mod все удалил и все заработало.»
Решение проблемы от @Serguliu
(Предлагайте свои ошибки и пути их решения)
Моддинг Hearts of Iron IV (День Победы IV)
Информационные темы по Hearts of Iron IV (День Победы IV):
Моддинг в Hearts of Iron IV
Когда мы только начинали [разработку], мы решили сделать HoI IV самой модабельной игрой из всех наших. Это означало, что мы не должны были жёстко программировать определённые вещи (в HoI III было много жёстко закодированной логики и ссылок на определённые государства). В HoI IV все эти вещи запрограммированы «мягко», то есть являются частью скриптового сценария, что делает HoI IV гораздо лучшей платформой для крутых модов. Мы решили также передать игрокам инструментарий, который мы используем (подробнее ниже) и хотя он дается «как есть» и неотполирован по сравнению с самой игрой, он очень полезен. Игра также улучшена, она даёт вам знать, когда вы совершали ошибки и всё, что может пойти не так с логами и т.п.
Инструменты и начало работы Начинать создание мода теперь гораздо проще, чем когда-либо! С помощью лаунчера инструментария мододела вы можете создать «пустой» мод без хлопот и даже без запуска самой игры.
Затем нужно начать игру с флагом «отладка». Игра запустится в моддерском режиме, который добавляет дополнительные проверки работоспособности и добавляет удобные инструменты для модификации игры. Вот например в игре инструмент «Nudger», который обеспечивает простой интерфейс для изменения свойств карты.
Здесь я придал удивительный вид Эстергётланду, передав ему несколько провинций Смоланда и откорректировав позиции построек. Инструмент «Nudger» будет проверять работоспособность сделанных изменений и сохранять их в файлы мода в несколько кликов мыши. Эти файлы, конечно, может читать и человек и их можно легко редактировать с помощью вашего любимого текстового редактора для написания более продвинутых скриптов, большинство файлов (например установки исторических состояний) также могут быть открыты с помощью внешней программы в Nudger, так что вам даже не нужно будет их искать в файловой системе.
Мы постоянно пытаемся сделать более удобным наш язык скриптов. Поэтому мы стараемся брать хорошие практики из других наших игр и интегрировать их во все наши тайтлы. Одним из поздних новшеств, которое мы портировали [на HoI IV] были скриптованные эффекты и триггеры.
Например, вы можете сделать одну опцию ивента для соседей Германии, с которыми они не находятся в одном альянсе, и одну его опцию для всего остального мира. Такая опция часто может понадобиться в ваших ивентах и все эти опции должны иметь следующий триггер:
any_neighbor_country = < tag = GER >
is_neighbor_not_in_german_faction = < any_neighbor_country = < tag = GER >
На него можно затем будет ссылаться в других опциях ивента как на однострочный триггер (is_neighbor_not_in_german_faction = yes) вместо того, чтобы использовать несколько строк как то требовалось ранее.
Цели ивента позволяют легко ссылаться на различные провинции и страны в тексте ивента и активировать эффекты на нужные цели без необходимости создавать огромное количество лишних ивентов, необходимых для областей действия ивента и для отслеживания различных субъектов и мест. А если вы хотите быть действительно креативным вы можете объединить эти 2 скриптовые фичи и определить цели ивента, которые вы затем будете использовать внутри вашего скриптового триггера или эффекта, чтобы они действовали в качестве своего рода подпрограммы.
ИИ ИИ в HoI3 работал через Lua скрипты, но мы решили отказаться от этого в ХоИ4 по нескольким причинам (недостаточные знания lua сотрудниками компании и низкая производительность были самыми большими). ИИ несмотря на это очень легко модифицируется и обладает множеством скриптов, которые можно поменять. Я думаю следует немного подождать и поговорить об этом в специальном дневнике об AI, который я заставлю написать @SteelVolt до релиза. Для просмотра ссылки Зарегистрируйтесь
Hearts of iron 4 создание мода
Для начала нам нужен графический редактор. Вполне может подойти обычный Photoshop с расширением dds. Или же Paint.net.
Следовательно, нужна идея: какую карту готовитесь рисовать? Придумали, молодцы. Для примера я взял эту карту. Кто узнал, тот молодец.
После чего заходим в любой графический редактор и начинаем всё делать ручками, в моём случае я буду использовать GIMP.
Начинаем мы с общей формы карты — Land Input. Открываем в GIMP файл LandMap из \MapGen v2.2\Examples:
Что нужно знать про Land Input?
Эта карта из трех цветов указывает Мапгену, где море, озеро и земля. Размер этого изображения также определяет размер вашей карты, но не надейтесь, что Вы сможете создать карту любого размера, игра ограничена в этом вопросе (стандартный размер 5632 x 2048), поэтому используйте LandMap из \MapGen v2.2\Examples в качестве шаблона.
Вы можете нарисовать ее вручную, что мы и будем делать, и перетащить в программу или сгенерировать из карты высот (height map). В любом случае, придется создавать карту.
Нам нужны три цвета. Ниже указаны их коды.
Рисуете карандашом без сглаживания, пиксели при приближении должны выглядеть подобным образом:
Обязательно используйте подобные параметры! Если Force и Hardness будут не 100%, то цвет не будет соответствовать коду:
Правда, если вы слегка изменили цвет, программа может исправить это, но не злоупотребляйте этим. Однако, важно сохранить изображение в виде 24-битного растрового изображения (24-bit bitmap), прежде чем загружать его в пажилую Мапгену.
После того как нарисовали карту закидываем файл в Мапгену в разделе Land Input.
У HOI4 минимальный размер провинции 8 пикселей. Прога превращает все маленькие острова в провинцию, что может стать проблемой, если остров меньше 8 пикселей. Включение «check for small islands» будет проверять наличие этих островков. Если они найдены, карта будет отображаться с указанными островками, обведенными красным, чтобы вы могли ее исправить.
Ну вот, одна карта уже готова!
Создаем карту ландшафта — terrain input.
Карта местности указывает, где находятся различные зоны ландшафта на вашей карте (НЕ ПУТАТЬ с картой местности terrain map, которая определяет текстуры карты).
Генератор может автоматически создать такую карту, щелкнув «generate plains world». Вы можете нарисовать свою карту:
-Городская местность: #9B00FF
Файл создается по аналогичному принципу, как и Land Input, а также должен быть с 24-битным растровым изображением того же размера, что и прошлая карта.
Опыт показывает, что во избежании квадратных артефактов на прибрежных зонах, делаем их равнинами (это повлияет на генерацию карты высот):
Закидываем в Мапгену!
Следующий этап проще. Прога сама сгенерирует Province Size Input.
Карта Province Size Input определяет размер провинций суши (внезапно). Указывая цвет провинций от белого до черного цвета. Оттенки серого варьируется. Для провинций, сгенерированных на белых областях, будет задан максимальный размер, для областей на черных областях будет установлен минимальный размер, а между провинциями будет масштабироваться в зависимости от значения оттенков серого.
Морские и озерные провинции масштабируются по их прибрежному расстоянию, однако вы можете контролировать их размер в правом нижнем углу Мапгены.
Имеется два способа сгенерировать Province Size Input.
Mercator Distribution: имитирует форму глобуса, так что экваториальные провинции меньше, чем полярные. Отлично подходит по дефолту.
Uniform Distribution: провинции однородного размеры, подходящие для модов с маленькими картами (редкость). Малую карту технически сложно реализовать, не сломав саму игру.
Мы жмем Mercator Distribution.
Дальше определяем примерные регионы суши в Boundary Input
Границы указывают как провинциям и стейтам выровняться относительно этих границ.
Границы должны быть толщиной в один пиксель, непрерывными.
Эта карта не является обязательной (можете вообще пропустить этот момент, если Вам не нужны какие-то строгие границы), но если вы хотите добавить ее, убедитесь, что это 24-битное изображение и того же размера как и остальные карты.
Логично было перейти к ближней вкладке province map, но опыт показывает, что лучше сначала замутить карту рек.
Делаем карту рек — river map. Можно рисовать самому или автоматически сгенерировать.
Правда, очень важно соблюдать цвета рек. Реки всегда должны быть толщиной в 1 пиксель.
Зеленый пиксель — начало реки, красный — объединяет реки в одну, желтый — разделяет на две, голубые пиксели — определяют толщину реки на карте (но на этой карте все толщиной в пиксель).
Если вы сделали карту вручную, сначала загрузите ее в Мапген, а затем сохраните ее в проге. Это гарантирует, что ваше изображение будет в нужном формате для игры.
Случайные изгибы рек «River Random Wander». Если «Add to Existing Rivers» включено, предыдущая карта рек не будет перезаписана, и дополнительные реки будут добавлены к существующим.
И вот сейчас генерируем карту провинций — province map.
Карта провинции province map очень важна, она определяет все провинции в игре. Мапген также создает файл definitions.csv к этим провинциям.
В этом файле информация по:
В будущем пригодится.
К счастью, вам не нужно ее делать вручную. Нажмите «Generate» в левом нижнем углу, и карта провинции будет создана, используя ваши настройки и карты, определенные на предыдущих вкладках. Опция «Provinces Don’t Cross Rivers» станет доступной, если вы загрузите карту рек. Это заставит провинции выравниваться с реками, поэтому мы рисовали реки заранее.
Если у вас уже есть карта провинций, перетащите ее и файл definitions.csv в программу вместе. Из этих файлов будут также сгенерированы land map и terrain input map.
генерируем «Generate» дефолтные стейты (states) для нашей карты в State Output. Не забудьте сохранить файлы стейтов, нажав на «Save» (создаете новую папку и жмете «Select» и «Yes»), это пригодится в будущем.
Отображаемое изображение просто позволяет вам визуализировать сгенерированные стейты и нигде не используется в HOI4. Вывод этой вкладки представляет собой список текстовых файлов, каждый из которых определяет states.
Вы можете выбрать размер и форму стейтов (ползунками) и сгенерировать их случайным образом.
Дальше делаем карту высот — height map. Важный файл, который требует подбора адекватных параметров, которые являются уникальными в зависимости от карты.
В левом нижнем углу есть несколько ползунков для настройки алгоритма генерации:
Desert Smoothing: определяет, насколько плоскими являются пустыни.
Plains Roughness: крупномасштабные особенности равнин, насколько велики долины и холмы.
Plains Noise: мелкие черты равнин, насколько ухабистые равнины.
Hills Height: увеличение высоты холмов.
Mountain Height: увеличение высоты горы.
Mountain Noise: мелкие черты гор, насколько ухабистые горы.
После того, как вы выбрали свои настройки, нажмите «Generate», чтобы создать карту высот. «Sea Level Indicator» нарисует океан, так вы можете оценить свою береговую линию, но море не будет присутствовать при сохранении этой карты.
Рекомендуется оставить параметр включенным «Force Coast Align with Land Map», чтобы он вынуждал его создавать ту же береговую линию, настроить уровень моря и максимальную высоту вашей карты. Нажав «Update», вы внесете изменения в карту высот.
Потом создаете карту нормаль — World Normal.
На этом изображении закодирована поверхность карты, и оно используется в HOI4 для указания теней и бликов. Нормали основаны на карте высот, но есть несколько настроек, которые вы можете настроить.
Normal Smoothing: насколько резкими/размытыми являются тени/блики.
Gradient Limit: какая максимальная яркость/тень.
У карты Colour map есть нюансы.
В ванильной игре называется colormap_rgb_cityemissivemask_a.dds.
Его можно нарисовать самому (задача не из легких), поэтому просто генерируем.
Desert Moisture: изменяет вид желтых и сухих пустынь.
Forest Moisture: изменяет вид зеленых и пышных лесов/джунглей.
Потом открываем его в GIMP (или в другом графическом редакторе который имеет экспорт в виде dds).
И осталась последняя карта местности — Terrain map. К счастью, генерируется автоматически!
Эта карта указывает HOI4, какую текстуру использовать на карте.
Как и с реками, если вдруг вы сделали карту вручную, сначала загрузите ее в Мапген, а затем сохраните ее в проге. Это гарантирует, что ваше изображение будет в нужном формате для игры.
Кстати, Мапген может крашанутся при генерации этой карты, такое бывает. Просто попробуйте заново.
Осталось всё экспортировать!
Нужно вставить тот Colour Map в dds. формате, которые мы конвертировали. Назвать мод (не используйте кириллицу).
В общем, сейчас мы можем запустить эту карту на версии игры 1.5.4 без вылетов.
Обладателю стимовской версии это не является проблемой. Переходим на 1.5.4: