Привет всем спонсорам!
Работа в октябре у меня происходила неоднородно: первую половину месяца я был в отпуске, никак не касаясь проекта и публичной деятельности. А во вторую, получив дозу вдохновения после отдыха, я работал с двойным усердием и продуктивностью.
Перезагрузка мышления помогла мне решить нерешаемые проблемы и найти выход из тупиковых ситуаций. Как бы глупо это не звучало, это правда. Предлагаю вам всем в этом убедиться с помощью этого поста.
[Grim Wild]
Новый внешний вид поверхностей
Создание текстур поверхностей для меня - настоящее испытание. Тем не менее, в одном из старых постов я презентовал новый подход: наслоение шумов друг на друга. В октябре эта идея немного изменилась, и я переделал (почти) все старые текстуры на новые: Проблему явных повторов на больших отдалениях камеры я решил исправлять не с использованием шейдера, а с помощью технологии под названием Texture Bombing. Результат, конечно, не такой идеальный, но зато каждая поверхность - это просто "запечённая" .png картинка, и их намного проще создавать мододелам. Выглядит всё в игре так:
Переходы поверхностей, которые я показывал в посте за июнь, тоже претерпели некоторые изменения.
1) Размер переходов уменьшился в 2 раза. Раньше он занимал 25% клетки, а теперь всего 12.5%. Поверхности выпирали к соседям уж слишком далеко. Если клетку со всех сторон закрывали переходы, это выглядело некрасиво, а ещё путало игрока:
Обратите внимание на полоску земли. В старом варианте на неё с двух сторон напирают песок и трава. В итоге текстура земли получается уж очень узкой (-50% толщины), и игрок даже не всегда сможет понять, какая именно поверхность находится на тех клетках.
2) У искусственных полов, построенных игроком, таких переходов не будет. То есть они будут заканчиваться резко.
Обуславливается такое решение несколькими факторами:
• Натуральные поверхности (трава, земля...) - это органика. Им достаточно нарисовать ту самую "сыпучую" границу, и всё будет выглядеть нормально. Полы же - это структурированные фигуры, и для каждого из них придётся рисовать свою границу. Не всегда это выглядит красиво (кирпичи как доказательство, см. ссылку на старый пост)
• При строительстве полов игроку будет нужен полный контроль над их внешним видом. Что, если он строит из разных поверхностей какую-то фигуру, и эти выпирающие границы всё ему испортят?
А вот новая декаль (пятно на полу) для крови:
Итоги месяца: октябрь 2024
Как раз она сделана не просто .png картиной, а имеет свою логику. Размер и фигура у неё меняется в зависимости от количества крови на клетке.
GPU Симуляции
Та самая механика, остановившая развитие седьмой серии видео, в октябре была сделана уже в каком-то приемлемом виде.
Итоги месяца: октябрь 2024
Лужа (растекается по холмистому уровню)
Особенность текущей версии симуляций - это то, что они на данный момент никакие не GPU, а CPU.
На время их разработки я решил писать код не в HLSL, а в родном C++. Там намного проще заниматься отладкой и исправлять проблемы; дополнять и менять структуры и вводные данные; прикрепить каждый параметр к Блюпринтам и быстро их редактировать.
Перенести код на видеокарту будет несложно. Он специально написан так, чтобы имитировать выполнение на GPU (параллелизм; константный ввод из клеточных буферов; логика, разделённая по трём стадиям внутри одного кадра; ограниченный по размеру вывод). Но делать это я буду только после полноценной реализации на CPU, а она пока не закончена.
P.S для седьмого ролика, конечно, хватит и такой степени развития. Мне осталось реализовать пару дополнений и на их основе делать футажи.
Итоги месяца: октябрь 2024
Лужа (скатывается по наклону горы в самое низкое место)
Немного информации про внедрение симуляций в игру:
• Их обновление будет привязано к короткому тику, то есть будет происходить 10 раз в секунду. Дело тут не в сложности выполнения (для GPU это легко), а в синхронизации с игровой логикой.
• Пока что внутри симуляции жидкостей есть только одна вода. Как реализовать "гетерогенные жидкости" (когда на уровне их много, и они все взаимодействуют друг с другом) - для меня огромная загадка. Скорее всего, я остановлюсь на том, что в игре симуляцией будет только обычная вода. Остальные жидкости (пиво, вино, кровь, лава...) будут существовать как предметы (например, канистра пива или ящик вина).
• Как жидкости должны взаимодействовать со стенами и крышами, мне неясно. Да, через блоки вода может просто перетекать, но что, если базу игрока, которая вся покрыта крышами, настигает цунами? В таком случае вода сквозь крыши протечь уже не может. И куда ей деваться? Конечно, в область над крышей. Но это получается уже многоярусная 3D симуляция, и хочу ли я таким заниматься - вопрос. Можно, конечно, пойти лёгким путём и просто не давать жидкостям переливаться через блоки... но выглядеть это будет странно (игрок может с помощью стенки начать жить хоть на дне океана, и вода до него дойти не сможет.
Итоги месяца: октябрь 2024
Вода перетекает через блоки и дальше бежит по своим делам
Что ещё в симуляциях не готово:
• "Поверхностное натяжение". Во всех видео сверху вы могли заметить, что вода растекается по чанку уж слишком далеко. Бесконтрольный рост размера лужи надо ограничивать и не давать слишком низким значениям возможность перетекать на соседние клетки.
• Скорость и волны. С самого начала разработки у меня была идея создавать при движении значений (жидкостей/тепла/кислорода) векторную скорость, которую пришлось бы постепенно гасить. Визуально это выглядело бы как волны, создающиеся, например, при сливании воды с горы в яму, которые отскакивали бы от стен. Несмотря на то, что скорость в каком-то виде уже есть в системе, её наличие пока выглядит некрасиво, и это скорее портит всю картину. Будет ли она в итоговой реализации - не знаю. Если я смогу получить что-то вменяемое, обязательно покажу в следующих итогах месяца.
• Связь с соседними чанками. Сейчас симуляция происходит внутри одного чанка, и исправить это тоже несложно. Всё было продумано заранее.
Ассеты и пакеты (моды)
Я продолжаю заниматься фундаментальной системой модов и виртуальных ассетов. Делать это приходится сейчас, потому что много механик в будущем будет от этого всего зависеть, и лучше сразу сделать всё как надо. К тому же, много времени эта работа не займёт: она и сама по себе небольшая (это вам не своя собственная система отрисовки), да и я за прошлые месяцы уже многое для неё подготовил.
В этой главе я бы хотел рассказать про продвижение в разработке двух взаимосвязанных систем: Asset Management (а конкретно, внедрение виртуальных ассетов) и Package System.
Package (пакет) - это мод/DLC. Он содержит все данные о себе (название, описание, иконку, ID, своих авторов), а самое главное - список ассетов на диске, которые с помощью него добавляются).
Ассеты эти непростые. Они виртуальные. Напоминаю, что "виртуальный ассет" - это придуманное мной название для ассетов, сделанных не через редактор Unreal Engine, а прямо через игру мододелами.
Модифицированный мной Asset Manager должен уметь находить все .vasset файлы на диске (но только для модов, включенных в текущую сборку), а также асинхронно загружать их в ОЗУ по требованию (асинхронно = на фоновом потоке, то есть не создавая лагов и тормозов). И это всё было сделано в октябре.
Чтобы ситуация стала намного проще для меня, но намного запутаннее для вас, в игре появился ещё один тип ассета - сессионный (.sasset). Это всё, что существует только в масштабе одной игровой сессии: сорта генно-модифицированных растений / модели роботов / кастомные пушки и всё прочее, что создаётся игрой внутри одного прохождения.
Я понимаю, что тема ассетов для сторонних читателей - это непонятная каша с кучей повторов одного и того же слова. Чтобы не грузить вас ещё сильнее, я просто скажу, что система ещё делается (со средним приоритетом), и до конца 2024 будет сделана точно. Может, я даже закончу с ней прямо в ноябре. Итогом работы станет полноценная возможность создавать и распространять моды.
[Около-GrimWild]
Steam Workshop
Я основательно взялся за реализацию модов и решил внедрить в игру Steam Workshop, чтобы даже во время тестов всё было удобно распространять и устанавливать.
Кстати, на время тестирования я могу использовать Workshop как файлообменник или неограниченное облачное хранилище :)
Объем работы для внедрения Воркшопа через Steam API большой. Как и количество возможностей, которое мне даётся. Я, например, могу сделать свой собственный браузер модов прямо в игре, чтобы игроки могли всё удобно сортировать и фильтровать даже без покидания игры. Но на реализацию такого, конечно, требуется много времени, так что делать это сейчас я точно не стану, ограничусь самым базовым функционалом.
Создание и обновление "предметов" (моды там называются именно "Items") придётся реализовывать внутри игры. Именно так работает Steam. Я рад, что хотя бы редактировать описание можно через клиент Стима, ведь иначе мне пришлось бы создавать свой продвинутый редактор текста, поддерживающий markdown, гифки, ссылки и картинки.
Этапы создания "предмета" в Steam Workshop. Картинка взята из документации.
Страница в Steam
Теперь, когда визуальный стиль полностью определился (и последний кусочек паззла - поверхности - тоже вписался в общую картину), можно начинать оформлять страницу в Steam.
Она нужна только для того, чтобы потенциальные игроки добавляли игру в список желаемого, чтобы не потерять GW на момент выхода в ранний доступ (мои редкие ролики могут просто потеряться в ленте подписок у зрителей, и они всё могут пропустить).
Вместо реальных скриншотов из игры там в первое время будут показаны внутриигровые сцены из видео (а как вы знаете из моих "Послевкусий", далеко не всё на тех кадрах - это уже внедрённые в игру механики). А с описанием всё ещё проще: оно чудесным образом оказалось уже почти готовым. Но скажу я об этой необычной ситуации в разделе "публичной деятельности".
Я должен сразу уточнить, что в публичный доступ эта страница сейчас не попадёт по довольно очевидной причине.
Steam - это хороший источник трафика для YT роликов. Он имеет свои рекомендательные алгоритмы, которые подбрасывают игры людям со схожими интересами. Так вот, я не просто хочу, чтобы случайные люди добавляли игру в список желаемого. Я хочу, чтобы эта страница стала рекламой моего канала. И я говорю сейчас даже не про RU, а про ENG канал.
Кстати про ENG канал: кажется, после выхода из отпуска ко мне всё-таки пришло видение (скажем так, envision) того, по какому пути развивать ролики Making the Game of My Dream. Так что выход дневника разработчика, а точнее Grim Wild Devlog, теперь сдерживает только мой речевой аппарат.
Возможное переименование
Как я уже говорил, мне не нравится название "Grim Wild", и я ищу варианты для его улучшения.
Единственное вменяемое название, которое пришло мне в голову за эти месяцы - это Grim & Wild (читается "Грим-эн-Вайлд").
Оно, во-первых, сохраняет узнаваемость "бренда", так что даже запрос в поисковик старого названия всё равно даст правильные результаты.
Во-вторых, оно убирает проблему слова Wild: теперь его форма определена точно. Это такое же прилагательное, как и Grim. В словосочетании намеренно нет существительного ("Мрачный и Дикий"), это стилистическая деталь. Такая фраза может быть заготовкой под мемы и шутки.
Из минусов: я обнаружил, что есть мультик Grim & Evil, что, конечно, опять создаёт "коллизию названий". С другой стороны, придумать что-то уникальное в наш век уже нельзя, и это не является большой проблемой.
В любом случае, Grim Wild пока НЕ переименовывается ни во что другое. Хоть текущее название мне не нравится, я не могу представить своё творение под другим названием. Оно стало для проекта родным, и я уже ничего не могу с собой поделать.
Посмотрим, что будет дальше, благо альтернативный вариант уже найден.
[Публичная деятельность]
Что там с седьмой серией?
Весь тот порыв вдохновения и мотивации, который я получил после отпуска, я решил направить на Grim Wild. Ролик снова оставался в стороне, потому что я ждал появления нормальных GPU симуляций.
А также, с учётом новой стратегии "пулемёта" я решил выбросить из ролика дополнительную главу о том, что же такое Grim Wild образца 2024 года. Это был огромный текст с кучей деталей и размышлений. Естественно, видеоряда под такой текст у меня нет, и создание интересных сцен на пару минут разговора заняло бы у меня ещё много времени.
Я решил поступить по-другому. Текст про моё видение GW будет конвертирован в описание на странице Steam, ведь идеальнее вариантов для не вышедшей игры не придумаешь.
Этот текст не о том, что в проекте есть. А о том, каким я его вижу на выходе и почему проходящие мимо люди должны им заинтересоваться.
Плюс, так как я буду переводить это описание на английский язык, у меня созрела идея. Можно будет подать заявку на Epic MegaGrants. Конечно, россиянину никакие деньги от американской компании не светят. Но сам факт подачи (опять же, при минимальных усилиях, потому что текст уже будет готов и переведён), а то и выигрыш, может поднять мне мотивацию. Единственный момент: там нужна презентация играбельного прототипа, а он будет готов только в 2025 году.
Блокировка Discord
Discord в России в октябре всё-таки был заблокирован.
Да, активность на моём сервере снизилась, но ключевых людей мы не потеряли. Конечно, это неприятно, но поделать ничего нельзя.
На данный момент я не вижу перспектив развития своего русскоязычного сервера. Я продолжу рекламировать его в роликах, но теперь это можно считать самым обычным сообществом, а не тем, что я строил из него изначально (место для саморазвития и творчества).
И проблема тут не только в блокировке, а в том, что это не особо интересно большим массам людей. Развитие такого сообщества требовало много времени, которого у меня не было. В итоге многие интересные идеи были отложены в долгий ящик, а теперь, судя по всему, отправятся прямиком в мусорную корзину.
[Что будет дальше]
В мире:
• С 1 ноября 2024 вступил в силу закон о реестре блогеров. Посмотрим, как это будет работать и как скоро на блогеров начнут оказывать давление.
В моей работе:
• Продолжение работы над CPU/GPU симуляциями и доведение их до презентабельного вида.
• Продолжение работы над виртуальными и сессионными ассетами, а также над Package System. Возможно, в ноябре я даже сделаю полностью функционирующий Steam Workshop.
• Работа над монтажом седьмой серии. По идее, надо бы уже начать озвучивать сценарий восьмой.
Спасибо за внимание! Этот пост получился огромным. Я писал его два дня подряд (с учётом создания картинок у меня ушло на него 8 часов рабочего времени). Единственное, что я намеренно пропустил - это важное изменение Level-Agnostic (открытого мира). Раздувать и без того гигантский пост я не хочу, лучше расскажу об изменениях в следующий раз.
P.S информация для нетерпеливых: я решил реализовывать "консервативный сценарий" открытого мира, о каком я писал когда-то давно.