Бай Лянь переходит из стойки в удар ладонью, за ней тают полупрозрачные фазы движения. Ступни стоят на мокром камне, от них расходятся круги
шаг 6

Плавность и ноги на полу

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

⏱ DeepSeek: 10-11 часовтвоё время: 1 часнужно: шаг 5, Chrome

Чёткость и плавность

Слово «некрасиво» модель не измерит. Поэтому промпт переводит его в проверки. Спрайт на экране должен быть не меньше одного пикселя на пиксель. Кроп из игры ставится рядом с тем же кадром из исходного видео в том же масштабе. Отдельный автотест ищет скачки позы и положения на каждом кадре. И в конце прямо сказано: плавность не должна покупаться задержкой управления.

Посмотри на бойцов после шага 5. У меня тёплый свет сцены «съел» их цвета: чёрные штаны Тие Ху стали коричнево-оранжевыми, синие у Бай Лянь серо-фиолетовыми. Если у тебя цвета в порядке, удали этот пункт из промпта.

Два кадра рядом: слева бойцы в своих цветах, справа после тонировки, у Тие Ху штаны стали оранжевыми
Слева до, справа после «вписывания» бойцов в свет сцены: цвета костюмов выцвели.
новый чат. прочитай AGENTS.md. локация готова, теперь самое важное для меня - сами бойцы. посмотрел ролики боя - неплохо, но не идеально. для меня главное - ПЛАВНОСТЬ анимаций и переходов, отклик управления, никаких резких переключений и рывков, и чтобы было очень красиво. и качество персонажей хуже, чем могло бы быть: в стойке ещё ок, но в движении и когда камера отъезжает они мыльные, а по краям видны квадратики и ореол. 1. качество персонажей: - при игровой камере на 1080p спрайт должен быть минимум 1:1 к пикселям экрана (лучше с небольшим запасом) в самом крупном плане, а при отъезде камеры не мылиться. пересобери атласы под реальный размер бойцов в кадре - сжатие без артефактов на альфе (lossy webp по альфе даёт квадратики) и без мыла от мипмапов - в движении смешивание двух кадров не должно давать мыло и двоение - проверь на ударах, а не только в стойке - rim-подсветка от огня не должна давать светящийся контур вокруг всего силуэта - после прошлого круга тёплая тонировка «съела» цвета: у Тие Ху чёрные штаны стали коричнево-оранжевыми, у Бай Лянь синие - серо-фиолетовыми, бойцы выглядят выцветшими. вписать в свет можно, но собственные цвета костюмов, чёрный и белый должны остаться как в исходнике: тонировка лёгкая, по краю и снизу, а не на весь спрайт. сравни цвета игрового кропа и кадра исходника рядом - проверь сам: кроп игрового скриншота с бойцом и тот же кадр из исходного видео в том же масштабе рядом - в стойке, на середине удара и при отъехавшей камере. должны быть одинаково чёткими 2. плавность - главное: - проверь все переходы: idle→каждое действие, действие→idle, удар→удар (комбо J J J, J→K), ходьба→стоп, смена направления, разворот при перепрыгивании, прыжок→удар в воздухе→приземление, получение удара посреди своей атаки, блок и выход из блока, нокдаун→подъём, KO - никаких телепортов позы и позиции, резких смен силуэта, дёрганья ног - сделай автотест плавности: на каждом кадре меряй смещение центра масс/силуэта и изменение позы между соседними кадрами, находи скачки и чини, пока их не будет - запиши себе переходы покадрово (шаг 1/60 с), собери контактные листы и посмотри глазами - ходьба: убери шаговый snap на склейке цикла и скольжение ног по полу 3. отклик управления оставь таким же быстрым - плавность не за счёт задержки. после правок прогони свой тест отзывчивости, цифры не должны ухудшиться по сравнению с прошлым отчётом. в конце - таблица до/после по чёткости, скачкам и отзывчивости.
git add -A && git commit -m "промпт 07: чёткость и плавность"

У меня это самый долгий промпт: почти 5 часов. Бойцы стали крупнее и чётче, цвета вернулись, подсветка по краю стала тонкой. Модель написала тест, который проверяет 10 сценариев переходов с шагом 1/60 секунды, и гоняла его по кругу. Отклик не ухудшился.

Смотрим в замедлении

После промпта 07 я посмотрел бой в замедлении в четыре раза. На обычной скорости многое проскакивает, а в замедлении видно всё. У меня было вот что:

Кадры боя в замедлении: в момент смены анимации сквозь тело Тие Ху виден фон, два силуэта наложены друг на друга
Полупрозрачный «призрак» при смене анимации.

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

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

