Итоги месяца: февраль 2024
Added 2024-02-29 16:17:10 +0000 UTC
Привет всем спонсорам!
Итоги месяца в этот раз получились не совсем обычными. Всё дело в том, что почти весь февраль я посвятил новому ролику (который всё ещё делается, но выйдет уже скоро).
Работа над проектом, конечно, тоже велась. Правда, мне пришлось отложить все старые планы и заниматься тем, что срочно понадобилось сделать для показа в видео.
[Grim Wild]
Процедурные текстуры поверхностей
Я сделал пару новых текстур по новому образцу. Если раньше поверхности были .png картинками, которые явно повторялись через N клеток, то сейчас я пошёл по другому пути: создавать более комплексные шейдеры.
Текстура земли, 32x32 клетки. На самом деле, я мог показать и 256x256 клетки, явных повторов там бы тоже не было
Шейдер земли всего из двух текстур:
1) Шум Перлина (в будущем может быть заменён на другой алгоритм для более красивых результатов)
2) Бесшовные пятна, каналы которых (R/G/B) можно комбинировать и получать разные результаты В будущем я вообще могу объединить эти текстуры в одну, используя свободный Alpha канал
Шумы и пятна комбинируются в разном масштабе и умножаются друг на друга. Такой подход позволяет создать паттерн, который не повторяется настолько очевидно, как обычная текстура. По этому же принципу я буду делать и остальные поверхности.
Новая текстура снега (вода пока что старая). Края "ледника" здесь слишком рваные, и это уже исправлено. Карта 128x128 клеток
Новая текстура лавы. "Линии" на ней покачиваются и меняют свою интенсивность (контраст). К сожалению, Бусти не поддерживает .gif, чтобы показать вам текущий результат. В любом случае, она будет ещё доделана и добавлена в новый ролик
Пользовательский интерфейс
Для нового ролика мне пришлось сделать концепт окна модов и сразу же перенести его в Unreal Engine.
Все "моды", которые вы здесь видите - фейки. Функционала для создания модов в проекте пока что нет
Работа оказалась неожиданно полезной, потому что я выяснил пару интересных вещей:
1) Размер шрифта в Figma не равен размеру шрифта в Unreal Engine. Всё это время движок меня обманывал. Теперь, когда я разобрался, в чём же дело (UE использует DPI 96, а Figma - 72), макеты из Фигмы могут переносятся в проект без каких-либо отличий во внешнем виде.
2) Старый шрифт (Roboto Condensed), который мне и так надоел, оказался нечитабельным. Представляю вам Roboto Flex, который теперь используется в игре по умолчанию:

