Попросил нейросеть придумать игру и завис на анимации ходьбы скелета

Прокомментировать Просмотры: 4

Некромант и скелеты за рабочим столом. Иллюстрация к истории разработки, созданная нейросетью. Это не игровой кадр

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

Первую модель я запомнил под именем Fable. В истории проекта и правда сохранился августовский коммит с подписью Claude Fable 5. Из того разговора родился «Некромант по найму»: в этой игре мышью рисуешь линии, а скелеты исполняют привязанные к ним приказы.

Сегодня в игре есть разные бойцы, постройки, оборона котла, натиски, рогатка, распознавание фигур, анимация с несколькими ракурсами и английская локализация. Но ничего из этого в исходном промпте не было. Мы шаг за шагом придумывали, добавляли, проверяли и переделывали игру вместе с нейросетями. Порой очередное нововведение действительно делало её интереснее. А порой после огромного объёма работы выяснялось лишь одно: почему прежний путь был тупиковым.

Нагляднее всего это видно на двух примерах: смысл нарисованной линии менялся на ходу, а скелета никак не получалось научить нормально ходить.

В начале была линия

Первый сохранившийся прототип от 20 августа был куда проще нынешней игры: браузер, Canvas, арена, Котёл Душ и горстка скелетов. Игрок чертил рунную линию, тратя на это ману. Скелеты находили ближайшую линию и патрулировали вдоль неё. Со временем линия таяла, а оставшиеся без дела подрядчики возвращались к котлу и бездельничали.

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

Вместе с механикой возник и мир. Некромант открыл контору, скелеты стали наёмными работниками на аутсорсе, а атакующие превратились в проверяющих из ада. Улучшения удобно было подать как поправки к трудовому договору. Так правила и юмор связались друг с другом: ограниченный срок жизни линии перестал выглядеть абстрактным таймером. Просто истекал срок действия договора.

В ответе модели нашлось не только описание мира, но и конкретное действие: проводишь черту — и персонажи откликаются на твой рисунок. Это уже можно было воплотить и пощупать руками.

Однако одного необычного жеста для настоящей игры не хватало.

Добавлять возможности проще, чем понимать, для чего они нужны

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

У разработки с агентами заманчивый темп. Стоит сформулировать идею — и совсем скоро получаешь рабочий вариант. Это спасает от застревания в обсуждениях. Но заодно слишком легко накопить больше механик, чем ты успел осмысленно проверить.

Само наличие кода не отвечает на вопросы игрока. Зачем мне рисовать линию именно здесь? Что изменится, если нарисую иначе? Почему я должен вмешиваться сейчас, если оборона и так держится? Можно добавить ещё одно умение и ни на шаг не приблизиться к ответу.

К сентябрю захотелось стратегии посерьёзнее: карты сложнее, армия больше, расположение бойцов значимее. Но просто заменить башни из tower defense скелетами, выстроенными вдоль временной линии, было мало. Требовалось понять, что рисунок даёт помимо необычного способа расставить защитников.

Так мы вернулись к исходной идее и переосмыслили её главное действие.

Исчезновение линии стало приказом

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

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

Это было одно из самых любопытных обсуждений с моделями. Среди вариантов были линия, по которой просто прибывают новые бойцы, и линия, удерживающая строй до конца срока. В сохранившемся разборе Астра отстаивала второй вариант, и аргумент был предметным: если линия живёт двенадцать секунд и выдаёт по два бойца в секунду, её во многом заменит кнопка «отправить двадцать четыре бойца». А в варианте со строем срок действия задаёт отложенный манёвр.

Другие модели предпочли поставку бойцов. Но в итоге решили в пользу строя и выпуска в атаку. Мне нравится этот эпизод именно отсутствием магии: нейросети не пришли к единодушному ответу, а полезным оказался конкретный довод о механике.

Конечно, один довод ещё не гарантирует, что играть будет интересно. Он лишь объясняет, почему стоит собрать именно этот прототип и проверить его.

