Как я пытался сделать анимацию для игры с помощью ИИ — и чуть не навайбкодил нервный срыв

Как я пытался сделать анимацию для игры с помощью ИИ — и чуть не навайбкодил нервный срыв

Привет. Я — Андрей Макар-Уваров, Head of Frontend в Surf. Недавно решил проверить одну гипотезу: насколько далеко можно уехать на ИИ в разработке, если взять задачу, в которой ты абсолютный ноль.

В качестве эксперимента выбрал микро-игру. Идея простая: рыжий кот с фонарём ходит по тёмному лабиринту, находит других животных и передаёт им свет. Можно оставить свет зайчику, чтобы он подсвечивал проход, или забрать его, чтобы усилить свой фонарь. Должен был получиться атмосферный пазл про свет, тьму и управление ограниченным ресурсом.

Что использовал:

  • модель — Grok;
  • движок — Godot;
  • текстуры — через fal.ai.

Сначала всё шло легко: за вечер нагенерировал логику, интерфейс, лабиринт. Казалось, что дальше я просто диктую идеи, а код появляется сам. Но эйфория быстро закончилась, когда увидел, что получилось.

1-й этап: если всё идёт хорошо, значит, что-то идёт не так

Начали всплывать мелкие проблемы. Спрайты превращались в розовые квадраты. Освещение не работало. Камера улетала в бесконечность, а источник света оказывался вне сцены.

Через несколько часов понял: проблема не в модели, а в том, что я не понимаю GDScript. Когда работаешь с незнакомым стеком, почти невозможно отличить баг в коде от галлюцинации нейросети.

В итоге я переписал проект на C#. Godot его поддерживает, а знакомый синтаксис резко снизил уровень хаоса.

2-й этап: кастинг ИИ-моделей

Попробовал несколько моделей: Minimax, Codex, DeepSeek, GLM. У каждой свои особенности:

  • GLM мог зависнуть посреди ответа.
  • Minimax и Codex воспроизводили одни и те же баги.
  • DeepSeek иногда не решал задачу, а морально поддерживал.

Лучше всех показал себя Kimi. С ним удалось легко сгенерировать котика. Но создать его в разных ракурсах и в одном стиле — уже сложнее. Модель просто не понимала консистентности. Плюс fal.ai упорно не рисовал на прозрачном фоне. Пришлось написать Python-скрипт, чтобы вырезать фон и сделать его прозрачным.

В итоге игра заработала: кот с фонарём, собачка — всё светится, выглядит уютно. Базовая версия была готова. Но впереди меня ждал

3-й этап: АНИМАЦИЯ!

Пишу это слово капсом и с восклицательным знаком, потому что именно так я к ней подходил. Я был уверен: если ИИ может вставить Люка Скайуокера в «Властелин колец», то заставить котика махать лапкой — задача на 15 минут. Спойлер: нет.

План А: быстро сделаем спрайты

Мой бэкграунд — веб-фронтенд. До этого я знал об анимации только одно: нужен спрайт-лист. Это картинка, на которой последовательно расположены кадры. Персонаж двигается, если быстро их переключать.

Логика была простая: 5 кадров «кот идёт направо», 5 кадров «налево».

Но здесь важна консистентность. Для большинства моделей пять кадров — это пять независимых вселенных. Да, есть reference image, каскадная генерация и ползунки «похожести». Но в одном из кадров фонарь превращается в банан, у кота появляется шляпа или он становится полосатым, хотя был рыжим.

Я потратил много часов на промпты, маски и инпейнтинг, пытаясь добиться стабильности. Получались интересные изображения, но не рабочая анимация — на третьем кадре кот терял лапу, на четвёртом обретал крылья.

Мои выводы: почему ИИ хорошо рисует объект, но плохо передаёт движение

Я понял: сгенерировать один кадр и серию кадров — задачи разного уровня сложности.

  1. Когда просишь нарисовать кота с фонарём в определённом стиле — это задача на создание одного образа.
  2. Когда просишь показать, как он движется, оставаясь тем же самым, — задача усложняется. Нужно удерживать идентичность: движение лап, смену силуэта, пропорции от кадра к кадру.

На практике это намного сложнее, чем генерация одного изображения.

План Б: смотрим видюшки на YouTube

После неудач решил выяснить, как вообще делают анимацию для инди-игр с ИИ в 2024–2026 годах.

Варианта два:

  1. Видео → спрайты: сгенерировать 1–2 секунды видео, потом вытащить кадры.
  2. Blender: собрать 3D-модель, сделать риг, анимировать, рендерить в 2D.

Blender мне не знаком, поэтому выбрал первый путь. И получил первый хороший результат: видео-модели Runway, Pika и аналоги дают консистентность. Котик шагает плавно, фонарь не скачет, персонаж узнаваем. На фоне прошлых попыток — прорыв.

Но возникла другая проблема: у них нет LoRA — возможности задавать стиль. Без этого модель выдаёт 3D-видео в стиле китайских маньхуа — слишком глянцевое и пластиковое.

Мои акварельные котики превратились в пластилиновых смурфиков. Попытки настроить стиль через negative prompts и сиды — бесполезны.

План В: скелетная анимация

Решил попробовать встроенную в Godot 2D skeletal animation:

  1. Берём статичную картинку.
  2. Разрезаем персонажа на части: голова, тело, лапы, хвост.
  3. Собираем скелет.
  4. Двигаем костями — получаем анимацию.

Главный плюс — визуальная консистентность. Персонаж остаётся тем же, стиль не меняется, нет случайных деталей. Для игры — сильный вариант.

Но и здесь есть нюанс. Нужно вручную разрезать спрайт, расставить pivot points, связать костями, настроить инверсную кинематику.

Это уже не задача про код. Это — про ручную работу и базовое понимание анимации.

Я открыл редактор Godot, посмотрел на ноды, mesh’и, кости, веса — и понял, что снова ничего не понимаю. Почему при движении одной части деформируется другая? Как настроить скелет? Как добиться естественного движения?

Что в итоге получилось

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

Итог: игра работает. Механика передачи света понятна и без анимации. Атмосфера держится на освещении, темноте, звуке и ощущении пространства. Отсутствие анимации не сломало продукт — просто не позволило его полировать.

Что важно для разработчиков и лидов

Сформулировал основные выводы:

  1. ИИ хорошо ускоряет то, что можно описать словами. Пока задача укладывается в понятную текстовую постановку и не требует глубокого ручного навыка, ускорение заметное.
  2. ИИ плохо заменяет навык там, где нужны насмотренность и ручная работа. Анимация — это не просто кадры, а ремесло. То же касается визуального полиша, motion design, иллюстрации, 3D.
  3. Незнакомый стек сильно повышает цену ошибки. Когда знаешь платформу, ИИ ускоряет работу. Когда не знаешь ни движок, ни язык, ни пайплайн — часть времени уходит на выяснение, кто ошибся: ты или модель. В команде лучше сочетать ИИ с областью, где уже есть экспертиза.

Что буду делать дальше

На следующий заход у меня три варианта:

  • взять Blender и разобраться глубже;
  • отдать анимацию специалисту;
  • оставить всё как есть и признать, что статичные персонажи — тоже рабочий стиль.

Сейчас склоняюсь к третьему. Даже без анимации игра работает, а персонажи выглядят так, как и задумывались.

Читать оригинал