Character Sprite Maker: Full Sprite Sheets from a Prompt
Создайте собственный character sprite maker
Создавайте спрайты персонажей — idle, walk, attack, восемь направлений — из одного описания. Прозрачные кадры, ровная сетка, готовность к движку. Затем поместите персонажа в 3D-мир, по которому можно ходить.
Character sprite maker принимает текстовое описание и возвращает полный спрайт-лист: idle, walk, run, attack, cast в восьми направлениях, на прозрачных кадрах, на фиксированной сетке, с точкой отсчёта у ступней. Вы описываете персонажа — тип телосложения, силуэт, палитру, оружие в руках, слои одежды — а инструмент отрисовывает все позы из этого описания, а не один героический кадр, который придётся перерисовывать вручную.
Разница между спрайтом и спрайт-листом — это разница между изображением и системой анимации. Один удачный кадр idle — это картинка. Лист — это конечный автомат: количество кадров, которое движок может зациклить, направления, по которым он может индексировать, и единый персонаж во всех ячейках, чтобы цикл ходьбы не менял форму на середине цикла. Neta Studio строит весь лист из промпта, а затем позволяет поместить этого персонажа в 3D-мир, по которому можно ходить.
Один промпт — полный лист персонажа
Вы описываете персонажа простым языком: вид или план тела, рост относительно сетки, телосложение, волосы или шлем, слои одежды, что он держит, диапазон палитры и художественное направление (pixel, painted, flat vector). Инструмент разбирает это в спецификацию персонажа и отрисовывает всю матрицу — каждую анимацию, каждое направление — из одной и той же спецификации. На выходе получается лист, а не выбор отдельной позы.
Отдельный кадр почти ничего не говорит о том, работает ли персонаж в игре. Как только он начинает двигаться, должны выдерживаться три вещи: силуэт должен оставаться читаемым в том размере, в котором вы его действительно рисуете, палитра не должна смещаться между кадрами, а точка привязки не должна блуждать. Лист делает эти ограничения видимыми сразу. Вы видите walk рядом с idle, видите кадр 3 рядом с кадром 1 и замечаете дрейф до того, как он дойдёт до движка.
Работа из одного описания также делает персонажа воспроизводимым. Измените промпт — замените плащ на латы, сдвиньте палитру на два шага в холодную сторону — и вы перегенерируете весь лист с применённым везде изменением. Вам не нужно вручную править сорок кадров под новое цветовое решение.
01
Напишите описание персонажа: тип телосложения, рост в единицах сетки, телосложение, одежда и предметы в руках, палитра, художественное направление.
02
Задайте сетку кадров: квадратные ячейки, кратные степени двойки, порядок строк анимаций — в документации.
03
Сгенерируйте лист и сравните первый кадр каждой анимации с последним — они должны быть соседними, а не идентичными.
04
Проверяйте силуэт в конечном масштабе отображения, а не в приближенном виде.
05
Экспортируйте прозрачные PNG-кадры с задокументированной сеткой и точкой отсчёта у ступней.
Idle, walk, run, attack, cast
Пять анимаций покрывают большинство 2D-персонажей: idle, walk, run, attack, cast. Idle — это цикл дыхания, в котором персонаж проводит большую часть своей жизни. Walk — цикл перемещения, обычно с наибольшим числом заметных касаний ступнями. Run — то же движение быстрее и с большим наклоном корпуса. Attack — одноразовая анимация с замахом, кадром контакта и восстановлением. Cast — одноразовая анимация с удержанием: поза, в которой персонаж находится, пока снаряд или AOE не разрешится.
Количество кадров важно сильнее, чем ожидают. В игровом масштабе — персонаж высотой примерно от 32 до 64 пикселей на виде 320×180 или 640×360 — четыре кадра ходьбы читаются как ходьба; шесть — как более плавная; восемь начинают стоить больше, чем дают. Циклы бега часто работают на четырёх. Idle — от двух до четырёх; два — классическое дыхание, четыре дают вторичное действие вроде покачивания или колебания оружия. Attack — обычно от трёх до пяти кадров: замах, контакт, продолжение движения, восстановление. Cast — от четырёх до шести с удержанным кадром.
Режим отказа здесь — это тайминг, а не количество кадров. Четырёхкадровая ходьба, экспортированная без задержки между кадрами, проигрывается на частоте кадров движка и выглядит как дрожание, а не как шаг. Лист поставляется с рекомендуемым fps для каждой анимации, чтобы у импортёра движка было разумное значение по умолчанию, которое можно переопределить.
| Анимация | Кадры | Цикл | Примечания |
|---|---|---|---|
| Idle | 2–4 | да | дыхание или покачивание; первый и последний кадр соседние |
| Walk | 4–8 | да | касания ступнями на чётных кадрах читаются чище всего |
| Run | 4 | да | больше наклона, длиннее шаг, чем в walk |
| Attack | 3–5 | нет | замах, контакт, продолжение движения |
| Cast | 4–6 | нет | включает удержанный кадр для разрешения |
Одна полоса, одно описание
Восемь направлений означают, что лист покрывает N, NE, E, SE, S, SW, W, NW — полный круг шагами по 45 градусов. Играм с видом сверху и изометрии это необходимо, потому что игрок видит персонажа с фиксированной камеры и может двигаться в любом направлении. Четыре направления (N, E, S, W) оставляют диагонали визуальной ложью: спрайт смотрит на восток, пока персонаж идёт на северо-восток. Восемь направлений приводят направление взгляда в соответствие с вектором движения.
Лист раскладывается как матрица: одна строка на направление, один столбец на кадр внутри анимации, либо один блок на направление, содержащий все анимации в одном и том же порядке. Подходит любой вариант, если порядок задокументирован. Sprite Editor в Unity нарезает по сетке; Godot AnimatedSprite2D ожидает отдельные region rects или нарезанную текстуру; редактор спрайтов GameMaker принимает сетку плюс точку отсчёта для каждого кадра. Порядок, по которому вы индексируете в движке, должен совпадать с порядком, в котором лист был отрисован, иначе получите персонажа, идущего луной походкой.
Тонкая часть — это переходные кадры. Если отрисовать только восемь канонических направлений, спрайт скачком переключается между ними, когда вектор движения пересекает границу в 22,5 градуса. Два способа смягчить: отрисовать восемь направлений и позволить короткой анимации поворота закрыть границу, либо принять скачок и оставить поворот персонажа с привязкой к ближайшему из восьми. Оба варианта законны; лист поддерживает любой из них, потому что ничего в нём не предполагает наличия кадра поворота.
Единые персонажи во всём наборе
Настоящая проблема в работе со спрайтами — это дрейф. Первый персонаж сгенерирован с определённым соотношением головы к телу, определённой палитрой, определённой толщиной линий. Второй персонаж сгенерирован позже, по иначе сформулированному промпту, и возвращается на полголовы выше, с более холодными тонами кожи и более толстым контуром. Рядом друг с другом на экране отряда они не выглядят так, будто принадлежат одной игре.
Дрейф происходит из-за недоописанных промптов. Если первый промпт говорил «низкий и коренастый, приглушённая земляная палитра, ячейки 32 пикселя, контур в один пиксель», а второй — «рыцарь в доспехах», вы описали не набор, а две несвязанные вещи. Держите стилевую часть идентичной для всего состава и варьируйте только идентифицирующую часть: вид, телосложение, снаряжение, цвет в рамках заявленной палитры.
Agent Sprite Forge создан для того, чтобы удерживать эту стилевую часть неизменной. Вы генерируете состав из общей стилевой спецификации, поэтому соотношение головы, толщина контура и диапазон палитры остаются постоянными, пока отдельные персонажи различаются. Проверка проста: выстройте кадры idle всего состава в конечном размере отображения. Если один читается как из другой игры, стилевая спецификация поплыла.
Сохранение единого стиля во всём составе
Зафиксируйте стилевые параметры до того, как напишете любой идентифицирующий промпт: размер ячейки, соотношение головы к телу, толщину контура в пикселях, диапазон палитры и направление затенения, художественное направление. Считайте их константами. Каждый промпт персонажа наследует их и добавляет только идентичность. Когда персонаж возвращается вне стиля, исправление почти всегда в стилевой части, а не в идентифицирующей.
Экспорт с готовностью к движку
Каждый кадр экспортируется как прозрачный PNG. Лист поставляется с задокументированной сеткой — ширина и высота ячейки, строк на направление, столбцов на кадр, порядок анимаций — чтобы импортёр знал, где находится каждая ячейка. Точка отсчёта находится у ступней, по горизонтали по центру центра масс персонажа, поэтому размещение спрайта в точке земли ставит ступни на землю, а не центр изображения.
Этот выбор точки отсчёта важен в любом движке. Sprite Editor в Unity позволяет задать пользовательскую точку привязки; установите её в bottom-center, чтобы соответствовать задокументированной точке отсчёта. Godot AnimatedSprite2D использует region rects для каждого кадра из нарезанной текстуры; держите нарезку выровненной по задокументированной сетке, иначе ваши циклы сместятся на один кадр. Свойства спрайта в GameMaker принимают сетку плюс точку отсчёта для каждого спрайта; применяется то же значение bottom-center.
Пресеты экспорта можно переопределять. Если ваша игра работает с другим размером ячейки, лист масштабируется чисто при целых множителях; именно нецелый масштаб вносит размытие. Точечная фильтрация для пиксель-арта, билинейная для рисованного. Прозрачная альфа сохраняется, поэтому очистка мата перед импортом не требуется.
| Движок | Путь импорта | Что настроить |
|---|---|---|
| Unity | Sprite Editor | пользовательская точка привязки в bottom-center; нарезка по сетке |
| Godot | AnimatedSprite2D + SpriteFrames | нарезать текстуру по задокументированной сетке; region rects для каждого кадра |
| GameMaker | свойства спрайта | размер сетки из документации; точка отсчёта bottom-center |
Следующая жизнь персонажа: 3D-мир
Спрайт-лист — это персонаж. Мир — это то, где он живёт. То же описание, что дало спрайт-лист, питает 3D-конструктор игр, который превращает его в проходимый мир Three.js: земля, коллизии, камера и место, где персонаж может стоять. Вы не переносите файлы между инструментами — описание и есть ассет.
Вы можете ходить по этому миру прямо в браузере. Поместите персонажа внутрь, управляйте камерой и проверьте, читается ли спрайт в том масштабе, который мир действительно предлагает. Персонаж, выглядевший правильно в плоском просмотрщике спрайтов, может выглядеть неправильно на освещённом 3D-полу, как только появляются перспектива и тени. Видя и то и другое одновременно, вы замечаете несоответствие рано.
Это тот же путь, которым идёт The Cyclops' Island — одно описание, играбельный мир — а Mini World — его уменьшенная версия. Создатель спрайтов — это 2D-конец того же конвейера: опишите вещь, получите пригодный ассет, затем поместите его туда, где можно двигаться.
- Agent Sprite ForgeГенерирует полные спрайт-листы — idle, walk, run, attack, cast в восьми направлениях — из одного описания персонажа, с прозрачными PNG-кадрами и задокументированной сеткой.
- The Cyclops' IslandСгенерированный 3D-мир, по которому можно ходить, построенный из описания, а не расставленный вручную, используемый как цель для персонажей, созданных в создателе спрайтов.
- Mini WorldПресет 3D-мира уменьшенного масштаба для быстрой проверки персонажа в проходимом пространстве без создания полной сцены.
- Конструктор 3D-игрБраузерный конструктор, превращающий текстовое описание в настоящий играбельный мир Three.js, куда персонаж помещается как управляемый актор.
Войдите в мир, которому он принадлежит
Спрайт — это персонаж, которому негде стоять. Последний шаг — тот, которого не предлагает никто другой: взять только что созданный лист и поместить его в мир, по которому кто-то может ходить — маленький остров, планету, дождливый уголок улицы. Каждый мир на этом сайте был создан из одного текстового описания и опубликован как страница, в которую можно играть.
FAQ
Что такое character sprite maker? +
Character sprite maker превращает текстовое описание в полный спрайт-лист — idle, walk, run, attack, cast в восьми направлениях — на прозрачных кадрах с задокументированной сеткой и точкой отсчёта у ступней. Он заменяет ручную отрисовку каждой позы этапом генерации из одного описания.
Сколько кадров нужно для цикла ходьбы? +
От четырёх до восьми. В игровом масштабе — примерно от 32 до 64 пикселей в высоту — четыре кадра читаются как ходьба, а восемь — как более плавная. Свыше восьми дополнительные кадры стоят больше по размеру листа и времени импорта, чем дают в читаемости.
Почему восемь направлений, а не четыре? +
Игры с видом сверху и изометрии используют фиксированную камеру и допускают движение в любом направлении, поэтому четыре направления оставляют диагонали визуальной ложью. Восемь направлений шагами по 45 градусов приводят направление взгляда спрайта в соответствие с вектором движения.
В каком формате экспортируются спрайты? +
Прозрачные PNG-кадры, разложенные на задокументированной сетке с точкой отсчёта у ступней, по горизонтали по центру персонажа. Тот же лист импортируется в Unity, Godot и GameMaker после установки точки привязки или отсчёта в bottom-center.
Как не дать персонажам в наборе выглядеть несогласованно? +
Зафиксируйте стилевые параметры — размер ячейки, соотношение головы к телу, толщину контура, диапазон палитры, направление затенения — и варьируйте только идентичность каждого персонажа. Дрейф почти всегда происходит из-за недоописанной стилевой части, а не из-за описания идентичности.
Можно ли использовать того же персонажа в 3D-мире? +
Да. То же описание, что сгенерировало спрайт-лист, питает конструктор 3D-игр, который превращает его в проходимый мир Three.js. Вы можете перемещаться по нему в браузере и проверять, как персонаж читается в том масштабе, который предлагает мир.
Назад к конструктору 3D-игр
Все 31 готовых 3D-миров, игр и сцен собраны на одной странице — в каждый из них можно играть.
Посмотрите реальные листы персонажей
Каждый ассет в этой библиотеке — прозрачный PNG, готовый для игры, с записанным промптом — спрайт-листы персонажей и библиотека спрайтовых ресурсов с тегами по действию, стилю и субъекту. Бесплатно для просмотра и скачивания.