От браузерного прототипа к бою в Godot
От браузерного прототипа к бою в Godot

Вверху — ранний браузерный прототип, август 2026. Внизу — постановочный промокадр настоящего игрового движка версии 0.3.0, октябрь 2026. Это сопоставление этапов, а не демонстрация последней версии 0.4.0.

Как менялся смысл линии
Как менялся смысл линии

Условная схема: маршрут патруля превратился в строй с ограниченным сроком действия и выпуском приказа. Это пояснение механики, а не игровой интерфейс.

Рогатка родилась из неудобного движения мышью

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

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

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

По-моему, это хороший пример того, как на самом деле меняется проект. Рогатки не было в большом первоначальном замысле. Она выросла из неудобства в уже работающей игре. После этого изменились и ощущения от боя, и требования к тому, насколько наглядно игра показывает подготовку и результат приказа.

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

А затем скелету понадобилось пройти несколько шагов

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

Один кадр мог нравиться. Несколько кадров подряд тоже могли выглядеть убедительно. Но стоило запустить цикл — и персонаж менялся, подрагивал, скользил по земле или так двигал ногами, что лучше бы стоял на месте.

Сложность была не в разрешении картинки и не в количестве кадров. Требовалось одновременно сохранить облик персонажа, получить осмысленные фазы движения, удержать масштаб и точку опоры, замкнуть цикл и корректно перейти из покоя в ходьбу, а потом в удар. Малейшая ошибка в любой из этих связей оборачивалась заметной нелепостью.

В архиве остались очень узнаваемые попытки. Генерация по позам порой выдавала почти одинаковые фигуры вместо разных фаз. Лист спрайтов лучше сохранял внешность, но хуже подчинялся заданному движению. Перенос движения через видеомодель требовал согласовать композицию управляющего ролика и референса: иначе модель цеплялась за исходную картинку и не воспроизводила нужное действие.

Риг тоже не стал волшебной кнопкой. Персонажа можно аккуратно разрезать на части, соединить костями, привести их в движение — и получить убедительную марионетку вместо убедительно идущего скелета.

Почему неподвижный ботинок порой ценнее красивого кадра

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

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

Проверка для такой ошибки проста по смыслу. Пока стопа опирается на землю, она должна оставаться примерно на одном месте относительно земли. Если тело движется вперёд, стопа в локальных координатах персонажа обязана уходить назад с соответствующей скоростью. Красивый силуэт не оправдывает нарушения этой связи.

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

Сравнение двух этапов работы над походкой
Сравнение двух этапов работы над походкой

Архивное сопоставление v5 и v6. Это два соседних этапа доработки, а не «самая первая попытка» и не сравнение всех использованных моделей.

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

Для меня это стало очень наглядным уроком: метрика должна ловить именно ту ошибку, которая нужна. Отсутствие дрожания ещё не означает хорошей походки.

Что изменилось с Астрой

Перелом я запомнил так: после множества неудачных вариантов я попросил Астру просто улучшить анимацию — и с первого же захода получил движение, которое наконец выглядело нормально и качественно. Насколько я понимаю, основой служила скелетная анимация. Позднее последовала следующая заметная итерация — развороты персонажей.

К тому времени в проекте уже накопились персонажи, риги, инструменты и неудачные пробы. Астра работала с этим материалом, а дальнейшую доводку продолжали разные агенты. Но именно тот заход я запомнил как первый по-настоящему хороший результат.

Практическую пользу принесло то, что задача стала решаться через устройство самого движения: опору, геометрию ноги, темп и переходы. Теперь можно было говорить не просто «выглядит плохо», а конкретно показывать, где скользит ботинок, почему меняется рост и что происходит на первом кадре после остановки.

Движение от рига и художественная обработка
Движение от рига и художественная обработка

