Генератор спрайтов персонажа: полные спрайт-листы из промпта



Создайте собственный генератор спрайтов персонажа
Создавайте спрайты персонажей — покой, ходьба, атака, восемь направлений — из одного описания. Прозрачные кадры, ровная сетка, готовность для движка. Затем поместите персонажа в 3D-мир, по которому можно ходить.
Генератор спрайтов персонажа принимает текстовое описание и возвращает полный спрайт-лист: покой, ходьба, бег, атака, каст, в восьми направлениях, на прозрачных кадрах, на фиксированной сетке, с точкой привязки у ног. Вы описываете персонажа — тип телосложения, силуэт, палитру, оружие в руках, слои одежды — а инструмент отрисовывает каждую позу из этого описания, а не один основной кадр, который приходится перерисовывать вручную.
Разница между спрайтом и спрайт-листом — это разница между изображением и системой анимации. Один хороший кадр покоя — это картинка. Лист — это конечный автомат: количества кадров, которые движок может зациклить, направления, по которым он может индексировать, и единообразный персонаж во всех ячейках, чтобы цикл ходьбы не менял форму на середине цикла. Neta Studio собирает весь лист из промпта, а затем позволяет поместить этого персонажа в 3D-мир, по которому можно ходить.
Один промпт — полный лист персонажа
Вы описываете персонажа простым языком: вид или план тела, рост относительно сетки, телосложение, волосы или шлем, слои одежды, что он держит, диапазон палитры и художественное направление (пиксельная графика, живопись, плоский вектор). Генератор разбирает это в спецификацию персонажа и отрисовывает полную матрицу — каждую анимацию, каждое направление — из одной и той же спецификации. На выходе получается лист, а не выбор отдельной позы.
Один кадр почти ничего не говорит о том, подходит ли персонаж для игры. Как только он начинает двигаться, должны выполняться три условия: силуэт остаётся читаемым в том размере, в котором вы его действительно рисуете, палитра не меняется от кадра к кадру, а опорная точка не смещается. Лист делает эти ограничения видимыми сразу. Вы видите ходьбу рядом с покоем, сравниваете кадр 3 с кадром 1 и замечаете дрейф до того, как он попадёт в движок.
Работа из одного описания также делает персонажа воспроизводимым. Измените промпт — замените плащ на латы, сдвиньте палитру на два шага в холодную сторону — и вы перегенерируете весь лист с этим изменением везде. Вам не нужно вручную править сорок кадров под новое цветовое решение.
01
Напишите описание персонажа: тип телосложения, рост в единицах сетки, телосложение, одежда и предметы в руках, палитра, художественное направление.
02
Задайте сетку кадров: квадратные ячейки, удобные для степеней двойки, порядок строк анимаций в документации.
03
Сгенерируйте лист и сравните первый кадр каждой анимации с последним — они должны быть соседними, а не идентичными.
04
Проверяйте силуэт в конечном масштабе отображения, а не в увеличенном виде.
05
Экспортируйте прозрачные кадры PNG с задокументированной сеткой и точкой привязки у ног.
Покой, ходьба, бег, атака, каст
Пять анимаций покрывают большинство 2D-персонажей: покой, ходьба, бег, атака, каст. Покой — это цикл дыхания, в котором персонаж проводит большую часть своей жизни. Ходьба — цикл перемещения, обычно с самыми заметными контактами стоп. Бег — то же движение, но быстрее и с большим наклоном корпуса. Атака — одноразовая анимация с замахом, кадром контакта и восстановлением. Каст — одноразовая анимация с удержанием: поза, в которой персонаж находится, пока снаряд или AOE не сработает.
Количество кадров значит больше, чем многие ожидают. В игровом масштабе — персонаж высотой примерно от 32 до 64 пикселей на экране 320×180 или 640×360 — четыре кадра ходьбы читаются как ходьба; шесть — как более плавная; восемь начинают стоить больше, чем дают. Циклы бега часто работают на четырёх. Покой — от двух до четырёх; два — классическое дыхание, четыре дают вторичное действие вроде покачивания или подрагивания оружия. Атака обычно занимает от трёх до пяти кадров: замах, контакт, продолжение, восстановление. Каст — от четырёх до шести с удержанным кадром.
Здесь проблема в тайминге, а не в количестве кадров. Четырёхкадровая ходьба, экспортированная без задержки между кадрами, воспроизводится на частоте движка и выглядит как дрожание, а не как шаг. Лист поставляется с рекомендуемым значением fps для каждой анимации, чтобы у импортёра движка было разумное значение по умолчанию, которое можно переопределить.
| Анимация | Кадры | Цикл | Примечания |
|---|---|---|---|
| Покой | 2–4 | да | дыхание или покачивание; первый и последний кадры соседние |
| Ходьба | 4–8 | да | контакты стоп на чётных кадрах читаются чище всего |
| Бег | 4 | да | больше наклона, более длинный шаг, чем при ходьбе |
| Атака | 3–5 | нет | замах, контакт, продолжение |
| Каст | 4–6 | нет | включает удержанный кадр для срабатывания |
Восемь направлений из одного описания
Восемь направлений означают, что лист покрывает С, СВ, В, ЮВ, Ю, ЮЗ, З, СЗ — полный круг с шагом 45 градусов. Играм с видом сверху и изометрическим играм это нужно, потому что игрок видит персонажа с фиксированной камеры и может двигаться в любом направлении. Четыре направления (С, В, Ю, З) оставляют диагонали визуальной ложью: спрайт смотрит на восток, пока персонаж идёт на северо-восток. Восемь направлений приводят поворот спрайта в соответствие с вектором движения.
Лист раскладывается как матрица: одна строка на направление, один столбец на кадр внутри анимации или один блок на направление, содержащий все анимации в одном и том же порядке. Подходит любой вариант, если порядок задокументирован. Sprite Editor в Unity нарезает по сетке; AnimatedSprite2D в Godot хочет отдельные region rects или нарезанную текстуру; редактор спрайтов GameMaker принимает сетку плюс точку привязки для каждого кадра. Порядок, по которому вы индексируете в движке, должен совпадать с порядком, в котором лист был отрисован, иначе персонаж будет идти спиной вперёд.
Тонкая часть — переходные кадры. Если отрисовать только восемь канонических направлений, спрайт будет резко переключаться между ними, когда вектор движения пересекает границу 22,5 градуса. Два способа смягчить: отрисовать восемь направлений и закрыть границу короткой анимацией поворота, либо принять резкое переключение и оставить поворот персонажа с привязкой к ближайшему из восьми. Оба варианта допустимы; лист поддерживает любой, потому что ничто в нём не предполагает наличия кадра поворота.
Единообразные персонажи во всём наборе
Настоящая проблема в работе со спрайтами — это дрейф. Персонаж один сгенерирован с определённым соотношением головы и тела, определённой палитрой, определённой толщиной линий. Персонаж два сгенерирован позже, по иначе сформулированному промпту, и получается на полголовы выше, с более холодными тонами кожи и более толстым контуром. Рядом на экране отряда они не выглядят так, будто принадлежат одной игре.
Дрейф возникает из-за недостаточно конкретных промптов. Если первый промпт говорил «низкий и коренастый, приглушённая земляная палитра, ячейки 32 пикселя, контур в один пиксель», а второй — «рыцарь в доспехах», вы описали не набор, а две несвязанные вещи. Держите часть со стилем одинаковой для всего состава и меняйте только часть с идентичностью: вид, телосложение, снаряжение, цвет в пределах заданной палитры.
Agent Sprite Forge создан, чтобы удерживать эту часть со стилем неизменной. Вы генерируете состав из общей спецификации стиля, поэтому соотношение головы и тела, толщина контура и диапазон палитры остаются постоянными, пока отдельные персонажи различаются. Проверка проста: выстройте кадры покоя всего состава в конечном размере отображения. Если один читается как другая игра, спецификация стиля поплыла.
Сохранение единого стиля для всего состава
Зафиксируйте стилевые параметры до того, как напишете хотя бы один промпт идентичности: размер ячейки, соотношение головы и тела, толщина контура в пикселях, диапазон палитры и направление затенения, а также художественное направление. Считайте их константами. Каждый промпт персонажа наследует их и добавляет только идентичность. Когда персонаж получается не в стиле, исправление почти всегда в части со стилем, а не в части с идентичностью.
Экспорт, готовый для движка
Каждый кадр экспортируется как прозрачный PNG. Лист поставляется с задокументированной сеткой — ширина и высота ячейки, строки на направление, столбцы на кадр, порядок анимаций — чтобы импортёр знал, где находится каждая ячейка. Точка привязки находится у ног, по горизонтали по центру массы персонажа, поэтому при размещении спрайта в точке на земле ноги оказываются на земле, а не центр изображения.
Этот выбор точки привязки важен в любом движке. Sprite Editor в Unity позволяет задать пользовательский pivot; установите его в bottom-center, чтобы совпасть с задокументированной точкой привязки. AnimatedSprite2D в Godot использует region rects для каждого кадра из нарезанной текстуры; держите нарезку выровненной по задокументированной сетке, иначе циклы будут смещены на один кадр. Свойства спрайта в GameMaker принимают сетку плюс точку привязки для каждого спрайта; применяется то же значение bottom-center.
Пресеты экспорта можно переопределить. Если в вашей игре другой размер ячейки, лист чисто масштабируется на целые множители; именно нецелый масштаб вносит размытие. Point filtering для пиксельной графики, bilinear для рисованной. Прозрачная альфа сохраняется, поэтому перед импортом не нужно чистить мат.
| Движок | Путь импорта | Что настроить |
|---|---|---|
| Unity | Sprite Editor | пользовательский pivot в bottom-center; нарезка по сетке |
| Godot | AnimatedSprite2D + SpriteFrames | нарезать текстуру по задокументированной сетке; region rects для каждого кадра |
| GameMaker | свойства спрайта | размер сетки из документации; origin bottom-center |
Следующая жизнь персонажа: 3D-мир
Спрайт-лист — это персонаж. Мир — это то, где он живёт. То же описание, которое создало лист, поступает в 3D-конструктор игр, который превращает его в мир на Three.js, по которому можно ходить: земля, коллизия, камера и место, где персонаж может стоять. Вы не переносите файлы между инструментами — описание и есть ассет.
Вы можете пройти по этому миру в браузере. Поместите персонажа внутрь, управляйте камерой и проверьте, читается ли спрайт в том масштабе, который реально даёт мир. Персонаж, который выглядел правильно в плоском просмотрщике спрайтов, может выглядеть неправильно на освещённом 3D-полу, когда появляются перспектива и тени. Одновременный просмотр обоих помогает поймать несоответствие рано.
Это тот же путь, которым идёт The Cyclops' Island — одно описание, играбельный мир, — а Mini World — его уменьшенная версия. Генератор спрайтов — это 2D-конец того же конвейера: опишите вещь, получите пригодный ассет, затем поместите его туда, где можно двигаться.
- Agent Sprite ForgeГенерирует полные спрайт-листы — покой, ходьба, бег, атака, каст в восьми направлениях — из одного описания персонажа, с прозрачными кадрами PNG и задокументированной сеткой.
- The Cyclops' IslandСгенерированный 3D-мир, по которому можно ходить, построенный из описания, а не собранный вручную, используемый как площадка для персонажей, созданных в генераторе спрайтов.
- Mini WorldПресет небольшого 3D-мира для быстрой проверки персонажа в пространстве, по которому можно ходить, без создания полной сцены.
- 3D-конструктор игрБраузерный конструктор, который превращает текстовое описание в настоящий играбельный мир на Three.js, а персонаж помещается в него как управляемый актёр.
Войдите в мир, которому он принадлежит
Спрайт — это персонаж, которому негде стоять. Последний шаг — тот, который больше никто не предлагает: возьмите лист, который вы только что создали, и поместите его в мир, по которому можно ходить, — небольшой остров, планету, дождливый угол улицы. Каждый мир на этом сайте был создан из одного текстового описания и опубликован как страница, в которую можно играть.
Частые вопросы
Что такое генератор спрайтов персонажа? +
Генератор спрайтов персонажа превращает текстовое описание в полный спрайт-лист — покой, ходьба, бег, атака, каст в восьми направлениях — на прозрачных кадрах с задокументированной сеткой и точкой привязки у ног. Он заменяет ручную отрисовку каждой позы этапом генерации из одного описания.
Сколько кадров нужно для цикла ходьбы? +
От четырёх до восьми. В игровом масштабе — примерно от 32 до 64 пикселей в высоту — четыре кадра читаются как ходьба, а восемь — как более плавная. Свыше восьми дополнительные кадры стоят больше в размере листа и времени импорта, чем дают в читаемости.
Почему восемь направлений вместо четырёх? +
Игры с видом сверху и изометрические игры используют фиксированную камеру и позволяют движение в любом направлении, поэтому четыре направления оставляют диагонали визуальной ложью. Восемь направлений с шагом 45 градусов приводят поворот спрайта в соответствие с вектором движения.
В каком формате экспортируются спрайты? +
Прозрачные кадры PNG, разложенные по задокументированной сетке с точкой привязки у ног, по горизонтали по центру персонажа. Тот же лист импортируется в Unity, Godot и GameMaker после установки pivot или origin в bottom-center.
Как сделать, чтобы персонажи в наборе не выглядели разрозненно? +
Зафиксируйте стилевые параметры — размер ячейки, соотношение головы и тела, толщину контура, диапазон палитры, направление затенения — и меняйте только идентичность для каждого персонажа. Дрейф почти всегда возникает из-за недостаточно конкретной части со стилем, а не из-за описания идентичности.
Можно ли использовать одного и того же персонажа в 3D-мире? +
Да. То же описание, которое сгенерировало спрайт-лист, поступает в 3D-конструктор игр, который превращает его в проходимый мир на Three.js. Вы можете перемещаться по нему в браузере и проверить, как персонаж читается в масштабе, который даёт мир.
Назад к 3D-конструктору игр
Все 31 готовых 3D-мира, игры и сцены собраны на одной странице — в каждую можно играть.