Традиционный пайплайн#
Пиксел-арт — достаточно широкий спектр стилей.
Pixel Art Class - Art Styles for Indie Games — (ссылка на тайминг) одна из схем деления.
📍 Олд-скул пиксел-арт. Подражания ограничениям старых платформ
📍 Классический пиксел-арт. Hi-Bit. Искусственные ограничения формы, палитры, контраста
📍 Постмодерн пиксел-арт. Использование без ограничений пост-эффектов, партиклов, процедурное освещение
Пиксель арт - это не стиль. Стиль выбирают тут — ещё одна классификация стилей пиксел-арта.
Для инди больше подходит классический пиксел-арт, одна из целей которого — упростить графику до схематической там, где она не важна. Олд-скул — это искусственный челлендж, постмодерн на самом деле в производстве не отличается от дорогих проектов.
Падение пиксельной графики в инди-играх. Почему это может быть ПЛОХИМ стилем искусства — (тайминг) бюджеты “AAA” пиксел-арт проектов.
В общем — с пиксел-артом нужно быть осторожным. Во-первых, требует серьёзных усилий для перехода от “среднего” качества к хорошему. Во-вторых, сложен для масштабирования количества графики (если каждый кадр рисуется попиксельно), нет стандартных способов переиспользования кадров.
Еще ролики с такими тезисами:
Why I don’t use Aseprite - The Tools I Use for Indie Game Dev (2D and 3D)
Почему я отказываюсь от пиксельной графики — Художественные стили для независимой разработки игр
Forget About Pixel Art—Try This Easier Method for Your 2D Game’s Graphics
Падение пиксельной графики в инди-играх
Если собрать основные предупреждения:
📍 Рисовать покадрово каждый кадр дорого, нужны свои методы реюза частей кадра, если нет бюджета прорисовывать каждый кадр
📍 Некоторые эффекты проще сделать в векторном редакторе (ILLEGAL Pixel-Art Techniques - (Aseprite, Krita, Photoshop) Pixel Art Tutorial, HD Index Painting in Photoshop — недеструктивный/HD пиксел-арт, Pixel Art Class - Sub-Pixel Animation — субпиксельная анимация, и другие техники вроде мягких внутренних аутлайнов). Но для применения этих техник нужно разбираться как и пиксел-арте, так и в традиционных стилях, не получится просто использовать пиксел-арт как пост-эффект для обычного рисунка.
Основная программа — Aseprite.
Она поддерживает плагины на lua, с помощью которых можно попробовать скриптовать повторяющиеся операции.
ИИ пайплайн#
Я выбрал для экспериментов с ИИ пайплайном такой стиль:
📍 Очень мелкие персонажи, примерно такие - Tiny RPG Character. Чисто из логики “меньше пикселей — быстрее доанимировать/фиксить там где не справится ИИ”.
📍 Процедурная генерация анимации — если всё равно нужно разбивать персонажа на слои для анимации, то можно выделить программно зависимости, насколько пикселей смещаются отдельные части тела при анимациях и переиспользовать некоторые кадры (как в cutout анимации)
📍 Ограниченная палитра в 24-32 цвета, чтобы можно было сделать кастомизацию персонажей с помощью палитры
📍 Замена отдельных частей тела для создания кастомизированных версий персонажей
📍 Дальше — по обстоятельствам, что получится сгенерировать/дорисовать
Генерация референса#
Здесь уже достаточно сложно — связки "ChatGPT/Dall-E", "Gemini/Nana Banana" могут сгенерировать пиксел-арт версию референсного изображения, но с несколькими серьёзными недостатками.
![]()
Невозможно точно ограничить высоту в пикселах персонажей, рисуют несоразмерных. Тут два выхода, или “подбирать личность ИИ”, пока не получится (к сожалению, в веб-интерфейсе нельзя зафиксировать ни сид, ни вообще точную версию модели, с которой общаешься, так что сохранить успешный результат нельзя). Либо же использовать изображение как референс и уменьшать самому. Особенность пиксел-арта в том, что уменьшить/увеличить персонажа на несколько пикселей может быть просто (Рисуем персонажа по шаблону | Aseprite | Pixel art
).
Некоторых персонажей сложно сгенерировать мелкими. Я пытался сделать татуированную шаманку, но 20 пикселей просто мало для этого. Поэтому тут действовал по логике “нужен персонажей, который будет накладывать проклятия. Если на шаманка, значит мумия”.
ИИ не придерживается строго размеров пикселов. Модели рисуют пиксел-арт, но некоторые пиксели не строго стоят на границах сетки или размыты. Я примерно вылечил это python-скриптом. Часть пикселей может испортится, но по большей части удаётся уменьшить картинку и превратить в настоящий пиксел-арт после небольшой доработки напильником. Попутно скрипт объединяет очень близкие цвета — ограничивает палитру.
https://github.com/spiiin/pixel_art_scripts/blob/main/pixelize.py
Позже нашёл и более серьёзную версию с веб-интерфейсом:
https://theamusing.github.io/perfectPixel_webdemo/
В итоге получились такие персонажи, сведенные к нужной высоте и очищенные он фона (с пиксел-артом очистка сильно проще, в отличие от вектор-арта, где для очистки требовались 2 прогона через ИИ-модели):![]()
После того, как удалось подобрать несколько десятков изображений, можно попробовать отойти от общения с чат-ботом, и использовать специфические модели, чтоб передать передать им стиль для копирования, например, PixelLab.ai. Получается средне, годится только для референса:![]()
скормлены все персонажи выше в качестве референса, просьба сгенерить персонажа берсеркера
Возможно, копирования стиля недостаточно, нужна своя LoRA с дообучением, но это выходит за рамки проекта выходного дня.
Выделение слоёв и палитры#
Тут чисто ручная работа - отделить слои и дорисовать отсутствующие части. ИИ не видит в пиксель-арте частей. Это придётся сделать даже если анимация генерируется ИИ, для того, чтобы можно было получить кастомизированную версию спрайта (другой тип или цвет набедренной повязки).
![]()
отключенная рука для теста, что все пиксели топора под ней дорисованы
Также полезная возможность на этом этапе — перевести изображение в режим индексированной палитры и экспортировать её. Если разметить палитру текстовыми комментариями, то можно попросить ИИ автоматически сгенерировать несколько вариантов других палитр целиком для альтернативных фракций, это быстрее, чем делать вручную. Также важно проверить, что один и тот же цвет не повторяется в разных логических частях изображения — к примеру оттенки кожи полностью отличаются от металлических оттенков доспеха.![]()
Процедурная анимация#
Я пробовал разные способы переноса различной анимации между персонажами (с ии и без). Эффективно получилось только зафиксировать некоторые паттерны движения в стандартных анимациях, и затем пробовать сгенерировать различные паттерны и посмотреть, годятся ли они для нового персонажа. Это чисто процедурный способ генерации, использовать ИИ тут не получилось (несмотря на то, что некоторые сервисы предлагают генерацию по скелетной позе, тот же pixellab — она очень плохо работает).
Вместо этого я пробую серию стандартных сдвигов частей для несложных анимаций. К примеру для walk/idle присутствует паттерн покачивания персонажа вверх-вниз с отставанием некоторых частей тела, который повторяется для верхней части тела.
https://github.com/spiiin/pixel_art_scripts/tree/main/delta_procedural_animation
Скрипт подсвечивает желтым сгенерированные кадры, это уже сильно упрощает процесс.![]()
Inpaint#
Замена частей изображения на похожие (для генерации вариантов или усиленных версий классов персонажей), работает процентов в 50 случаев. 10-20 генерациями можно подобрать подходящий результат, или хотя бы референсное изображение для “обработки напильником” (т.е. с перерисовкой вручную)
![]()
Анимации#
Для генерации анимаций пробовал:
- PixelLab - средние результаты, как референс
- PixelEngine - кастомная модель для пиксел-арт анимаций, сильно опережает то, что видел до этого, в большинстве случаев подходит для генерации.

требует дозачистки пикселей, зато в анимации есть эффект субпиксельного движения
Результат#
В тестовой игре выглядит так:
https://games.edenspark.io/post/UkC7wip8hHyK5U72/
- Так же, как и с традиционным пайплайном, с генерацией пиксел-арта с помощью ИИ есть скрытые сложности (отдельная доработка кадров после генерации вручную), из-за которых трудно масштабировать генерацию на большое количество персонажей/анимаций.
- Требуется много скриптов пред- и пост- обработки
- ИИ выполняет 60-70% работы, остальное — вручную. Хотя ручная работа — мелкие правки, требуется определённый скилл (всё те же требования к пониманию пиксел-арта, без которого от неверно поставленного одного пиксела можно “поломать” спрайт). Может быть сложнее для более детального арта.
- Меньше возможностей прикрутить какую-нибудь общую модель к пайплайну, требования к арту очень специфические.