SamuKata
teedeezet
teedeezet

boosty


Итоги месяца: январь 2024

Привет всем спонсорам!
Первый месяц нового года прошел для меня интересно. Обычно все нормальные люди в начале января отдыхают. Я вот тоже решил отдохнуть и... нет, не ушёл в отпуск. Я занялся интересными рабочими делами, которые давно откладывались из-за недостатка времени.
Праздник к нам приходит
В новом году я решил изменить формат ежемесячных постов. Раньше я писал в них о результатах работы, опуская весь процесс ("Я сделал вот это и вот это. Спасибо за внимание").

Теперь это будет больше похоже на дневник разработки, чем на новостной дайджест. Я хочу делиться с вами и интересными мыслями, и разъяснением того, почему что-то сделано именно так, а не иначе.
Кратко напомню про форматирование текста в постах:
• Жирным выделена главная мысль абзаца, если кому-то не захочется читать весь текст целиком.
• Курсивом выделяются либо комментарии к картинкам, либо смысловые акценты.
• Термины я пишу заглавными буквами, чтобы облегчить восприятие: User Interface, GPU Simulation, Conditional Sprites, Object States и так далее.
[Логотипы]
На своих "выходных" я решил заняться освежением логотипов.
Лого ENVISION изменилось впервые за 3 года, и мне теперь не будет стыдно показывать его на публике:
Форма, может, и поменялась, но смысл остался прежним. Это всё тот же пятиугольник, с гранями которого я произвожу различные манипуляции.
(здесь должна была быть гифка с анимацией логотипа, но Бусти не поддерживает gif. Придётся описать словами: каждое ребро пятиугольника повёрнуто на 45°)
А вот обновлённый логотип Grim Wild:
Он не только стал компактнее и уже, но и обзавёлся небольшими деталями. Можете приглядеться к буквам R, M, W и L, чтобы увидеть там "засечки внутрь"
[Уход из Trello]
Сидеть в Trello через VPN оказалось неудобно, и моё терпение лопнуло. Я перешёл на ClickUp, который по итогу оказался настолько удобным, что даже если меня магическим образом разбанят Atlassian, обратно я не вернусь.
В КликАпе есть и привычные доски, и удобные документы (настолько удобные, что даже сценарий 7 серии я начал писать там, а не в Гугл документах).
Документация для тестировщиков (да, я их туда тоже привёл), на которую можно ссылаться из досок
Возможность ссылок на карточки - это невероятно удобная вещь в написании сценариев по разработке
А ещё там можно строить диаграммы
В этом приложении столько интересных фич, что если я начну перечислять их все, вы подумаете, что мне заплатили за рекламу. Так что придётся остановиться.
[Grim Wild]
В ноябре я показал вам обновлённую обводку. В декабре - новый интерфейс. Сейчас очередь дошла и до обновления самой графики.
Правильная перспектива
Суть проблемы: раньше у меня не было единого графического стиля, и я рисовал объекты как попало. Теперь, когда я более-менее определился со своими желаниями и возможностями, пора было создать определённые правила, чтобы итоговые спрайты в игре были в одном стиле.
До января в правилах ничего не было написано про перспективу. То есть про то, с каким именно наклоном камера смотрит на объекты, а также то, какое искажение применять к разным плоскостям.
Поверхности в игре смотрят строго вверх, а предметы и пешки - строго вбок. Получается, что для создания баланса постройки должны одновременно сочетаться и с "боком", и с "верхом".
По итогу я выбрал наклон камеры в 54°:
Думаете, это конец? Увы, нет.

Исключение 1: Рабочие поверхности
Проблема #1: на рабочие поверхности (которые смотрят вверх) мы кладём предметы (которые смотрят в бок), и это нормально смотрится только тогда, когда оба спрайта смотрят строго вверх:
Проблема #2: искажение перспективы при повороте. Во-первых, это заставляет меня рисовать для каждой постройки по 3 разных спрайта. Во-вторых, сужение вытянутых построек (например, кроватей) выглядит... смешно. 
Именно поэтому я решил сделать второе правило, которое... является нарушением первого.

Верх без искажений будет для рабочих поверхностей (всех верстаков), кроватей / операционных столов / лежанок для животных, столов (мебель), горшков / гидропоники (растения растут из строго вертикальной поверхности. Та же пшеница, которая занимает 1 клетку пространства).
Исключение 2: Блоки
В 54° блоки выглядят уж слишком "пузато" и визуально непривлекательно. Исправление ситуации здесь - это рисование блоков под 36°.
"тонкие" занимают столько же пикселей, но визуально кажутся выше. "пузатые" же выглядят скорее как полу-блоки, через которые пешки могут переступить
И что же мы по итогу имеем? Я хотел сделать универсальный набор правил, а вышел универсальный набор исключений из правил. 

Как же поступают другие игры? 
• Factorio использует 54°. Им проще, потому что спрайты делаются из 3д моделей.
• Dwarf Fortress имеет разную перспективу
• RimWorld смещает перспективу на определённую сторону постройки (бок / верх) в зависимости от того, что главнее. У верстака, например, это верх, а у обогревателя - бок.

