Что вообще за TGW?
Путешествие The Goddess's Will началось задолго до того, как я пушнул первый коммит в репозиторий TGW.
Эта стать��, конечно, не расскажет обо всём подробно (слишком много всего произошло), но определённо даст представление широкой общественности о нашей работе. И просто повеселит. Это легкое чтение.
Для начала опишу проект, которому недавно стукнуло пять лет, чтобы у вас был контекст для дальнейшего чтения.
The Goddess's Will - это изометрическое 2.5D экшн-RPG-приключение, выполненное в эстетике пререндеренной графики конца девяностых - начала нулевых и стилистически опирающееся на жанр Power Fantasy.

Геймплей игры представляет собой приключение с элементами метроидвании, приправленное лайв-экшн тактическими боями. Если коротко, то геймплей сражений похож на противостояние "1 против Х" (как в любой мобе, лол), когда противники имеют разные уникальные способности и с умом используют их, чтобы одержать победу в столкновении с игроком. Более подробно об игровых механиках можно узнать на нашем сайте (гуглится).
История Воли Богини - это миф, оживший в оригинальной продуманной вселенной, с собственным лором и физикой мира.
Движок проекта написан на C# и построен на базе Godot 4+. Он является расширением или замещением стандартного функционала Godot. Однажды TGW-Engine станет открытым, но пока что у нас маловато сил, чтобы грамотно всё довести до ума и опубликовать репозиторий на GitHub.
Мы придерживаемся комплексного подхода в разработке, где эстетика, механика, история и исполнение тесно переплетены между собой. Именно поэтому препродакшн проекта и дорога до технического демо заняли так много времени (5 лет, ё-моё).
Надеюсь, этот бриф дал основное понимание, о какой игре пойдёт речь, и дальше мы можем пройтись по основным этапам разработки, посмотрев на последние годы с высоты птичьего полёта. Эта статья - своеобразный роад-муви нашего проекта.
По ходу рассказа я постараюсь раскрыть основные подводные камни и бонусы выбранных на этапе препродакшна подходов. Не претендую на изложение исчерпывающих решений, так как некоторые из проблем мы решаем до сих пор.

Что за пререндер?
Когда в девяностых появилось первое, робкое 3D в играх, вычислительных мощностей компьютеров (а тем более консолей) не хватало на полноценные операции с объектами в реальном времени.
Однако 3D-модели уже позволяли менее трудозатратно создавать сцены и анимации, а при необходимости легко менять угол отрисовки. Поэтому использовать трёхмерный подход в разработке стало заманчиво.
Логичным решением проблемы высокой стоимости рендера 3D в реальном времени стала процедура пререндера. 3D-модели и сцены подготавливались заранее, рендерились на мощных рабочих станциях, а затем полученные спрайты включались в движок, где цепочки последовательных картинок становились анимациями, а выведенные сцены - насыщенными деталями фонами.
В творчестве есть такая идиома: ограничения освобождают. Так и здесь: сначала пререндер был просто альтернативой ручной отрисовке спрайтов, но затем стал влиять на геймплей, камеру и даже игровой нарратив. Это породило ту самую эстетику пререндеренной графики в типичных игровых жанрах на то время: стратегиях, ролевых играх, квестах.
Были и чисто пререндеренные игры, были и те, что смешивали 3D и 2D для высвобождения дополнительной мощности. Хорошим примером полностью пререндеренной игры является Donkey Kong Country от Rare, вышедшая в 1994 году.

Легендарным примером смеси 2D и 3D пусть станет Resident Evil 1-2-3. Другие известные и даже легендарные игры, использующие пререндеренную графику: Stronghold, Pitfall, Starcraft 1, Age Of Empires 2, Fallout 2, Disciples 2, Diablo 1-2, Command & Conquer и т. д.
Со временем такой подход к производству графики стал не столько необходимостью, сколько осознанным выбором.
Почему пререндер оказался заброшен сегодня?
Эпоха пререндера завершилась с приходом мощных 3D-ускорителей: они решили проблему дефицита полигонов на сцене.
Теперь не нужно заранее подготавливать модели, свет, анимации, чтобы запечь это всё в спрайтшиты, и при каждой небольшой помарке полностью перезапускать рендер. Пререндер оказался заброшен на долгие годы как неэффективный подход, который не только добавляет накладные расходы в разработку и жрёт видеопамять, но ещё и накладывает серьёзные ограничения на творческую команду.
Создавая игру с пререндеренными анимациями, нужно быть готовым к вызовам по сжатию, распаковке, проигрыванию многих десятков тысяч спрайтов, хранению информации. Намного проще закинуть созданную модельку в движок, привязать анимации - и готово.
Или нет?
Сегодня трудно назвать хотя бы три проекта, которые за последние десять лет были бы выпущены в эстетике пререндера в полном 2D. Так зачем в 2025 году создавать полностью пререндеренную игру, состоящую из сотен анимаций?

