Привет всем спонсорам!
Апрель пролетел для меня уж как-то слишком быстро. Я в очередной раз не брал на себя новых обязательств и весь месяц занимался старыми задачами. Тем не менее, все запланированные дела я доделать успел, и у меня даже нашлось время поэкспериментировать с визуальным стилем.
[Grim Wild: техника]
Логическая стыковка: продолжение работы
Про то, что я занимаюсь логической стыковкой, вы и так знаете (1) (2). Новинки апреля у нас такие:
Наконец-то были сделаны Общие компоненты, которые будут использоваться в модульных постройках и коллективном разуме. Их реализация имеет свои особенности и для сторонних людей выглядит как костыль (хотя всё ровно так и планировалось изначально).
Дело в том, что обычная стыковка (которая у меня называется Сильная/Strong) создаёт логические цепочки, имеющие явную иерархию. У каждого объекта там есть свой родитель и владелец.
Родитель (Parent) - это та сущность, к которой мы пристыкованы. Например, родителем лежащего в ящике предмета является инвентарь ящика (Inventory Component).
Владелец (Owner) - это первый мировой объект (не компонент) вверх по цепочке. Например, владельцем (того же самого) лежащего в ящике предмета будет сам ящик.
Так вот, иерархия эта используется в:
1) Сохранении игры, где каждый родитель ответственен за сохранение своих детей;
2) Системе переадресации запросов (я про неё уже писал, это то самое "мясо в холодильнике не портится, потому что холодильник даёт ему низкую температуру окружающей среды");
3) Синхронизации некоторых параметров цепочки: коллизии, видимости... (см. ниже);
4) (техническое) Хранении на ребёнка жёсткой ссылки. Как только ребёнок оказывается "сиротой", он утилизируется сборщиком мусора.
Общие компоненты - исключения из всех этих правил. На них ссылаться может сразу много объектов, и никакой лишней ответственности у родителей создаваться не должно. Я назвал такой вид стыковки Слабым (Weak).
***
Я провёл тестирование всей этой монструозной системы. Оно длилось пять полных рабочих дней. Мне было важно обнаружить все возможные баги и нестыковки (ха-ха, нестыковки в стыковке), потому что на её основе будут строиться уже следующие игровые механики. Итог тестирования: всё идеально! Всё работает ровно так, как я себе представлял.
***
Я начал делать редактор ассетов (Asset Editor). Он появится в игре в составе огромного редактора модов (Mod Editor), через который можно будет делать всё: ассеты, переводы текста, анимации, кривые, пресеты сложности, спрайты, иконки, композитные текстуры, мировые структуры (точки интереса), звуки/музыку и Lua-скрипты (но всё-таки предпочтительный способ писать скрипты - это внешний редактор вроде VS Code. Тратить своё время на изобретение колеса я не собираюсь).
Работа над редактором всё ещё находится в процессе. Моя основная задача сейчас - прикрутить к нему создание виртуальных ассетов и редактирование логической стыковки.
Почему мне так сильно нужен редактор ассетов уже в 0.4? Во-первых, чтобы связать его с недавно сделанными системами, пока я ещё всё хорошо помню.
А во-вторых, потому что создавать и редактировать ассеты из базовой игры я тоже вынужден через свой же Asset Editor! Стыковка и ассеты - мои самописные системы, и пытаться встроить их в рабочий процесс Unreal Engine оказалось сложнее, чем написать свой редактор с нуля (как было с редактором спрайтов).
***
Сделаны самые разные мелочи: синхронизация свойств цепочки стыковки, возможность отстыковки и перестыковки, правильный жизненный цикл объектов, а ещё возможность проверки цепочек на бесконечные петли (когда конец цепочки оказывается пристыкован к её началу).
Синхронизация свойств цепочки - это процесс наследования детьми каких-то свойств родителей. Например, видимости и коллизии. Скрывая человека, вы скрываете и все его части тела и экипировку.
***
Все эти нововведения звучат не так эпично, но объем их работы был реально большой. И так всегда! Самые невзрачные фичи занимают больше всего времени на разработку и отладку.
Активная разработка логической стыковки завершена. Конечно, я её ещё буду подправлять и местами дополнять, но всё самое сложное уже позади.
Документация для мододелов (обновление)
Краткий контекст: после недавнего перехода на китайский плагин UnLua я решил заодно пересмотреть свои планы на онлайн-документацию проекта. В прошлом году я собирался использовать JetBrains Writerside, но теперь я нашёл альтернативу получше.
Это Docusaurus, разработанный страшной ужасной запрещённой на территории Российской Федерации экстремистской террористической организацией Meta.
Поддерживается всё, что мне нужно: светлая/тёмная тема, версии страниц и переводы на разные языки. Самое главное - отсутствие лишнего мусора.
Хоститься она всё также будет на GitHub Pages с возможностью редактирования сообществом (для переводов на разные языки).
[Grim Wild: визуал]
Текстуры материалов (идея)
В текущем визуальном стиле игры есть одна проблема: материал, из которого строятся постройки, даёт спрайтам всего лишь свой оттенок. Получается так, что не всегда можно отличить один материал от другого (стол из меди VS стол из дерева), а для кое-где простая однородная заливка вообще не подходит (например, кирпич).
Поэтому я решил попробовать сделать так: использовать "маску оттенка материала" у спрайтов ещё и для наложения его текстуры:
Рабочий стол, построенный из разных материалов. Рендеры из игры (Unreal Engine)
По итогу имеем:
+ Вместо равномерной заливки одним цветом поверхности имеют детали. Это особенно хорошо для больших областей блоков, которые сейчас выглядят убого (см. ниже);
+ Всё полностью подходит для моей системы отрисовки. Там ничего не сломается;
+ Для мододелов новой работы не создаётся: им всё равно пришлось бы делать маску оттенка (ровно та же маска используется для оттенка + текстуры материала одновременно);
– Верх и передняя сторона построек имеют разную перспективу, но туда накладывается одна и та же текстура материала. Решением может стать наложение двух разных масок (MaterialTop, MaterialSide), но это добавит лишних вычислений и дополнительной работы мододелам;
– Постройки могут сливаться с полами. Почти у каждого материала в игре есть свой пол (деревянный, кирпичный, земляной, каменный, ...), но решения этой проблемы всё-таки есть:
Концепт из Figma (кадры не из игры)
Это пока просто идея. Лучшее, что я могу с ней сделать - это испытать на практике. Вы увидите такой визуал уже в 8 серии, и тогда мы поймём, красиво ли это выглядит в реальных сценах.
Конечности (эксперимент)
Я в очередной раз решил попытаться уйти от самой очевидной детали, оставшейся в проекте со времён "своего RimWorld": отсутствия конечностей у людей и животных.
Успех это или провал - пока мне сказать сложно. v3 выглядит как самый удачный вариант из представленных, но даже он имеет проблемы. Во-первых, детализация всех людей сильно возрастает, и они сразу выглядят не так "мультяшно". Всё становится каким-то слишком серьёзным. Во-вторых, оставить детализированные ноги без анимации было бы слишком нелепо, что приводит нас к усложнению работы на ровном месте.
UPD. на следующий день: а ещё v3 выглядит ужасно смешно. В плохом смысле.
Летающие в воздухе кисти появиться в игре ещё могут (они будут пристыкованы в слот "Hand", куда также пристыковываются предметы в руке), а вот ноги, скорее всего, нет.
Спрайты
"Чтобы отпраздновать появление в игре COW-компонентов, я решил нарисовать корову", - должен был сказать я в прошлом месяце. Правда, как вы знаете, с художественными навыками у меня всё плохо, и корова в тот момент была похожа то ли на лошадь, то ли на огромную мясистую крысу. Пришлось отложить публичный выход этой шутки на целый месяц.
Главное обновление апреля - это визуальный стиль растительности. Стволы и ветки деревьев стали намного лучше (не обошлось без вдохновения от нейросетей), а их высота - ниже.
Верстак (рабочий стол) пришлось сделать максимально "нетехнологичным", потому что его игрок сможет строить даже на ранних этапах развития (где-то на стыке аборигенов и переходного периода).
[Публичная деятельность]
В этой сфере публичных изменений снова нет, но внутри кое-что всё-таки происходило. Во-первых, я наконец-то закончил формирование визуального стиля для своих англоязычных роликов. Он будет примерно таким же, как на русскоязычном канале, но с другой цветовой палитрой и фоном... причём таким же мыльным, как и на основе. За это спасибо битрейту Ютуба, с которым я ничего поделать не могу. А во-вторых, ↓
Попытка включения монетизации: провал
Я предпринял очередную попытку восстановить на моём канале монетизацию. Напоминаю, что в 2024 году (после блокировки Ютуба в России) Google заблокировал всех россиян на своей рекламной платформе AdSense.
На этот раз я действовал серьёзно, и мне даже казалось, что всё будет позитивно, и в итогах месяца я сообщу вам "очень хорошие новости". Хороших новостей не случилось. Процесс обхода блокировки оказался для меня неподъёмно сложным, и даже наличие знакомых в неподсанкционных странах не помогло.
Ведь оказалось недостаточно просто создать фейковый AdSense-аккаунт, зарегистрированный на европейскую SIM-карту. Для того, чтобы монетизацию снова не отрубили, надо подтвердить свою (европейскую) личность и (европейское) место жительства.
Мне надо иметь не просто знакомого, который на всё это согласится. А того, кто после всех этих манипуляций передаст свой подтверждённый аккаунт мне, чтобы я залогинился через него в партнёрской программе Ютуба.
И это я даже не говорил про непосредственный вывод денег. Для этого нужно получить выплату на (европейский) счёт, заплатить оттуда (европейские) налоги, а потом ещё обходными путями перевести остатки в Россию, где я, вроде как, тоже должен буду заплатить налоги, чтобы моё "теневое иностранное финансирование" не переросло в будущем в проблему.
Да, эта схема была бы рабочей, если бы речь шла про большие деньги. Если бы мои ролики собирали миллионы просмотров в месяц (вместо 30-50 тысяч просмотров раз в полгода), и кому-то было выгодно заморачиваться с этим всем ради солидного %.
***
Я оказался в самом эпицентре урона от санкций. Да, я говорил это уже много раз, но это правда. Крупные блогеры, имея большие возможности и большие ставки, могут позволить себе решить проблему по-взрослому. Мелкие каналы, которые только-только начинают свой путь, сразу понимают, что карьера RU блогера в 2025 - гиблая затея, и даже не стоит пытаться.
А я нахожусь посередине: я не могу всё бросить, потому что это уже моя карьера. Но я также не имею достаточных возможностей, чтобы хоть что-то исправить.
Если вы поищите в интернете "Как подключить монетизацию в Ютубе", то найдёте много статей по типу "Легкое подключение монеты". Если вы почитаете, что же "лёгкого" в этих способах - то это либо реклама сомнительных посредников (нет, я не собираюсь отдавать свой канал в чужое владение), либо "всё очень-очень просто. Нам всего лишь нужна иностранная симка, банковский счёт и ИНН, чей-то адрес и какой-нибудь местный документ". Действительно же, легче некуда!
[Планы на май]
На майских праздниках я собираюсь отдохнуть. А после них начать полноценно работать над восьмым роликом. Как бы контринтуитивно это не звучало, но провал с монетизацией вдохновил меня делать видео здесь и сейчас, а не откладывать его создание до лучших времён. Теперь я точно знаю, что лучше не будет, и та точка, в которой я нахожусь сейчас - и есть пик тех самых "лучших времён" текущего года.
Параллельно я буду заниматься в ГВ редактором ассетов, активным мозгоштурмом насчёт порядка реализации первого игрового контента и рисованием новых спрайтов.
Спасибо за внимание!