Привет всем спонсорам!
Июль прошёл у меня как обычно: много технической работы, разочарование в видео-блогерстве и санкции ЕС как вишенка на торте. Несмотря на 22 банка, отключенных от SWIFT, эти санкции меня не затронули, так что пока живём!
[GRIM WILD]
Да, всё-таки Grim, а не Get.
Переименование проекта: провал
Один из минусов смены названия, озвученных в прошлом посте, оказался определяющим. Речь про "переименование проекта в Unreal Engine". Я ещё тогда знал, что это сделать сложно, но мысль "Ну как-то же переименовал Grim World в Grim Wild, значит, и сейчас справлюсь" давала мне ложный оптимизм.
А проблема вот в чём: при изменении названия в UE ломаются все ассеты и все блюпринты. Объём работы для их восстановления с учётом моей огромной кодовой и контентной базы оказался неоправданно большим. Вот и всё. Куча бесполезной работы, созданной на ровном месте, мне не нужна.
Второстепенными факторами 'против' выступали:
• Путаница зрителей, половина из которых не смогла бы в ближайшее время привыкнуть к новому названию.
• Текущий логотип Grim Wild, который, как оказалось, мне очень нравится. Я понял всю его ценность только когда попытался от него отказаться.
***
Невозможность переименования проектов в UE - это причина, по которой некоторые игры имеют странные названия файлов. Например, Satisfactory - это FactoryGame.exe.
"Тогда нельзя ли оставить старое название в UE и просто переименовать игру в Стиме?", спросите вы. Что ж, если названия Satisfactory и FactoryGame перепутать сложно, то мои - очень легко. Игроки видели бы в библиотеке Steam и на рабочем столе Get Wild, а в папке на диске, в названии окна, в диспетчере задач, в логах и в Crash Reporter'е - некий Grim Wild. Пользы это не принесёт никому.
Отсюда следует, что Grim Wild остаётся Grim Wild'ом, и я ничего не могу с этим поделать. Я застрял с ним, как застряли однажды с неудачным названием романа писатели братья Стругацкие:
"(. . .) Впоследствии, общаясь между собой, мы для простоты называли будущий роман «Возвращение», потому только, что это (посредственное) название у нас уже было, а настоящее (хорошее) название надо было еще придумать. И в авторской заявке будущий роман фигурировал как «Возвращение». И в планы редакционной подготовки его занесли под этим же названием. Так что когда пора настала книжку выпускать, произошло то, что происходило неоднократно и до того, и после: выяснилось, что во всех бумагах, списках, планах и прочих важных документах название уже зафиксировано, и теперь его не вырубишь топором." (Комментарии к пройденному, Б. Стругацкий)
Единственный способ исправить ситуацию - это поменять не слова, а заложенный в них смысл. Так что Wild - это теперь не "дикий" и даже не "дикость", а название планеты, где происходит основное действие (Planet Wild). Так что игра должна переводиться не как "мрачная дикость", а как "Мрачный Уайлд".
Видео про настройки и систему переводов
Итогом месяца стали готовые системы настроек и переводов. О них в текстовом формате я подробно расписал ниже. Также мне захотелось показать всё это вживую, так что держите спонтанно записанный ролик:
Продвинутые настройки: готовы на 100%
Зачем нужна эта система, что в ней такого продвинутого, почему её не было раньше - читайте обо всём этом в прошлом посте. А сейчас о главных нововведениях июля:
• Категории настроек и консоли разработчика теперь можно добавлять модами.
• На основе настроек сделаны твики (настройки игрового баланса, которые можно менять прямо во время игры. Полезно для тестирования) и их шаблоны (тоже в .json формате, так что тестировщики смогут экспортировать свои твики и передавать другим, в т.ч. мне)
• Добавлены настройки ввода (с клавиатуры и мыши):
Для действий (Input Action) из базовой игры я просто адаптировал старую механику (ещё с версии 0.2).
Для действий, добавляемых модами, сделал отдельный механизм для привязки кастомного Lua кода (чтобы мододелы просто писали что-то вроде "function Player:CustomInputAction() ... end", и эта функция при вводе вызывалась автоматически)
• Виджеты в окне настроек (Property Slots) теперь могут иметь кастомное наполнение, которое в том числе можно создавать из Lua. Это будет в будущем полезно для того, чтобы некоторые поля объектов в окне Asset Editor имели своё визуальное представление (отображение всех свойств в игре работает через Property Slots).
Вставить в виджет можно любой контент. Главное, привязать функции для синхронизации его данных со значением настройки (get/set).
Система переводов: тоже готова на 100%
Хорошие новости: в игре теперь есть полностью сделанная система переводов, которая (по классике) полностью поддерживается модами. О том, почему мне не подходит локализация UE, читайте в старом посте (глава "Своя система переводов и локализации").
Система была сделана в июле от начала и до самого конца, на основании спроектированного ранее концепта. В ней предусмотрены все возможные сценарии использования - от самых банальных до сложных и запутанных. Рассмотрим пару спорных и неочевидных моментов:
1) Мододел из Токио делает мод "My Lovely Tentacles", который переводит на английский и японский языки. Игрок из Киото хочет, чтобы установленный мод у него был именно на японском. Что делать, ведь игра по умолчанию поддерживает только русский и английский, а отдельного мода-японофикатора он не установил?
– В данном случае игрок выбирает "Использовать перевод: японский" в настройках мода My Lovely Tentacles, и даже если базовая игра выставлена на "английский", текст из мода будет показываться на японском.
2) Что делать, если игрок установил и включил два мода, независимо добавляющих в игру испанский язык?
– Ничего страшного не случится. Эти два мода добавляют один и тот же язык - `es`. Игрок, выбрав в настройках "испанский", загрузит текстовые элементы их обоих.
3) Чем отличается добавление в мод языка от добавления туда перевода?
– Перевести мод на казахский = просто локализировать контент мода.
Сделать мод, добавляющий казахский язык = дать игроку возможность выбрать этот язык через настройки, чтобы все текстовые ключи (из базовой игры и из всех модов) пытались использовать локализованный казахский текст (если у них такой имеется). Ну и, конечно же, в моде, добавляющем новый язык, можно создать перевод на него же любых текстовых ключей.
***
Ещё факты:
• Кроме терминов "язык" и "перевод", есть ещё термин "культура" (Language, Translation & Culture). Культура - это то, что определяет формат текста, чисел и дат (например, ДД.ММ.ГГ или MM/DD/YY). Но это всё фишки Unreal Engine, так что я на них своего времени не тратил.
• В моей системе поддерживается удобное форматирование текста, по аналогии с FText в Unreal Engine:
Форматировать текст мододелам можно прямо в строке (как на скриншоте) или в Lua (для продвинутых ситуаций).
Насколько я понимаю, в RimWorld ничего такого нет даже близко, и мододелам приходится писать кастомные правила для каждого отдельного текстового блока C# кодом.
• Язык можно менять прямо во время игры, текст на экране обновляется на лету. Опять же, в RimWorld язык можно сменить только в главном меню. (не знаю, почему я продолжаю сравнивать свою игру с RW).
Моды: общий прогресс
В ноябре прошлого года я показывал вам схему полной системы модов. Прогресс её реализации на данный момент такой:
Напоминаю, что всё это - серьёзные механики, а не "временные реализации, которых хватит максимум на первое время, чтобы потом переделать нормально". И то, что они готовились долгое время - это нормально.
[ПУБЛИЧНАЯ ДЕЯТЕЛЬНОСТЬ]
Новый ролик... не делается. Только 10% рабочего времени июля я потратил на Ютуб.
Я охладел к Ютуб деятельности и даже не знаю, что делать дальше. Я каждый день думаю "надо идти работать над роликом", но всё равно работаю над проектом. А если всё-таки начинаю монтаж, то минут через 20 меня уже от него тошнит, и я ничего не могу с собой поделать. На фоне такой безысходности у меня даже появилась идея выложить в открытый доступ сценарий (то есть вместо ролика сделать рассказ о системе отрисовки в формате текста; без взаимодействия с Premiere Pro и нуждой откуда-то брать кучу сцен из игры).
Под конец июля у меня всё-таки появилось вдохновение, так что во время написания этого текста мне кажется, что всё будет нормально... какое-то время. Не знаю, что будет дальше, но одна вещь уже давно всем понятна: мой текущий формат флагманских роликов мёртв. Я не смог в одиночку совмещать их сложный монтаж и работу над игрой.
Я всегда думал, что это плохо, но что, если это в каком-то смысле хорошо? Если раньше я писал вам о том, что мне критически не хватает времени на всё сразу, то сейчас... никакого "всего сразу" и нет, остался просто ГВ и Бусти. Я нашёл своё комфортное место, а текущие спонсоры от только выигрывают от такой скорости работы над проектом.
Правда, именно такая позиция может похоронить мою карьеру. Я должен "выходить в люди", привлекать новых зрителей и спонсоров. Без этого моё будущее неопределённо, так что блогерская пенсия отменяется - никуда я от вас не денусь.
Провальное вступление восьмой серии
В восьмой серии я говорю про оптимизированную отрисовку. Отсюда следует, что вступительная сцена должна быть наполнена десятками тысяч объектов. Я решил, что сделаю один большой синематик, в котором в больших количествах использовались бы сразу все спрайты из игры.
Концепт-арт уровня ААА студий для вступительной сцены. Уровень должен был быть размером 384x192 клетки и содержать более 50 000 объектов на экране.
Когда всё уже было продумано и отрисовано в голове, я постепенно начал сталкиваться с реальностью: в игре просто нет столько контента (игровых механик и готовых спрайтов), чтобы делать объёмные детализированные сцены. Я пытался нарисовать побольше декора, но его всё равно не хватает. Не говоря уж о том, что пешки могут только ходить и... да и всё, больше ничего.
В итоге мне пришлось забросить эту идею и, разочаровавшись и потеряв вдохновение, найти простое и скучное решение. 50 000 объектов во вступлении будут просто расположены по сетке, без всякой логики и смысла.
Когда-нибудь оригинальная сцена всё-таки будет реализована (не зря же я рисовал детальный концепт-арт!). Может, я даже сделаю её основным местом действия событий в трейлере для раннего доступа. Посмотрим.
[ПЛАНЫ]
Я не могу гарантировать вам, что мне в этом месяце хватит вдохновения, чтобы доделать ролик до конца. Но полный рабочий день у меня никто не отменял, поэтому много полезного по итогам месяца всё-таки будет. Хочется отдельно уточнить, что у меня нет выгорания; я работаю над проектом с большим удовольствием.
Спасибо за внимание!