Корни зла
К сожалению (а может, к счастью?), прежде чем сесть за разработку The Goddess's Will, мы не проверяли маркетинговые гипотезы, не совершали A/B-тестирования на изолированных группах пользователей.
Но зато к началу работы над проектом у меня на руках была текстовая база легендариума вселенной, детализация главных и второстепенных героев, несколько повестей об историях в мире игры и сотни часов споров в Discord на тему "Мог ли вхар быть разложен на зик-хар и выхолощенный вхар?".
Как я оказался с таким набором исходных данных? С самого начала я просто решил делать то, в чём сам бы хотел поучаствовать: воссоздать свой детско-отроческий опыт от игры в Diablo 1 на PlayStation.

Тогда, в начале нулевых, этот опыт передавал совсем другие впечатления, чем мы ожидаем получить от серии Diablo сейчас. Сейчас это бодрый боевик, основанный на луте, прокастах и статах персонажа.
В то время Diablo 1 для меня была настоящим хоррор-приключением, может быть даже survival-хоррором. Каждый новый этаж подземелий был очередным кругом ада, когда ты не знаешь, чего ждать дальше.
Мясник представлялся таким, каким его и видели жители Тристрама - ужасным истязателем плоти. Среди детей ходили рецепты победы над боссом второго уровня подземелья: самым проверенным являлся способ накопить 600 золота, купить свиток окаменения и успеть наложить это заклинание, прежде чем Мясник уничтожит твоего героя.
И так далее до самого Диабло.
Спустя много лет, в университете, я запоздало познакомился с Diablo II. Времени на игры было уже мало: нужно было сдавать курсовую по C++, и переустанавливать умерший FreeBSD на нетбуке Acer.
Ванильную версию я прошёл от силы два раза на Normal по сюжету и забросил. Этот опыт мне не показался захватывающим. Интересным, но не таким, каким я его помнил по детству.
Однако спустя время я вернулся. Теперь я прокачивал сорку и друля в Diablo II Zy-El Mod.

Этот мод вновь подарил мне те самые ощущения survival-хоррора, где каждый шаг может оказаться смертельным, а при плохом планировании можно легко завести свое прохождение в тупик. Diablo II Zy-El Mod отнял у меня сотни часов. На тот момент он стал для меня настоящей Diablo II. Через много лет я познакомился с Diablo 1 The Hell 2 Mod (привет Miker, и goodgame.ru). Этот опыт вновь заставил меня погрузиться в темный мир хардкора. К тому времени я стал ветераном серии Soulsborne игр, но опасные уровни собора, четкое планирование вылазок в подземелья казались мне очень заманчивыми. Они были как тогда.
Я много говорил выше про Diablo, но я не являюсь фанбоем этой серии (в четверку даже не играл), просто так сложилось, что я время от времени нападал на что-то интересное по этой франшизе.
Универ остался далеко позади, началась работа, карьера, хайлоады, микросервисы, бигдейта, скрам, солид, грасп, ддд, бдд, тдд, и тд, и тп. Игры снова были отложены на дальнюю полку. И вот однажды летом, я начал жаловаться другу на игровую индустрию, мол всё потеряно, такого как раньше уже не будет и прочее. А он мне просто сказал: так почему бы тебе не сделать свою игру? Тыж программист.
Ситуация "А че, так можно было что ли?" №1.
А может сначала стать писателем?
Подойти к созданию собственной игры летом 2020 года я решил максимально базированно. Решил написать сначала сюжет игры, прописать персонажей, а потом уже садиться за код.
Однако это мне показалось недостаточно базированным, поэтому я решил сначала написать полную историю мира, разработать физику энергий, географию континентов и разработать разнообразие видов. Да, это база.

