SamuKata
teedeezet
teedeezet

boosty


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

Привет всем спонсорам!
 
Первый месяц нового года у меня был не совсем обычным. Каждый январь я традиционно занимаюсь не важными делами (их у меня всегда бесконечно много), а тем, что мне самому больше всего хочется делать.
 
[Grim Wild: Визуал]
 
Возвращение к чёрной обводке
 
В январе я решил, что обводка всех спрайтов всё-таки будет чёрной, несмотря на то, что я буквально месяц назад в ролике сказал обратное. Дело в том, что именно во время работы над сценой из видео я начал сомневаться в правильности выбранного стиля.
 
Я понял, что он выглядит куда менее красиво, чем я себе представлял изначально. А проведённый в Дискорде опрос показал, что из выборки в 69 людей большинство со мной солидарны.
 
Решающим фактором возвращения к чёрному стало сложное и запутанное создание цветной обводки, которую в больших количествах пришлось бы делать и мне, и мододелам. Она требует копирования отдельных частей спрайта и создания контура для каждого из них (+ наслоения в правильном порядке). Редактировать такие спрайты становится сложнее, и ради небольшого графического изменения создавать такие проблемы на ровном месте я не хочу.
 
Оттенки спрайтов
 
 Я когда-то
уже писал, что алгоритм применения оттенка у спрайтов не совсем обычный. Он не просто умножает пиксель базовой текстуры на заданный цвет материала, а делает вместо этого сдвиг по насыщенности (Saturation). Вот, как это выглядело раньше:
А вот, что использовалось в реальной игре, с учётом всех оптимизаций:
Всё работало отлично, пока я не столкнулся с тёмными материалами (например, камнем или обсидианом). Их мой алгоритм делал слишком светлыми, ведь сдвиг яркости (Lightness) был константой:
Каменный ящик
 
Короче говоря, мне пришлось делать для каждого материала настраиваемый сдвиг яркости. Но я посчитал такие суммарные вычисления неоправданными и в итоге сделал это: теперь у каждого материала есть свой градиент яркости, и базовый пиксель текстуры умножается на соответствующий RGB оттуда. Вот как это выглядит на практике:
Руда, сделанная из материала "аметист". Правый спрайт сделан вне стилистики ГВ (в игре цвета плоские, а тут добавлен градиент). Такой стиль мне очень даже нравится, может, именно так будет выглядеть какая-нибудь моя следующая игра
Мало того, что в новой версии стало меньше вычислений, так мы ещё и получили полную свободу по сдвигам всех каналов. Можно создавать какие угодно цветовые изменения - и по RGB, и по HSL. Например, можно сделать материал "висмут", который переливается всеми цветами радуги:
В моей голове это выглядело красивее.
 
Моддинг: Создавать эти градиенты (1 материал = 1 градиент) нужно будет не в стороннем редакторе, а прямо внутри игры через окно Material Color Designer. Оно пока не готово, поэтому я покажу его только в итогах февраля.
 
Новый алгоритм полностью совместим с моей системой отрисовки и всеми её фишками (Static Relevance, Draw Command Caching, Dynamic Instancing). 
 
Обновлённый металлический блеск
 
Напоминаю, что у меня в идеях есть создание металлического блеска для некоторых спрайтов. За его наличие отвечает отдельный канал композитной текстуры. Но раньше ничего дельного с ним у меня не получалось, потому что я просто добавлял финальному цвету пикселя текстуры (со всеми применёнными эффектами и оттенками) белую полоску, которая должна была символизировать отблеск солнца.
 
Когда я реализовал новый алгоритм применения оттенков, мне в голову пришла идея: что, если добавлять блеск не в самом конце пайплайна, а в самом начале? Результат перед вами:
 
Стоит сказать, что это до сих пор просто концепт. Как красиво это будет выглядеть в реальной игре - всё ещё неизвестно, поэтому есть шанс, что всё-таки от этой фишки придётся отказаться из-за ненадобности.
 
Новые и обновлённые спрайты
за декабрь-январь
 