И да, есть ещё одна особенность графики: у стоящих вплотную построек видны бока. По идее, такого быть не должно, но иначе на экране получается каша:
Я люблю смотреть на то, как похожие проблемы решают опытные разработчики. Оказалось, что в Factorio эта особенность тоже есть, и раз игроки не жалуются, значит, можно считать эту фичу "проверенной временем".
Сущности
Вторая половина января, в противовес первой, оказалось чисто технической.
Там я занимался созданием ещё одного слоя для ассетов. Он стал называться Entity (сущность).
Сущности понадобились мне для того, чтобы моды в будущем могли создавать свои ассеты, экземпляры которых не будут существовать в игровом мире. Примеры: спрайты, анимации, звуки. Это просто наборы данных, находящиеся в ОЗУ, на которые ссылаются игровые объекты.

Состояния сущностей
Недавно (в постах и в ролике про глобальную реконструкцию) я говорил про Object States (состояния объектов).

Это контейнер с данными, которые принадлежат какому-то объекту и которыми манипулируют логические компоненты.
Раньше там поддерживались только числовые значения. Сейчас там есть 8-битные числа, целые числа, числа с плавающей точкой, статичные и динамические строки, а также EntityId. 
EntityId - это новый идентификатор любой сущности в мире.

ТЕХНИЧЕСКИЕ ПОДРОБНОСТИ
Объекты в игре раньше делились на слои. Это был Enum (перечисление), которое задавалось мной в C++ и было ограничено 256 значениями.
Теперь они делятся на логические типы (Компонент, Пешка, Растение, Спрайт...). Для этого используется FName, который может создаваться даже в модах.
Это значит, что моды теперь смогут создавать не просто свой контент, а новые логические типы ассетов, которых нет в базовой игре. Например, мод на магию может создать "магию" с нуля, задав ей свою уникальную логику
А второе нововведение EntityId - это индексирование объектов не по 32-битному числу, а по 64-битному. В январе я обнаружил, что количество планет в космическом DLC было бы ограничено тремя штуками, потому что все возможные индексы клеток в мире могли быть разделены на 3,96 планет. Сейчас же в игре максимально может существовать 4 294 967 296 планет (то есть без каких-либо ограничений)
КОНЕЦ ТЕХНИЧЕСКИХ ПОДРОБНОСТЕЙ
То есть теперь внутри состояния объекта мы можем ссылаться на другие объекты.
 
Пример 1: Назначение колонисту кровати. Кровать ссылается на своего владельца, а владелец - на кровать.
Пример 2: Постройка ссылается на электрическую цепь, откуда берёт энергию для работы

В ноябре я писал вам, что мне требовалось сделать состояния клеток (Cell States). Как видите, попытка реализовать это обернулась тем, что я улучшил весь проект и добавил возможностей для мододелов. 
В работе

Список вещей, над которыми я сейчас работаю:
• Статические спрайты ("новая отрисовка"). Система стала намного безумнее (в хорошем смысле), но на реализацию мне требуется больше времени (оно того стоит!)
• Level-Agnostic системы. Это набор механик, который сводится к тому, что клетки являются мировыми объектами и никак не зависят от уровня (когда я пойму, что всё получается, расскажу подробнее)
• Состояния сущностей: их надо отполировать и устранить некоторые проблемы
• Нужно переделать условные спрайты в связи с тем, что Object States теперь не существует

Куда катится Grim Wild?

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

Дело в том, что Grim Wild "образца 2024 года" сильно видоизменился, и для того, чтобы реализовать все новые идеи, мне нужно сделать ещё более гибкую основу. 

Да, я так говорил на протяжении всего 2023 года. Но в этом году весь "фундамент" точно будет закончен, потому что я уже практически всё сделал. 
В игре уже "есть" события. "есть" экипировка. "есть" части тел и активности. Всё это по планам работает через логические компоненты и Entity States. А это уже введено в игру и является полностью функциональным.
[Публичная деятельность]

За январь ничего не произошло. Вот так кратко и лаконично. 
Шестая серия находится в монтаже, я там делаю вторую главу. Мне бы очень хотелось закончить работу над ним уже в феврале. Если по части GW не появится срочных задач (например, гениальных озарений), то всё будет сделано в срок.
Спасибо за внимание и... спасибо, что не отписываетесь, когда в публичной деятельности происходит затишье.

Итоги месяца: январь 2024 Итоги месяца: январь 2024 Итоги месяца: январь 2024 Итоги месяца: январь 2024 Итоги месяца: январь 2024 Итоги месяца: январь 2024 Итоги месяца: январь 2024 Итоги месяца: январь 2024 Итоги месяца: январь 2024 Итоги месяца: январь 2024 Итоги месяца: январь 2024 Итоги месяца: январь 2024

Comments

<div ><div><span class="text">Афигенный формат постов. Как по мне, прям очень классно. Рад что ты продолжаешь развиваться)</span></div><div><span class="text"></span></div><div><span class="text">Удачи в пути)</span></div></div>

Регистрация убивает нервы


More Creators