SamuKata
teedeezet
teedeezet

boosty


Итоги месяца: март 2025

Привет всем спонсорам!
 
В марте я продолжал работу над техническим оснащением игры. Соединение всех существующих механик в единое целое (самая долгожданная часть разработки) становится всё ближе, и это меня радует. Правда, такой ускорившийся в последнее время темп развития проекта оставляет мою публичную деятельность почти без внимания, и я ничего с этим поделать не могу.
 
[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). Иначе никак нельзя: я могу потерять свои текущие мысли, и вся продуманная картина в голове рассыпется.
 
Спасибо за внимание! 

Итоги месяца: март 2025 Итоги месяца: март 2025 Итоги месяца: март 2025

Comments

<div ><div><span class="text">DaytonFox, Текстуры мне нужны уже здесь и сейчас. Возможности нанять художника можно ждать месяцами и годами</span></div><div></div></div>

teedeezet

<div ><div><span class="text">вообще текстурами лучше дизайнеру заниматься. не думаю что на данном этапе стоит тратить на это время, особенно когда вы все делаете один</span></div>

DaytonFox

<div ><div><span class="text">Quark Doe, Да, можно без проблем разместить рабочее место на одной из клеток. Но у печек оно всё-таки на стыке</span></div><div></div></div>

teedeezet

<div ><div><span class="text">Зачем обязательно по середине должно быть рабочее место?<br>В той же Римке вполне нормально смотрятся и духклеточные и трёхклеточные рабочие столы.</span></div><div></div></div>

Quark Doe


More Creators