Таким образом, я примерно полгода каждый день работал над базовыми концепциями новой вселенной: решал, как династии правителей сменяли друг друга, выстраивал предпосылки падения культа Имени, размышлял, из чего состоит воздух и почему в моей вселенной нет солнца.
В какой-то момент я не удержался и скачал GameMaker. Мне показалось, что такого простого инструмента будет достаточно для моей задумки (я никогда так не ошибался).
За месяц неспешно изучил саму среду и GML (встроенный скриптовый язык). GameMaker показался мне очень удобным, нетребовательным к пользователю. А GML был хоть и сильно кастрированным и запертым внутри клетки IDE, но сносным языком, чтобы реализовать ходилку-бродилку в стиле Diablo 1.

После, вместе с историей, появились и основные персонажи, антураж приключения окончательно определился: хардкорный gore-стилизованный hack-n-slash! Да!
На GML было написано уже почти 8к строк кода (обработка анимаций, передвижения, боя и т. д.), 8-позиционные спрайтшиты персонажей и другие ассеты взяты из каталога itch.io.
Разработка шла спокойно: то код писал, то лорные истории из новосозданной вселенной, которыми делился преимущественно с женой и друзьями.
Завершался первый год препродакшна, лайнкаунтер Yacc приближался к 10к строк кода.

В конце 2021 года ко мне присоединился мой университетский друг Сергей SquaII - прекрасный программист из финтеха и исследователь геймдизайна широкого спектра игр (от глубокого ретро до современности), которого я довольно долго звал принять участие в эдакой шалости.
Вместе с ним наши воскресные лорные посиделки с другим моим другом Андреем MaKensei приобрели признаки командности. Теперь была расширена и углублена моя изначальная геймплейная идея, и мы продолжили работать с детализацией геймдизайна, и пилить движок не забывая о лорных историях.
Примитивная кликалка с любопытными идеями механик постепенно оформилась в системный геймдизайн, добавилось удобное WASD-управление и боёвка, основанная на комбо.Ситуация «А чё, так можно было что ли?» №2.
Так прошёл ещё год. Мы глубоко проработали геймдизайн и лор мира, создали огромную приватную лор-Wiki на 400+ статей, досконально прописывающую базовые аспекты игровой логики, сюжета, персонажей, физики мира.
Задумка стала настолько масштабной, что стало понятно: идея взять бесплатные ассеты просто с itch.io - это смешно. Ты ж программист, у тебя должны быть какие-то накопления, чтобы распоряжаться ими неосмотрительно. Было решено нанять художника, чтобы начать работать над спрайтами.
После некоторых мытарств, которые я не буду описывать тут, чтобы не растягивать повествование, мы вышли на Евгения Spaaace. После краткого знакомства мы рассказали ему про идею проекта и пригласили к возмездному сотрудничеству. С порога прочитали многочасовую лекцию по лору игры, жизненному пути каждого из персонажей и чем вхар отличается от эфира.
Визуал сдвинулся с мёртвой точки. Так наступила эпоха продакшна.
Как обрести друзей и исполнить Волю Богини?
Перед началом разработки спрайтов мы решили порисовать концепты персонажей, чтобы быть точно уверенными, как они выглядят. Концепты локаций тоже решили порисовать, чтобы понимать, в каком антураже будет происходить приключение.

Потом появилась мысль, что такие концепты неплохо было бы замоделить в 3D. Идея рисования спрайтов вручную быстро стала казаться нереализуемой. И было решено делать полностью пререндеренную графику. Историческая штукня. Тем более это как раз матчилось с моей оригинальной затеей.
Ситуация "А че, так можно было что ли?" №3.
Но делать решили персонажей именно в low-poly, чтобы это было дешевле в производстве. Я взялся за поиски моделера, и вскоре мы нашли фриланс 3D-художницу Elsep (жаль, что не получилось сохранить сотрудничество <3, но спасибо тебе, Настя!), которая взялась преобразовать красивые концепты в low-poly модели персонажей. Однако по ходу работы оказалось, что проще моделить high-poly персонажей, а потом снижать полигонаж до необходимого. Но последнее показалось нам непростительной растратой визуала и было решено делать полноценные high-poly модели, чтобы потом преобразовать их в спрайты сохраняя красоту!