Одни и те же выбранные фазы архивного листа до и после художественной обработки. Движение задано ригом; после обработки позы приходится перепроверять, чтобы улучшение рисунка незаметно не исказило шаг.

Просто повернуть картинку недостаточно

Когда основная походка стала приемлемой, проявилась следующая проблема: персонажи могли идти боком относительно своего пути. Простого горизонтального отражения спрайта хватало для движения влево и вправо, но не для ухода в глубину экрана или шага навстречу зрителю.

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

Передние и задние ракурсы персонажей
Передние и задние ракурсы персонажей

Материалы для подготовки направленных анимаций. Разные ракурсы позволяют персонажу идти по дороге вперёд, а не скользить по ней боком.

Ракурс следует выбирать по фактическому перемещению. Если боец огибает препятствие, он должен повернуться вслед за обходом, а не продолжать смотреть в сторону далёкой цели. При этом смена направления не должна ломать уже начатую атаку и момент попадания.

Подобные мелочи плохо заметны в списке возможностей. «Восемь направлений анимации» звучит как очередная строчка. А в живом бою от этого зависит, насколько естественно выглядит толпа и насколько легко понять, куда она движется.

Кто принимает решения в такой разработке

У нас ни разу не было так, чтобы нейросеть получила один промпт и принесла готовую игру. Было множество отдельных разговоров и итераций: придумать вариант, реализовать, запустить, посмотреть, заметить проблему, объяснить её, переделать.

Часть идей предлагали модели. Часть возникала у меня после игры. Иногда я просил конкретную механику, иногда описывал ощущение: мышь неудобно тянуть, экшена маловато, персонаж идёт неестественно. Модель превращала это в гипотезу и реализацию, после чего требовалась новая проверка.

Очень полезным оказалось разделение реализации и проверки. Агент, только что написавший код, знает, как тот должен работать, и рискует увидеть лишь это. Другой проход способен обнаружить, что новая анимация лежит в папке, а в бою выбирается старая; что технически верный приказ непонятен по картинке на экране; что эффектное действие срабатывает только в специально подготовленной ситуации.

При этом автоматический бой отвечает лишь на часть вопросов. Он может выявить ошибку, сравнить результаты и проверить повторяемость. Но победа бота не доказывает, что человеку интересно. Даже рост числа действий не обязательно означает, что у игрока прибавилось осмысленных решений.

Поэтому человеческое «мне скучно» или «рука просится сделать наоборот» остаётся полноправным источником для разработки. Его не отменить зелёной таблицей тестов. Зато его можно превратить в более конкретный вопрос и проверить следующую версию.

Где игра сейчас

На момент написания это бесплатная альфа 0.4.0 с русской и английской версиями. Из небольшого эксперимента выросла игра, где рисование линий связано со строительством армии, сроком действия договора и выпуском приказов. Появились разные роли, активные умения, фигуры и более подробное обучение.

Это по-прежнему работа в процессе. Я не хочу выдавать её за законченную историю успеха: удачные отдельные механики ещё предстоит сплести в понятный и увлекательный опыт, а анимация, управление и объяснение правил нуждаются в новых итерациях.

Всего неожиданнее для меня оказалось то, как далеко можно уйти от первоначального запроса, сохранив его крошечное зерно. Началось с «придумай игру». Осталась линия, которую я рисую мышью. Всё вокруг неё — и даже смысл её исчезновения — успело измениться.

А труднее всего оказалось не получить ещё один вариант. Вариантов нейросети способны выдать сколько угодно. Трудно понять, какой из них стоит оставить, почему он работает и что именно менять дальше.

Исходники и текущая альфа доступны в публичном репозитории проекта. Если вы делали игру вместе с нейросетями, интересно сравнить опыт: в какой момент быстрый прототип превращался у вас в долгую работу над качеством?

 

Источник

Похожие статьи

Поиск по играм, новостям и статьям…

Введите не менее двух символов

Введите не менее двух символов