Содержание
В прошлой части я собрал прототип HellTrip с боем, комнатами и прокачкой. Проверять механику на кубах удобно, но уже очень хочется увидеть ту игру, которая у меня в голове. Поэтому следующим этапом я занялся артом.
Начать решил с главного героя: взять готовый концепт, добавить персонажа в игру и сделать ему бег. После нескольких подходов к анимации я оказался в Meshy и Mixamo, а HellTrip решил переводить в полноценное 3D.
Сначала образы, потом игровые ассеты
Работу над графикой я разделил на три этапа. Сначала найти референсы или создать концепты — определить, как выглядят персонажи, монстры, дома и предметы. Затем превратить эти изображения в ассеты для игры. А персонажей ещё и анимировать.
С первым этапом удалось продвинуться далеко. Я нагенерировал много изображений и собрал каталог персонажей и объектов окружения. Позже он стал набором исходников для генерации моделей: можно выбрать конкретную картинку и попробовать получить по ней 3D.

Но начал я с персонажа-программиста. Его образ уже был готов: тёмная куртка, рюкзак и клавиатура за спиной. Оставалось заставить его двигаться.

Первая попытка: сгенерировать кадры бега
Самым простым решением казалось попросить ChatGPT нарисовать спрайты. Для каждого кадра анимации — отдельная картинка, на которой персонаж немного меняет положение. Последовательно показываем изображения и получаем бег.
После нескольких попыток стало ясно, в чём проблема: от кадра к кадру менялся сам персонаж. То исчезал элемент одежды, то отличались размеры, то менялась причёска. Вместо одного героя в разных позах получались немного разные герои.

Для отдельной картинки ещё можно выбирать удачный вариант. Здесь же нужна целая последовательность, в которой всё согласовано.
А ведь бег — только начало. Потом понадобятся удары, рывки, получение урона и другие движения. И всё это для разных персонажей. Если уже одна анимация требует столько попыток, дальше работы станет только больше. В моих пробах этот способ нужного результата не дал.
Вторая попытка: собрать персонажа из частей
Тогда я решил попробовать иначе. Взять одно качественное изображение, разделить персонажа на части, сгенерировать недостающие фрагменты и собрать риг — систему костей, с помощью которой можно двигать эти части.
Так во всех кадрах оставался бы один и тот же герой. Не нужно было бы заново генерировать его целиком для каждой позы.
На практике результат оказался ещё хуже, чем с отдельными спрайтами. Довести такую сборку до нужного качества у меня не получилось.

Возможно, с ручной отрисовкой и доработкой я бы продвинулся дальше. Но у HellTrip есть условие: это ИИ-эксперимент. Я придумываю, ставлю задачи и оцениваю результат, а техническую работу поручаю ИИ. Вручную рисовать недостающие части и исправлять кадры я не планирую.
Поэтому продолжил искать другой способ.
Третья попытка: видео вместо спрайтов
Следующая идея — сгенерировать видео, на котором персонаж бежит, а затем нарезать его на кадры.
Получить подходящее видео тоже оказалось непросто. Сначала пришлось искать сервис, затем пробовать генерацию: то появлялся ненужный фон, то камера показывала героя не так, как требовалось, то результат снова расходился с задумкой.
В этом примере персонаж бежит, но вместе с ним я получил целое подземелье и движение камеры. Сам по себе ролик выглядит неплохо, однако для игровых кадров фон и ракурс опять не подошли.
До нарезки я в итоге даже не добрался: подходящего исходного видео так и не получил.
Но даже удачный бег решил бы только часть задачи. Для каждого персонажа нужны удары, рывки, получение урона и другие движения. Каждую такую анимацию пришлось бы генерировать отдельно. Допустим, бег получился. В следующем ролике с ударом у того же героя уже могут измениться детали одежды, пропорции или формы тела.
Получалась та же проблема, что со спрайтами: нужно сохранять внешность одного персонажа. Со спрайтами она менялась от кадра к кадру, а с видео её пришлось бы согласовывать ещё и между разными анимациями. И повторять этот процесс для всех героев и врагов. После того, сколько попыток потребовал один бег, рассчитывать так подготовить все движения мне уже не хотелось.
Есть и другой способ: записать на видео собственные движения, а затем перенести их на персонажа. Но тогда каждое нужное движение мне пришлось бы исполнять и записывать самому. Для моего эксперимента это не подходит: HellTrip я делаю в режиме «только ИИ».
К этому моменту я уже основательно разочаровался. Задача «добавить своего героя и сделать ему бег» оказалась гораздо сложнее, чем выглядела вначале.
Поиск сервиса и подписка на Meshy
Тогда я подумал: можно попробовать получить 3D-модель персонажа, а анимацию взять, например, в Mixamo. Так можно было бы один раз получить модель героя и применять к ней разные движения, сохраняя его внешность.
Начал искать сервисы генерации 3D и нашёл Top 3D AI — сайт с рейтингом и сравнением разных решений. Попробовал бесплатные варианты, но качество полученных моделей меня не устроило. Стал выбирать платный сервис.
В итоге выбирал между Tripo и Meshy. У обоих нашлись плюсы и минусы, а подписку я купил у Meshy. По моим ощущениям, там можно было получить больше генераций за те деньги, которые я собирался потратить. Подробного расчёта я не делал — это было моё впечатление при выборе.
Сюда и пригодился каталог. Я стал загружать свои концепты и смотреть, какие модели сервис по ним построит. Для героя использовал в том числе изображение в А-позе — с немного отведёнными от тела руками.
Первый результат меня поразил. После попыток со спрайтами и видео я получил объёмного персонажа, которого можно рассмотреть с разных сторон. Получилось быстро и на первый взгляд красиво.


На скриншоте заодно видно, насколько плотной получилась сетка: у одного героя 1 116 294 треугольника. Что с этим делать и как я пробовал уменьшать их количество, расскажу в следующей статье.
В Meshy нашлись и инструменты для следующих этапов: ретопологии, развёртки и текстурирования. В тот момент казалось, что здесь можно пройти значительную часть пути от картинки до игрового ассета.
Герой наконец побежал
Изначально модели были способом решить задачу с персонажем. Но после первых результатов возникла следующая мысль: если я уже могу получать объёмных героев и окружение по своим концептам, почему бы не сделать всю игру в 3D?
В прошлой части я только пришёл к 2.5D. Теперь решил двигаться дальше.
Взял модель главного героя и загрузил её в Mixamo. После разметки суставов сервис построил скелет, и получилось применить анимацию.
Для сравнения в этой статье я заново сгенерировал героя по исходному образу. Так можно посмотреть, как один и тот же замысел прошёл через разные подходы.
Наконец я увидел своего персонажа в движении. А с учётом библиотеки бесплатных анимаций Mixamo этот путь выглядел достаточно перспективным, чтобы на нём остановиться.
Так попытка сделать одну анимацию бега привела к решению перевести всю игру в 3D.
Что дальше
Первое впечатление от моделей было отличным. Дальше я начал проверять их внимательнее: сколько в них полигонов, как они выглядят после упрощения и что требуется для анимации.
В следующей части покажу результаты генерации людей и монстров, расскажу про анимацию через Meshy и Mixamo и разберу подготовку персонажей. Там же расскажу, что позже изменил во внешности героя и зачем.
Короткие демонстрации публикую в Telegram. Описание проекта есть на странице Godot × ИИ.