Ситуация "А че, так можно было что ли?" №4.
Но дальше нас ждало неприятное открытие. Оказывается, 3D-художники обычно не умеют (или не всегда умеют) делать анимации. Этим занимаются отдельные специалисты, которым тоже нужно платить. Хорошо. Надо, значит надо. Мы же игру всё-таки делаем. Ищем аниматора!
Разместили объявление в группах в телеграме и ВК и приготовились ждать. Но ждать не пришлось долго: в первую неделю мы получили около 60 откликов с портфолио. Одни специалисты просто искали любую подработку, но некоторых зацепила именно наша идея.
Хороших портфолио было много, и пришлось провести много времени в совещаниях и отборе идеальных кандидатов. Сошлись на том, что выберем двух и дадим им оплачиваемое тестовое задание. У кого лучше получится, того и возьмём.
Так к нам попал Костя (Prepadoshni). Первоначальной идеей было просто адаптировать готовые анимации с Mixamo (сервис с бесплатными motion-captured анимациями), но Костя, как фанат труъ-классики, предложил за приемлемые ресурсы сделать все необходимые 200+ анимаций вручную, чтобы мы могли лучше передать дух той самой классики. Фууууух…
Ситуация "А че, так можно было что ли?" №5.

Разработка под угрозой!
Летом 2023 года спрайтшиты потекли в распухший от кода к тому времени проект на GameMaker. Пришли к 16-позиционным анимациям передвижения и 8-позиционным анимациям других действий. А еще пришлось неплохо повозиться, чтобы хорошо выставить нейтральный, но красивый свет.
На первых этапах огромные спрайтшиты нещадно жрали видеопамять и роняли GameMaker. Про работу с анимациями в полностью пререндеренном стиле можно написать отдельную статью: как мы сжимали шакалов, упаковывали спрайтшиты и строили автоматизированный пайплайн рендер->движок. Может быть, я так однажды и поступлю.
Так вот, чем больше мы работали с GML, тем более ясно было, что GameMaker не потянет нашу идею: отсутс��вие объектной системы, слабая работа с анимациями, проблемы с производительностью. Затея разработки игры была под угрозой!
И вот однажды летом 2023 года было принято волевое решение переезжать с GameMaker на… а на что? Что у нас есть на рынке? Unreal Engine для нас великоват, хотя C++ и казался заманчивой идеей. Unity? После недельного общения с этим движком у меня сложилось не лучшее о нём впечатление: много легаси, странная политика владельцев (Unity Runtime Fee), громоздкая IDE, слабая поддержка от создателей. Хотелось чего-то альтернативного, нестандартного, под стать духу нашего проекта. И тут я наткнулся на Godot.

Движок только что обновился на 4-ую версию, поддерживал C#, а ещё Godot - это open source-движок с крутецким комьюнити. Открытое ПО я уважаю с юности, поэтому решил попробовать. И остался в восторге! Простой в освоении, быстрый, с отличной поддержкой. Недостающий функционал можно написать самим: либо через сорцы, либо через систему плагинов.
Время у нас было неограниченно, так почему бы не попробовать? Таким образом за полгода мы мигрировали весь актуальный функционал с GML на C# (я знаю, звучит обскурно). Мы в своё время плотно писали на Java, так что C# не оказался каким-то big deal в плане привыкания. Теперь писать код с точки зрения микро- и макроархитектуры было одно удовольствие.
После ограниченного скриптового языка GML C# казался отдушиной.
Ситуация "А че, так можно было что ли?" №6.
Как я стал лучшим эйчаром на рынке
- Алло, вы эйчар?
- Нет! Я вообще-то игру разрабатываю!
А после нам снова понадобился 3D-художник. Пошли уже проверенным способом - группами в телеграме и ВК. Только оставляя свой телеграм под постами в группах, я рассчитывал на 50 откликов за неделю, но мы получили 300 откликов только за первые 48 часов, и горшочек продолжал варить. Люди шли и шли, портфолио сыпались и сыпались.