Во-первых, у всех спрайтов обновлен цвет обводки.
Во-вторых, некоторые старые спрайты были перерисованы, чтобы соответствовать единой перспективе игры.
В-третьих, я игнорирую текстуры, нарисованные в декабре ради ролика (здесь показываю только игровой контент).
 
Наконец-то столы выше стульев, а не наоборот!
 
Новые блоки, которые я обещал сделать в январе, были пока только нарисованы. В игру я их ещё не переносил
 
[Grim Wild: Техника]
 
Провальное обновление Unreal Engine
 
С сентября 2023 года я использую Unreal Engine 5.3. В январе я решил обновить движок до последней версии (5.5), потому что разработчики обещали
оптимизировать отрисовку, местами "аж в 2 раза по сравнению с 5.0".
 
Обновление стало целым приключением. Я потратил целый день на то, чтобы просто запустить проект (освободил 70Гб места на SSD, обновил Visual Studio, скомпилировал все шейдеры).
 
И понял, что мой ноутбук больше не тянет проект, причём по всем фронтам одновременно: я получаю безумно долгую компиляцию проекта, нескончаемую загрузку редактора и катастрофическую нехватку оперативной памяти.
Один и тот же проект GW в двух версиях движка. Новая потребляет в 10 раз больше ОЗУ. Это при том, что я на тот момент уже почистил движок от мусора (плагины, настройки...)
 
Вишенка на торте - это реализация той самой оптимизации, ради которой я и обновлялся. Тесты показали, что всё стало только хуже! Затраты на новую фишку распараллеливания задач превышали затраты на код внутри них. Спустя время игра вообще отказалась запускаться, выдавая ошибку "Out of video memory."
 
Проблемы с новыми версиями возникли
не только у меня. 26 000 просмотров у поста на специализированном форуме - это явный сигнал того, что у Эпиков что-то пошло не так.   
 
Короче говоря, я остаюсь на старой версии движка, где Grim Wild и Envision Video Editor работают идеально. Ничего страшного в этом нет, это даже хорошо. Все крупные проекты поступают так же, потому что золотое правило "работает – не трогай" действует всегда.
 
Виртуальные ассеты
 
В январе я продолжал полноценную работу над поддержкой модов. На этот раз я решил закончить прерванные из-за седьмой серии дела, а именно систему виртуальных ассетов.
 
Напоминаю, что это вообще такое: ассеты (любые наборы данных) в игре могут создаваться не только мной через движок, но и игроками (мододелами) через главное меню.
 
Игра должна одинаково поддерживать оба типа ассетов, поэтому от меня требовалось сделать довольно деликатную вещь: встроить весь нужный мне функционал (а его много!) в готовую систему менеджмента ассетов в движке.
 
Что мы имеем уже сейчас:
 
• Моды могут создавать свои ассеты (пешек, предметы, постройки...), и они загружаются с диска почти так же эффективно, как и UAssets (сделанные в редакторе). Формат файлов ассетов на диске я назвал ".rawdata".
Моды могут редактировать любые ассеты через Lua код (даже контент из других модов и из базовой игры - я говорил про такую фичу в 6 серии, приводя пример с кастомизацией могил).
• (в тестовом режиме) Можно редактировать любые ассеты прямо через окно в главном меню. Допустим, вы хотите изменить урон дробовика из базовой игры. Открываете ассет Weapon_Shotgun и меняете там пару полей. Всё, изменения автоматически будут применяться при каждой загрузке ассета, пока ваш мод находится в сборке.
• Изменение ассетов (через код или специальное окно) будет показываться игрокам через базу знаний, чтобы они всегда знали, какие именно моды вносят изменения.
 • Виртуальные ассеты поддерживают наследование (о том, что это такое, я писал
здесь на примере бобров)
 
Добавлять/удалять ассетам логические компоненты пока можно только через код.
 
Небольшие изменения
 
За январь я сделал также много мелких задач, и вот самые важные из них:
 
• Сделан загрузочный экран, который полностью удовлетворяет нужды проекта.
Да, шокирующие подробности: сделать это я не мог пару лет, потому что асинхронный загрузочный экран в UE - мучение. Все эти годы у меня опускались руки из-за безысходности этой ситуации. Там повсюду были баги и проблемы, а усложнялось всё невозможностью дебага. Но в январе я всё-таки пересилил себя и заставил его работать, причём в идеальном для меня исполнении.
 
