Итоги месяца: март 2025
Added 2025-04-04 13:53:28 +0000 UTC
Привет всем спонсорам!
В марте я продолжал работу над техническим оснащением игры. Соединение всех существующих механик в единое целое (самая долгожданная часть разработки) становится всё ближе, и это меня радует. Правда, такой ускорившийся в последнее время темп развития проекта оставляет мою публичную деятельность почти без внимания, и я ничего с этим поделать не могу.
[Grim Wild]
Логическая стыковка объектов
В прошлые месяцы я занимался виртуальными ассетами и поддержкой модов. Вполне логичное продолжение этой темы - сделать так, чтобы внутри этих самых ассетов можно было хранить Шаблоны объектов, причём полностью функциональные. Они, как вам уже известно, состоят из логических компонентов - и хоть сами компоненты в игре уже давно были готовы, никакой связки между собой они образовывать не могли. Настало время это исправлять и заниматься логической стыковкой.
Информации о стыковке накопилось так много, что она вся сюда не влезла, и мне пришлось писать отдельный пост размером с целый сценарий для ролика.
Что важно по состоянию на апрель:
• Стыковка ещё не готова до конца. Основные компоненты системы уже сделаны (копирование, сохранение, загрузка, редактирование, Delta Serialization), но нереализованной мелочи всё ещё хватает. Я продолжаю всё это доделывать.
• Работа над окном редактирования ассетов (Asset Editor), которую я анонсировал в прошлых итогах месяца, пока никуда не продвигается. Всё идёт по плану: я сначала должен полностью доделать стыковку, а уже потом модифицировать её через редактор.
Compound Names (составные ID)
Как вы теперь знаете, объекты соединяются в сложные цепочки. Это создаёт не очень приятный эффект: чтобы из одного компонента сослаться на другой слой в иерархии, нужно писать довольно много повторяющегося кода.
Я решил сразу упростить себе и мододелам жизнь, внедрив в игру "Составные ID". Они позволяют не писать кучу повторов одной и той же функции, а просто упаковать всю цепочку запроса в одну строку.
Допустим, Мозг человека хочет обратиться к его Сердцу, которое находится на другом уровне иерархии:
Второй вариант делает то же самое, что и первый. Просто пишется намного короче
В будущем через Compound Names будут работать категории предметов. Например, слиток из титана - это Metal.Refractory (тугоплавкий металл). Соответственно, для рецептов, требующих ингредиент Metal, он ещё подойдёт, а для Metal.Fusible (легкоплавкий) - уже нет.
Lua: возвращение к Tencent
Lua (язык для написания скриптов в модах) был внедрён в проект ещё прошлым летом. Тогда я решил использовать плагин LuaMachine, потому что он оказался самым простым и прямолинейным.
Время шло, и опыта в этой сфере у меня становилось всё больше. Простой, но неэффективный LuaMachine перестал меня устраивать, и в марте я решил перейти на более "взрослое" решение: плагин UnLua от китайской компании Tencent.
Я был настроен очень решительно... пока не увидел, что у Tencent есть два совершенно разных и никак не связанных между собой плагина для интеграции Lua в Unreal Engine: UnLua и Slua.
Я снова оказался на развилке между двумя равнозначно привлекательными путями. По итогу я выбрал всё-таки UnLua, потому что с ним я уже хоть как-то знаком. Правильный ли это выбор? Я не знаю, и это снова доставляет мне дискомфорт.
Интересная фишка UnLua - это автоматический экспорт в Луа всех классов, типов и функций из Блюпринтов (всего, что из C++ выведено в БП, тоже). Мне не нужно заниматься этим вручную; я просто пишу свой обычный код, и он тут же становится готов к использованию в скриптах.
Правда, пока что меня такая фишка скорее пугает. В Луа экспортируется вообще всё, даже то, что в руки мододелам я давать не собираюсь. Настраивать API всё-таки придётся, не такой уж это автоматический процесс.
Хорошо то, что и весь функционал движка для создания интерфейсов тоже выведен в Lua. Мододелы смогут создавать сложные виджеты, и ограничений с моей стороны для них не будет. По сути, они смогут сделать через Lua всё, что можно сделать в самом движке через C++ или UMG. Даже свой Envision Video Editor.
А ещё здесь есть свой "генератор документации". Он делает примерно то же самое, что и мой собственный. Но это не значит, что моё время потрачено зря; я буду использовать лучшее из обоих (как минимум китайская версия не умеет экспортировать в Markdown для создания веб-версии документации).
Обновление визуала
Визуальная составляющая игры до сих пор хромает, это факт. Не только из-за того, что я - полная посредственность в художествах, но и из-за отсутствия должного внимания к этой сфере (всё моё время уходит на код).
Но всё же, чем ближе игра находится к этапу "наконец-то игровой процесс", тем чаще визуал оказывается в фокусе моего внимания, и я время от времени там что-то улучшаю (или ухудшаю, но тщательно заметаю следы своих провалов и делаю вид, что ничего не произошло).
***
Все эти годы я рисовал текстуры с подсознательным уклоном в сторону RimWorld. Большой проблемой для меня было создание построек: как бы я не пытался рисовать рабочие столы (размером 3x1 клетки), ничего интересного не получалось. Они выходили слишком длинными и пустыми, и я уже устал от попыток что-то там отчаянно и безрезультатно подрисовать.
Я пошёл на самые крайние меры, какие можно представить в сложившейся ситуации. Я решил, что базовые рабочие места будут иметь размер кратный двум клеткам (2x1, 2x2, 4x2). Не слишком сжато и не слишком растянуто.
Обновлённые за март текстуры
Почему я раньше даже не рассматривал этот вариант? Потому что точка, в которой будет стоять человек при работе, находится прямо на стыке двух клеток. Никакой стул туда не поставишь. Придётся всем людям работать стоя! (чего не сделаешь ради красоты)
И раз рабочее место находится сразу на двух клетках, то они обе не могут застраиваться другими постройками. И мне это, на самом деле, нравится.
Я поставил себе цель: заменить к восьмой серии все устаревшие спрайты (из тех, которые я планирую использовать в ролике). Да и вообще, хотелось бы значительно разнообразить и украсить сцены в новом видео. Всё-таки оно посвящено отрисовке, так что надо поразить ей зрителей!
[Публичная деятельность]
В сфере публичной деятельности ничего публичного сейчас не происходит. Но за кулисами всё идёт по плану: я продолжаю время от времени писать и озвучивать тексты на английском языке, и мой навык в этом мастерстве становится всё лучше и лучше. На свои старые тексты я теперь смотрю с долей испанского стыда.
Полноценно заниматься восьмой серией я смогу тогда, когда доделаю все срочные дела по проекту (на данный момент это стыковка и Asset Editor). Иначе никак нельзя: я могу потерять свои текущие мысли, и вся продуманная картина в голове рассыпется.
Спасибо за внимание!