на главную
об игре

Hearts of Iron 4 - Моддинг

Интерфейс. Как это работает ?

Для начала надо бы знать пару нюансов:

  1. Полностью изменить или удалить все элементы интерфейса простому разработчику модификаций не получится, так как скрипты интерфейса привязаны к файлам движка игры. Доступ непосредственно к движку Клаузвиц имеют лишь разработчики игры, ну или прошаренные хакеры. Благо, вы можете спрятать ненужные вам элементы, делая их не видимыми, или менять их позицию.
  2. Любой интерфейс подразумевает за собой использование графических редакторов, например, Paint.net, Photoshop и т. д.

Основные файлы и принципы

Основные группы файлов по интерфейсу находятся:

  1. …\Hearts of Iron IV\interface (инициализация переменных .gfx и скрипты графических элементов .gui). Этими файлами описываем наши элементы интерфейса, их позицию, функцию, привязываем к расширению экрана и т. д. Открываются с обычным Notepad, Notepad++ и подобными.
Интерфейс Hearts of Iron. Как это работает?, изображение №1
Интерфейс Hearts of Iron. Как это работает?, изображение №1

2. …\Hearts of Iron IV\gfx\interface (текстуры в .dds формате). Здесь находятся все текстурки интерфейса игры. Именно их и надо редактировать с графическими редакторами.

Интерфейс Hearts of Iron. Как это работает?, изображение №2
Интерфейс Hearts of Iron. Как это работает?, изображение №2

Теперь мы можем редактировать, к примеру, окно выбора стран country_selection_bg.dds

Интерфейс Hearts of Iron. Как это работает?, изображение №3
Интерфейс Hearts of Iron. Как это работает?, изображение №3

Открываем этот файл. Рисуем, копируем, что хотим. Можете соблюдать местоположение всех элементов, как значки, текст и т. п., но это будет вас ограничивать в фантазии. Правда, не придётся играться с .gfx и .gui.

В общем, если кнопки, картинки и текст остается в том же положении и не мешает вам, хватает попросту сохранить файл в ваш мод.

…\Hearts of Iron IV\mod\gfx\interface\country_selection_bg.dds

С таким настройками:

8.8.8.8 ARGB 32 bpp цветовой код
8.8.8.8 ARGB 32 bpp цветовой код

Также стоит соблюдать Alpha канал. Эта функция отображает только ту часть рисунка, которая вам необходима

Интерфейс Hearts of Iron. Как это работает?, изображение №5
Интерфейс Hearts of Iron. Как это работает?, изображение №5
Интерфейс Hearts of Iron. Как это работает?, изображение №6
Интерфейс Hearts of Iron. Как это работает?, изображение №6

Что белое — то будет видно, что серое — то прозрачно, что черное — невидимое. Сохраняйте все файлы с альфа каналом (save as > .dds > Normal Map Setting).

Интерфейс Hearts of Iron. Как это работает?, изображение №7
Интерфейс Hearts of Iron. Как это работает?, изображение №7

Всё, у вас первая ваша текстура.

Оригинальный интерфейс

Вы неизбежно захотите своё с блэкджеком и куртизанками, поэтому учимся на примере того же country_selection_bg.dds менять позиции элементов. Для этого находим в каких файлах он прописан. Вы можете открыть все файлы с Notepad++ \Hearts of Iron IV\interface и пробить название текстурки в Find.

Интерфейс Hearts of Iron. Как это работает?, изображение №8
Интерфейс Hearts of Iron. Как это работает?, изображение №8
Интерфейс Hearts of Iron. Как это работает?, изображение №9
Интерфейс Hearts of Iron. Как это работает?, изображение №9

Как видим текстура выбора стран прописана в этих файлах.

Интерфейс Hearts of Iron. Как это работает?, изображение №10
Интерфейс Hearts of Iron. Как это работает?, изображение №10

Забираем их к себе в мод и открываем.

…\Hearts of Iron IV\mod\interface\

По сути, .gfx прописываются текстуры, которые используются в интерфейсе. Они обозначаются переменной, которую вы можете привязать к скрипту в файлах .gui.

Интерфейс Hearts of Iron. Как это работает?, изображение №11
Интерфейс Hearts of Iron. Как это работает?, изображение №11

Группа переменных спрайтов, имя переменной GFX_country_selection_bg, местонахождение самого графического файла gfx/interface/country_selection_bg.tga и эффект (допустим блеск, как у фокусов).