Да, они из одного семейства и похожи друг на друга. Основная разница в том, что Flex (от слова Flexible) - гибкий, и его можно настраивать как угодно. Если и новый вариант не будет удобен игрокам, я смогу с лёгкостью добавить символам ещё немного ширины.
Всё же, слишком широкие шрифты игре не подходят: в виджетах присутствует слишком много информации, которая должна помещаться в одну строку и не быть обрезанной.
Внедрение Lua
В новом ролике я затрону тему модификаций и того, что они делаются через скрипты на Lua. Для наглядной демонстрации мне пришлось внедрить в проект Lua, и результаты меня полностью устраивают.
Пока что я продумываю общую архитектуру скриптов (уже планируется 3 уровня "привилегий" виртуальной машины: для внутриигровых скриптов, для модов и для тестирования) и понемногу изучаю язык, в котором до этого у меня опыта не было.
Тот факт, что Lua есть в игре уже сейчас, поможет с самого начала закрытого тестирования проводить стресс-тесты, создавая требуемую логику прямо на месте.
В работе
Работа, которую придётся перенести на март, включает в себя все мои обещания с прошлого месяца. И знаете, это даже хорошо! За февраль я немного додумал систему условных спрайтов и понял, как её можно улучшить.
В феврале я также нарисовал какое-то количество новых спрайтов, но спойлерить содержание ролика я не хочу. Покажу вам их в итогах марта 🙂
[Важно: Что такое Level-Agnostic системы]
Раз работы, о которой я могу вам рассказать, в этот раз не так много, то позвольте мне вместо итогов расписать в этом посте важную информацию.
Я много раз упоминал "Level-Agnostic системы" ("независимые от уровня"). Всё, что я говорил раньше - это то, что клетки из обычного набора данных становятся полноценными игровыми объектами. И как любые объекты, они существуют именно в игровом мире, а не на уровне.
Если клетка существует в мире, значит, всё, что находится на ней, тоже: поверхности и свет; навигация пешек и динамические жидкости.
Всё это приводит нас к тому, что в Grim Wild будет открытый мир (open world).
Разделения на изолированные уровни не будет. Вместо них будут чанки (64x64 клетки), которые могут свободно подгружаться по мере игры.
На самом деле, для меня самого такой исход - не сюрприз. Я очень давно искал возможности реализовать в проекте открытый мир, и, наконец, нашёл (точнее, реализация сама нашла меня).
Я специально в прошлые годы разработки почти никак не касался геймплея. И именно поэтому говорил, что фундамент проекта сделать важнее, чем "наслоения" в виде игрового процесса.
Так получилось, что вся уже сделанная архитектура проекта идеально подходит для открытого мира. Точкой в вопросе реализации открытого мира стала новая и супер-эффективная система отрисовки спрайтов. Напоминаю, что она всё ещё в процессе реализации, но уже сейчас прирост производительности от неё очень большой.
В итоге я решил, что упускать возможность уйти от RimWorld, к тому же так красиво, нельзя.
Плюсы открытого мира:
• Уровень игрока не изолирован и не ограничен. Можно строить какие угодно постройки и не бояться, что закончится место
• Мировые поселения могут занимать несколько клеток, а не пытаться уместиться на одном уровне. Это касается и других структур (квестовых в том числе)
• Разделение на "клетку уровня" и "клетку планеты" больше не будет, они соединятся
• Конвейеры и транспорт были бы оправданы
Минусы открытого мира:
• Обычно в играх с open world под управлением игрока находится какая-то одна пешка. В GW мы управляем колонией, и чтобы подгружать новые чанки, надо привести туда колонистов. Пока что удобство такого подхода под вопросом
• Многоярусные уровни перестают иметь какой-либо смысл. Я делал их только ради того, чтобы у игрока на изолированном уровне было больше пространства.
Хорошие новости: если многоярусые уровни будут убраны из игры, то ВСЕ механики и интересности оттуда могут быть спокойно перенесены в скалы (больше горные массивы, где можно делать подземные базы). Игра не потеряет ничего!
Что важно знать про Level-Agnostic
Пока что все разговоры про Open World - это, скорее, идеи. Есть вероятность, что на каком-то этапе разработки всё сорвётся, и придётся делать консервативный (урезанный) вариант открытого мира.
Я обдумывал переход на open world больше четырёх месяцев. До сих пор ни одной серьёзной преграды на пути к его реализации я не увидел. Думаю, это очень хороший знак!
Часто задаваемые вопросы (из будущего)
Думаю, у вас в голове сейчас очень много вопросов. Я попытаюсь ответить на некоторые из них.
– Сильно ли из-за L-A растянется время разработки проекта?
Не думаю. Все фундаментальные механики остаются теми же. Объекты до сих пор существуют в мире и состоят из логических компонентов. Фракции и поселения почти никак не поменялись (разве что стали многоклеточными). Как я уже говорил, я делал очень гибкий фундамент проекта, так что впихнуть в него открытый мир сейчас вполне реально.
– Это не слишком импульсивное решение? Оно точно приведёт проект в правильную сторону?
Решение о внедрении открытого мира я обдумывал очень долго. Я несколько раз перерыл все доски в Трелло и пересмотрел свои старые ролики, но не смог найти ни одного серьёзного довода против реализации этой системы. Я считаю, что открытый мир - это то, чего не хватало игре уже больше года. Зрители с самого начала видели в проекте нечто большее, чем обычная копия RimWorld, и я, наконец, могу им это дать.
– Многоярусные уровни оставить нельзя? Ты всё-таки говорил про них в роликах!
Да, чем-то пожертвовать всё-таки пришлось. Реализовать их всё ещё можно, но они не имеют теперь никакого смысла. В теории, ярусы могут быть добавлены даже модами (с технической стороны, каждый этаж = отдельная "планета"). Мне с самого начала не нравилась концепция трёхмерного игрового процесса в двумерной игре. Теперь всё "на своих местах". К тому же, ярусы добавляли очень много логических дыр, с которыми я не был в состоянии справиться.
– А много старого кода придётся удалить
Нет, не так много. В основном удалится код, который я писал в 2021-2022 годах. В 2023 я занимался тем, что останется в проекте навсегда.
– Разработка точно двигается вперёд, а не стоит на месте?
Да, я понимаю тех, кто так говорит. Со стороны кажется, что я сам создаю себе проблемы и пытаюсь решить их несколько месяцев подряд. На самом деле, проект становится всё ближе к закрытому тестированию. А потом, после того, как фундамент будет полностью доделан, игровой процесс сделать уже не так сложно (намного сложнее будет его сбалансировать)
– Как нам вообще понимать, какой ты видишь игру? Как понять, что именно мы спонсируем?
В целом, моё видение игры отражено в роликах и публичных досках в Трелло. Я, прямо как и зрители/спонсоры, не могу видеть точной картины того, что у меня получится. Я вижу лишь направления развития, и о них же я и рассказываю вам.
Отследить логику моих решений не так сложно: я полностью избавляюсь от "наследника РимВорлда" и создаю свою уникальную игру. Следовательно, в будущем проект может отбросить какие-то другие унаследованные идеи, заменив их своими.
Если у вас остались вопросы, задавайте их в комментариях к посту или в Дискорде (пожалуйста, используйте чат #команда-поддержки, потому что зрителям об открытом мире я пока сообщать не хочу. Это будет сделано как минимум в 8 серии)
[Публичная деятельность]
Шестая серия активно монтируется. Она оказалась даже сложнее, чем пятая, так что затраты времени на визуализацию моих мыслей увеличились.
Ситуацию усугубляет работа в Premiere Pro на моём слабом ПК (на самом деле, у меня ноутбук). Чуть ли не 50% времени (я не шучу и не преувеличиваю) у меня тратится на лаги или ожидания.
Однажды я рендерил (обрабатывал) минутную сцену... 2 дня подряд. В первый день Премьер сначала зависал, потребляя 100% ОЗУ, а потом, после двух часов рендера, выдал мне ошибку без пояснения. Во второй день я потратил на рендер аж 5 часов. И это было не целое видео, а всего лишь одна сцена оттуда.Кстати, Unreal Engine способен обработать эту же сцену в реальном времени. Это в тысячи раз быстрее Премьера. Правда, монтировать ролики на C++ - явно какое-то извращение
Новая серия выйдет в марте. Я очень хочу доделать её в первой половине, но ничего обещать не могу - лаги от моих пожеланий не уменьшатся.
Напоминаю, что после выхода ролика я сделаю для вас "Послевкусие" с подробным разборов тезисов из видео. А пока что, спасибо за прочтение!