• Сделан новый алгоритм вычисления приоритета рендера объектов в мире.
В ураганном вступлении седьмой серии вы могли видеть, что объекты в полете слипались. Новый алгоритм предотвращает это, а ещё имеет намного более широкий диапазон: в старой вариации на слишком больших уровнях спрайты могли просто перестать рисоваться.
 
[Grim Wild: Новые планы]

 
Время идёт вперёд, и с ним меняюсь и я сам, и окружающий нас мир. Временами я пересматриваю планы на игру, выбрасывая самое ненужное и корректируя хотелки под реалии наступившего мира.
 
Самые глобальные мысли 2025 года пока такие:
 
Что, если сделать игру платной с самого начала? Не пора ли убрать мой старый аргумент "игра будет бесплатной, и точка", который является архаизмом, прилипшим ко мне ещё со времён Grim World?
 
Раньше я считал, что на время раннего доступа буду делать контент только на русскоязычную аудиторию (ей бы и досталось всё бесплатно). Но, как вы знаете, доступ к RU-аудитории я из-за блокировок теряю, поэтому активно готовлюсь к публикации контента на международном уровне. А для всего мира игру бесплатной я делать никогда не планировал.
 
(мои первоначальные планы: делаю видео на русском языке; выкладываю игру в бесплатный ранний доступ; её забирают русскоязычные зрители, которые пиарят проект "сарафанным радио"; я закрываю ранний доступ, делаю проект платным и начинаю создавать контент на английском языке. Сейчас же планируется, что аудитория RU+ENG будет у меня с самого начала EA).

P.S все спонсоры определённо получат игру бесплатно.
 
• Если игра будет платной, то нет смысла искусственно изолировать космос в отдельное DLC, и можно сделать его частью основной игры. Тогда фокус проекта может сместиться на научно-фантастический, и это очень хорошо!
 
Мне не нравится рисовать органические текстуры. Мне не нравится придумывать первобытные предметы или средневековое оружие. Возможно, этап "средневековье" с приходом космоса вообще будет убран, и я оставлю его для фанатеющих мододелов. Исследовать разные планеты, строя космические корабли и сражаясь в космосе - это более интересная задумка, чем битва аборигенов палками.
 
Но это всё пока просто мысли. Для того, чтобы они вышли за пределы внутренней кухни, им нужно ещё устояться и детальнее обдуматься.
 
[Публичная деятельность]
 
В публичном поле в этот раз новостей почти нет.
 
Единственное, что хотелось бы обсудить - это мой
Telegram-канал, на который я планировал выкладывать простые посты про разработку. Мой мозг как всё неосознанно усложнил, и я снова пишу большие и проработанные лонгриды.
   
Возможно, именно этого и хочет сообщество. В своих роликах я прохожусь только "по верхам" идей, а конкретика остаётся за кадром. Текстовые посты в Телеграме - это идеальное место, куда я могу лить нескончаемый поток своих мыслей (а вот рассказать о чём-то на Ютубе - это очень дорогое удовольствие; 1 минута хронометража там может делаться неделями).
 
[Планы на февраль]
 
• Доделать все начатые в проекте дела.
• Сделать все запланированные улучшения в EVE, пока я не начал монтаж новой серии.
• Начать работу над восьмой серией (да, в этот раз без полугодового перерыва).
• Продолжать тренировку озвучки текста на английском языке (пока что это единственная причина задержки выхода англоязычного контента).
 
Спасибо за внимание!

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

Comments

<div ><div><span class="text">У меня у одного зум картинок на Бусти работает криво? На случай, если вы не можете приблизить первую пикчу:</span></div><div></div><div><div class="image"><img id="31311239-7375-461c-99b7-eb84779c8c29" src="https://images.boosty.to/image/31311239-7375-461c-99b7-eb84779c8c29?change_time=1738432369" change_time="1738432369" width="1281" height="841" style="max-width: 100%; height: auto;"></div></div>

teedeezet


More Creators