новый чат. прочитай AGENTS.md и свой отчёт о прошлом круге (он в docs/) - прошлый круг был про чёткость и плавность, чёткость и цвета стали отличные, спасибо. но я посмотрел бой целиком и в замедлении 0.25×. главное, что бросается в глаза: бойцы плавают по полу. ноги стоят, а тело едет - после пропущенного удара, в блоке, при нокдауне, а на сильном ударе их уносит больше чем на метр, как на коньках. и прыгают они слишком высоко - будто летают. перемерь сам в бою ИИ против ИИ (40 с): сколько боец проезжает по полу за пропущенный удар, на сильном ударе, в блоке, после нокдауна, и какой высоты прыжок. в похожей версии игры замеры были такие: - за один пропущенный удар Бай Лянь проезжает до 0.7 м, хотя в клипе hit ноги стоят - на сильном ударе оба сдвигаются до 1.4 м - в блоке уезжают назад до 0.5 м в неподвижной стойке - после нокдауна тело ещё едет по полу на полметра - прыжок у Бай Лянь - почти 1.9 м вверх, выше её роста. в кадре голова и плечи уходят за верхний край экрана, видны одни ноги хочу как в нормальном файтинге: если нога стоит на полу, она стоит и никуда не едет. перемещение бойца бери из самого видео: найди в каждом кадре опорную ногу и сдвигай бойца ровно настолько, чтобы она оставалась на месте. где в видео есть шаг или рывок, там и движение; где ноги стоят, там и тело стоит. отдачу от удара и блока сделай небольшой и только там, где в клипе ноги реально сдвигаются, или добавь короткий шажок назад. прыжок так же: высота и траектория - как в видео прыжка, без лишнего подброса сверху. камера не должна терять прыгающего бойца. ещё в замедлении видно: при смене анимации боец на несколько кадров становится полупрозрачным - сквозь тело видно фон, два силуэта наложены друг на друга. особенно у Тие Ху, когда в него попадает сильный удар. тело всегда должно быть непрозрачным, переход - без «призрака». и ещё одно, раз в игру будут играть люди на обычных ноутбуках: спрайты бойцов сейчас занимают около гигабайта видеопамяти. на слабой встроенной графике это либо вылетит, либо будет подтормаживать. сожми их в gpu-формат (ktx2/basis) без потери чёткости и прогрей все страницы на загрузке, чтобы в бою не было ни одного подлага. замерь видеопамять и вес загрузки до и после. проверка: - тест на скольжение ног: на каждом кадре меряй, насколько опорная нога сдвинулась относительно пола, пока она на земле. должно быть почти ноль, пара пикселей. считай по каждой ноге отдельно, а не по среднему пятну ступней - прогони его по всем клипам и в бою ИИ против ИИ - сам запиши бой в замедлении и посмотри на сильный удар, пропущенный удар, блок, нокдаун и прыжок отзывчивость не трогай, цифры теста отклика не должны ухудшиться. в конце таблица до/после.
git add -A && git commit -m "промпт 08: ноги на полу"

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

Баг, которого не видят тесты

А потом я запустил бой в обычном Chrome, и бойцы начали размножаться: две-три копии Бай Лянь сразу, прямоугольные куски чужих кадров, иногда Тие Ху становился чёрным силуэтом. Автотесты этого не видели, потому что шли без видеокарты, в программной отрисовке. При этом баг был виден на листе кадров, который модель собрала сама и написала «проверено».

Три кадра боя: рядом с Тие Ху видны лишние копии Бай Лянь и прямоугольные обрывки других кадров
После промпта 08 в обычном Chrome с видеокартой.

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

новый чат. прочитай AGENTS.md и свой отчёт о прошлом круге (он в docs/) - прошлый круг был про стопы, прыжок и KTX2. стопы и прыжок отличные, скольжения больше нет. но бой сейчас сломан, в него нельзя играть. запустил обычный бой ИИ против ИИ в Chrome - бойцы размножаются. при ударах и попаданиях на экране 2-3 копии Бай Лянь одновременно, торчат прямоугольные куски других кадров атласа, иногда Тие Ху становится полностью чёрным силуэтом. скрины прикрепил. посмотри и свои листы кадров из прошлого круга: если это видно и там, значит ты пропустил. похоже на две вещи сразу: шейдер, который собирает несколько кадров через максимум альфы (тогда каждый кадр виден целиком), и что-то с KTX2 (не тот кусок атласа или не та страница). но разберись сам. что нужно: - в любой момент на экране ровно одно тело бойца - без копий, обрывков и чёрных силуэтов - переход между анимациями без призрака и без клонов, например короткая смена через близкий по позе кадр - проверяй в настоящем Chrome с GPU, как у игроков, а не только в swiftshader. у тебя тесты идут в программном рендере, там это может выглядеть иначе - добавь автотест, который ловит именно такое: на каждом кадре боя считает, сколько у бойца отдельных силуэтов (связных пятен альфы) и нет ли пикселей за пределами его рамки. должно быть одно пятно - смотри листы сам и в увеличении - на мелком листе ты это пропустил и пока ты там: бойцы теперь стоят друг в друге. после ударов их вообще не расталкивает, и Бай Лянь оказывается внутри Тие Ху. скольжения не хочу, но тела не должны перекрываться. держи дистанцию по видимым силуэтам, а если надо разойтись - пусть это будет короткий шаг назад или толчок в момент удара: коротко и с весом, а не езда. скольжение ног, прыжок и отклик не сломай. в конце - лист кадров из настоящего Chrome и таблица до/после.
git add -A && git commit -m "промпт 09: одно тело"

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

Лист кадров боя в замедлении: на каждом кадре ровно два бойца, без копий и обрывков
После промпта 09: у каждого бойца одно тело в каждом кадре.

Как проверить: посмотри бой в обычном Chrome, на обычной скорости и в замедлении.

  • Бойцы чёткие, цвета костюмов как на исходных картинках
  • Ноги не скользят по полу после удара, в блоке и при нокдауне
  • Прыжок не выше роста бойца, голова остаётся в кадре
  • Нет копий, обрывков и чёрных силуэтов
  • Бойцы не стоят друг в друге
  • Лёгкий удар по-прежнему выходит сразу