Пришлось разбить найм на 5 этапов: скринин�� портфолио, заполнение анкеты на гугл-формс, созвон в дискорде, оплачиваемое тестовое задание, приём в команду. Мы честно отсмотрели портфолио каждого, кто прислал нам работы. Я ответил каждому в телеграме или на почту с кратким подготовленным фидбеком.
Всего набралось порядка 450 портфолио. На этап с заполнением анкеты прошло 15 человек. Далее мы отфильтровали понравившиеся анкеты, и осталось пятеро наиболее подходящих специалистов. По итогам личного общения на звонках осталось двое: парень и девушка. У них были отличные портфолио, подходящие под нашу тематику, а также хорошая анкета и впечатление от общения.
По результатам двух оплачиваемых тестовых заданий победила Маша Maki. Это был недельный выматывающий марафон, но я могу гордиться тем, что мы никого не обидели, всем ответили. И на пару решивших поскандалить претендентов (мол, недостаточно подробный фидбек! И вообще, я могу творить в любом стиле!) была десятка тех, кто говорил, что это лучший HR-процесс, который они видели в карьере.
И даже те, кому мы отказали на позднем этапе, инициативно желали успеха проекту и благодарили за общение и такой опыт. Я был очень польщён. Значит, мы что-то делаем так. А вот что меня обескуражило, так это то, что снять вакансию сложнее, чем её опубликовать. Да ещё и всякие недобросовестные каналы бессовестно перепечатывают себе все вакансии подряд, в результате чего отклики на наш текст приходили мне ещё месяцев шесть. Каждый раз приходилось отвечать, что вакансия закрыта. Душераздирающе!
Теперь нам предстояла объёмная работа по серьёзной реновации технической и визуальной составляющей моделей. Наши первые модели, как выяснилось, были созданы с ошибками, из-за чего с анимациями были определённые проблемы. Хорошо, опыт получен. Level Up!
Это невозможно остановить!
Дальше мы взялись за разработку GUI. Изначально я закладывал на разработку интерфейса пользователя полгода. Но на деле нам понадобился ровно год, чтобы довести GUI до финала. Про разработку GUI, может, стоит написать отдельную статью.
Там точно есть о чём рассказать!

- Алло, вы эйчар?
- Да, я эйчар.
К середине 2024 года мы пришли к мысли, что пора бы озвучить игру! Ведь негоже брать бесплатные звуки и заталкивать их в столько лет кропотливо собираемый проект.
Открываем новый набор! (неееееееееееееееееет!)
Всё по старым рельсам: публикация вакансии звукорежиссёра/композитора, сорванная с петель дверь в личке, ревью сотен портфолио (по итогу откликнулось около 500 человек), фидбек каждому, опросник для 16 отважных на сундук мертвеца, 5 созвонов, 2 оплачиваемых тестовых, 1 победитель.
Плюс ещё 50 откликов за последующие полгода из-за репостов в каналах (кстати, рекордсмен написал нам всего три месяца назад! Где он выкопал вакансию?). Победителем вышла Марго mrgrt_music.
После данного предприятия я понял, что подход нужно как-то менять: я просто не выдержу ещё одного раунда такого отбора. Я был морально выжат, но доволен. Мы действительно попали в точку с кандидатом.
Работа над звуком стремительно закипела. Для начала написания музыки мне пришлось снова прочитать 4-часовую лекцию по основам мифологии мира, истории Императорской ложи, расам, фракциям и, конечно же, про вхар, эфир и бо. Искусство требует жертв.

Забегая вперёд: за год мы озвучили каждый игровой элемент, написали несколько саундтреков и записали живую озвучку для персонажей и врагов. Хорошо, опыт получен. Level Up!
Ситуация «А чё, так можно было что ли?» №7.
Осенью 2024 года мы осознали, что игре не хватает ещё одной важной вещи. Так-так, что у нас есть: программный код в избытке, лора и сюжета хоть отбавляй, моделей нужное количество, анимации в движок не помещаются, звуки и музыка растут на глазах.
Что же мы забыли? Точно - визуальные эффекты. Выяснилось, что никто из команды не умеет такое изобразить, и нужен ещё один человек. Ещё один?
Бюджет начал проседать, и ещё один круг адского найма не предвещал ничего хорошего лично для меня. Но делать нечего, я разместил объявление. Зажмурившись, стал ждать, когда начнут накатывать волны VFX-дизайнеров. Однако последовало всего 16 откликов. Ну хотя бы тут chill... И снова: отбор портфолио, опросник, личные звонки, два претендента, оплачиваемые тестовые задания. После некоторых сложностей мы всё же сделали предложение Ксении Terekhova.