Когда вы хотите внедрить что-то новое, не поверху старых, совершенно новую картинку, она должна быть прописана здесь по такому же принципу.

Скрипты в файлах .gui уже интереснее.

Интерфейс Hearts of Iron. Как это работает?, изображение №12
Интерфейс Hearts of Iron. Как это работает?, изображение №12

Контейнер containerWindowType — это вся группа интерфейса, в нашем случае, это окно выбора стран. Видно по названию, gamesetup_interesting_countries_window.

Изучим весь фрагмент:

Спойлер

containerWindowType = { //группа окна
name ="gamesetup_interesting_countries_window"//название
size = { width=1225 height=717 } //резолюция
Orientation = center //привязка к окну, будет в центре
origo = center //привязка к координатам
clipping = no //без вырезанных частей
moveable = yes //можно ли двигать окно? Да.
instantTextBoxType = { //кусок текста
name = "title" //название
position = { x = 435 y = 12 } //позиция текста
textureFile = "" //текстура, ее нет, так как это текст
font = "hoi_24header" //шрифт, на котором написан текст
borderSize = {x = 0 y = 0} //рамка, ее нет
text = "FE_SELECT_COUNTRY" //вызов переменной из локализации, видимый текст
maxWidth = 340 //максимальная длина текста
maxHeight = 30 //максимальная высота
format = centre //текст по центру
}
background = { //дополнительные текстуры на верху основной
name = "single_player_country_bg"
quadTextureSprite ="GFX_country_selection_bg"
}
ButtonType = { //категория кнопки
name = "back_button" //кнопка обратно
position = { x = -158 y = -52 } //ее позиция
quadTextureSprite ="GFX_button_148x34" //ее текстурка
buttonText = "BACK" //ее текст
buttonFont = "hoi_18mbs" //ее шрифт
Orientation = "CENTER_DOWN" //ее привязка местоположения
clicksound = click_close //звук при нажатии
oversound = ui_menu_over //после нажатия
shortcut = "ESCAPE" //вызов скрипта при нажатии
}

Спойлер

containerWindowType = { //контейнер в контейнере (окно на окне)
name ="countries" //выбор стран
position = { x = 15 y = 45 }
size = { width = -15 height = 120}
gridboxType = { //сетка, функция для разного числа стран, допустим хотите поместить в мод 6 мажорных стран, а позже 8 и т. д.
name ="countries_grid"
position = { x = 0 y = 0 }
size = { width = 100% height = 100% }
slotsize = { width = 150 height = 0 } //размер сетки в 150 пикселей
add_horizontal = yes //добавлять новую страну горизонтально, ванильная настройка, можете менять
max_slots_vertical = 1 //одна полоса
format = "UPPER_LEFT" //привязка слева наверху
}
}

Думаю, по этим фрагментам постепенно начинаете понимать суть. Возможно, вам возник вопрос, что значит эта привязка и ориентация? Может интерфейс гей? (тонкая шутка) Это обозначает местоположение нулевой координаты.

Представьте, вы на тетраде по математике нарисовали оси X и Y, их начало нулевая координата. Наверх и вправо — положительные числа, вниз и влево — отрицательные. Каждое окно привязано к такой координате. Почему? Это сделано из-за разного расширения мониторов пользователей. Если у вас 4К монитор, вам, скорее всего, всё будет отображаться красиво, и все кнопки и текст будет на правильном месте, но на стареньком мониторе 640 на 800 будет выглядеть коряво. По этой причине многие элементы имеют свою относительную систему координат.

Привязка orientation:

  • CENTER (0, 0 в центре экрана)
  • CENTER_DOWN (в центре внизу)
  • CENTER_UP (в центре наверху)
  • UPPER_LEFT (наверху слева)
  • LOWER_LEFT (внизу слева)
  • UPPER_RIGHT (наверху справа)
  • LOWER_RIGHT (внизу справа)

Проще говоря, если у вас size = { width=1225 height=717 } и кнопка Orientation CENTER_DOWN, то нулевое положение такой кнопки в центре внизу (общая координата X=613, Y=0, относительная координата без определения отображается как нулевая). Да, это может путать вас, но есть, как есть. Поиграетесь с этим положением и поймете, как это работает.

Некоторые элементы можно просто удалить. Например, какую-то картинку или текст в глубине двойного контейнера, или спрятать с функцией hide_position, или обозначить координату (X=10000, Y=10000) за расширением экрана (не рекомендую, но так делают).

Комментарии: 0
Ваш комментарий