Производство визуальных эффектов оказалось очень сложной и кропотливой задачей. Если мы хотели, как и раньше, следовать подробным концепт-артам и оригинальной идее, то нужно было грамотно выстроить итеративный процесс, чтобы поэтапно порождать и наращивать ценность. Возможно, мне следует написать статью о работе с визуальными эффектами в нашей игре.
Хорошо, демка на позднем этапе. Но что делать с маркетингом?
Что делает программист в любой непонятной ситуации?
Правильно. В любой непонятной ситуации программист делает сайт.
Сначала была идея создать простой сайт-визитку, чтобы было куда отправлять людей, которые хотели бы ознакомиться с проектом. Мы покрутили-повертели уже существующие лендинги по видеоиграм и с удивлением обнаружили, что нет почти ничего годного для референса.
Сплошные вылизанные, зачищенные под флэт-дизайн арт-галереи. Meh-h. Вы же помните, что в нашей компашке преобладает база? Поэтому поступить решили максимально базированно и создать дизайн с оглядкой на видеоигровые журналы 90-х - начала нулевых с их неаккуратной вёрсткой и аляповатыми страницами. Засели за чтение архивов Playstation Magazine за прежние годы, собрали слепок эпохи, взяли уже готовые элементы из дизайна нашего UI, хорошенько их обточили, и те встали как влитые - готово! Настоящий винтажно-модерновый веб-дизайн!

Сайт открыт для посещений — милости просим.
Ну теперь-то всё? Можно уже показать проект друзьям?
Погодите. У нас ведь нет сайта команды. Нужно срочно его создать! Идея для стилизации сайта была выбрана как-то сама собой - Windows 98. Мы решили чуть-чуть заморочиться, и воссоздать те самые ностальгичные табы из народной операционки 90х. ImagineTavern ждет тут!

Над сайтами карпела выжимая все соки из реакта, моя жена, Kate Swann :) А теперь стоит надо мной следя, чтобы я не пропустил ссылки на всех причастных к этой истории людей.
Теперь можно.
Перед решительным прыжком
Сейчас начало осени 2025. Мы практически завершили техническое демо со всем контентом, который для него задумывали, завершили подготовку к маркетингу, создали страницу в Steam. За время разработки мы написали полноценный саб-движок изометрической 2.5D игры со всеми важными пайплайнами разработки ассетов. Собрали несколько обширных локаций с рабочей вертикальностью, кастомным пасфайндингом, системой принятия решений для ИИ противников. Постепенно полируем боевую систему, чистим демку от багов и готовимся к публикации полноценного геймплейного трейлера для технического демо.
История The Goddess's Will ждет своего часа, как и широкий ростер персонажей, готовых сойти со страниц вики в мир игры.

Ушла эпоха... Наши знаменитые в узких кругах десятичасовые (лохматые) созвоны по средам и воскресеньям ушли в прошлое. Теперь иногда кратко синкуемся по задачам и больше отдыхаем, ведь впереди предстоит поднятие целины. Приятно работать в своём темпе, не завися от сроков и об��щаний. Но так не будет всегда. Поэтому мы ценим момент.
Теперь остались считанные месяцы до полноценной репрезентации продукта для комьюнити. Мы много страдали, старались - и наконец заветный момент спокойствия.
Мы долго держали нашу разработку в строгом секрете, чтобы она настоялась, напиталась идеями и была максимально серьёзно проработана во всех направлениях, чтобы было не стыдно показать её людям, да и отвлекаться от творческого процесса на маркетинг совсем не хотелось.
Думаю, рассказ получился очень эклектичным, но эклектичной была и сама разработка, так что тут как раз передан дух времени.
Возможно, за этой статьёй последуют другие, более узко направленные и технически богатые. Рассказать есть про что: начиная от пайплайнов разработки графики до интересных ноу-хау в программном коде и нюансы создания звука.
Если хотите оставить комментарий, но не знаете, какой именно, то напишите, если знаете свежие (да и не очень) игры, похожие на нашу визуально. Напишите!
В завершение скажу, что за эти годы много воды утекло, изменилось много контекстов внутренних и внешних.
Проходя через все те трудные периоды, можно было усомниться в самом пути.
Но сейчас я думаю, что шалость удалась.