Що нового у V2 · Новий інтерфейс, Crew, Blueprint у C++, мультиплеєрні тести й оновлення просто в редакторі Читати список змін → The V2 giveaway winners are in · 10 accounts won 50M AI tokens each See the winners →
Для досвідчених

PaperZD

Створюйте 2D-анімацію персонажів у PaperZD просто запитом: flipbook зі спрайт-аркуша, джерела анімації, Animation Blueprint, машини станів, ігрових персонажів і перевірку в грі.

PaperZD від Critical Failure Studio це система анімації, яку використовує більшість ігор на Paper2D: графи анімації та машини станів для персонажів на flipbook. Вона безкоштовна на Fab і на GitHub.

З розширенням PaperZD Ultimate Engine CoPilot створює такі налаштування за вас: від спрайт-аркуша до персонажа, який ходить і атакує в грі.

Протестовано з PaperZD 2.2.4 на Unreal Engine 5.7.


Що потрібно

  • PaperZD, встановлений і увімкнений у вашому проєкті. Він використовує власний плагін Unreal Paper2D, який PaperZD вмикає разом із собою.
  • Спрайт-аркуш для вашого персонажа або готові flipbook.

А також Ultimate Engine CoPilot з увімкненим розширенням PaperZD.

Без PaperZD розширення нічого не ламає. Кожен інструмент PaperZD відповідає одним повідомленням, яке каже, чи плагін встановлено, увімкнено й завантажено, і що робити далі.


Налаштування

  1. Встановіть PaperZD з Fab або GitHub і увімкніть його у своєму проєкті. Перезапустіть редактор, якщо Unreal попросить.
  2. У CoPilot відкрийте Налаштування > Розширення та увімкніть PaperZD. За замовчуванням воно вимкнене.
  3. Попросіть AI перевірити статус PaperZD. Він повідомить, чи знайдено PaperZD, а якщо ні, то чого бракує.

Що можна попросити

  • «Ось спрайт-аркуш мого лицаря, 6 стовпців на 13 рядків. Зроби flipbook для idle, walk і attack у чотирьох напрямках і налаштуй для цього PaperZD.»
  • «Додай машину станів з Idle, Walk і Attack. Walk, коли персонаж рухається, назад в Idle, коли він зупиняється, а Attack грає один раз і повертається в Idle.»
  • «Зроби так, щоб анімації були повернуті туди, куди рухається персонаж.»
  • «Зроби ігрового персонажа з WASD для руху та Space для атаки, з камерою позаду та game mode, який його створює.»
  • «Додай звук кроків до анімації walk.»
  • «Перемкни персонажа на червону палітру, поки гра працює.»

За цими запитами AI може:

  • Нарізати спрайт-аркуш на анімації. Один виклик перетворює аркуш на спрайти, flipbook, послідовності анімації, джерело анімації та Animation Blueprint. Анімації з кількома напрямками стають однією багатонапрямковою послідовністю.
  • Побудувати граф анімації. Вузли play sequence, машини станів, напрямку, override slot, вибору за bool, числом чи enum, random player і cached animation, та з’єднати їх.
  • Створювати машини станів. Стани, conduit і jump, із переходами, що спрацьовують за змінною, коли поточна анімація завершується, завжди або ніколи, з пріоритетом і необов’язковою перехідною послідовністю.
  • Додавати notify. Власні події, звуки та ефекти Niagara або частинок на часовій шкалі; власні notify стають функціями, які ви можете заповнити.
  • Додавати скіни. Замінні flipbook для кожної анімації, для вбрання чи заміни палітри, які застосовуються, поки гра працює.
  • Створювати персонажів. Нового персонажа PaperZD, яким керує Animation Blueprint, або підключити наявного актора. Також може додати доріжку PaperZD до Level Sequence.
  • Перевіряти в грі. Прочитати, яка послідовність грає, наскільки вона просунулася і які значення мають змінні анімації, а також відтворити, зупинити анімацію чи перейти до неї, щоб вручну перевірити перехід.

Яких помилок він уникає

У PaperZD є кілька пасток, які без проблем компілюються і все одно нічого не роблять. AI про них знає:

  • Правило нового переходу це «ніколи», доки його не задано, тож персонаж ніколи не вийшов би з Idle.
  • Змінну, яку читає правило, має бути десь записано, зазвичай у tick Animation Blueprint. Чиста компіляція не доводить, що правило колись змінюється, тому AI перевіряє в грі.
  • Послідовність грає лише в Animation Blueprint свого джерела анімації, тож він зберігає ресурси кожного персонажа разом.
  • Стани й переходи компілюються одним пакетом наприкінці групи змін, а не після кожної.
  • Сітка спрайт-аркуша читається зліва направо, починаючи зверху, тож AI рахує клітинки так само, як PaperZD.

Поради та хитрощі

Вони походять зі створення невеликого ігрового села з PaperZD і CoPilot: герой, селянин, вороги-скелети та вовки, що блукають. Протестовано з PaperZD 2.2.4 на Unreal Engine 5.7.

Три найважливіші:

  1. Скажіть AI справжню розкладку рядків вашого аркуша. Нумеруйте рядки з 0, скажіть, які рядки є анімаціями, а який рядок чимось іншим, і відкрийте перший кадр кожного flipbook, щоб перевірити.
  2. Ніколи не обертайте актора. Flipbook це пласка картка, тож напрямок має визначатися тим, яка анімація грає, а не поворотом актора.
  3. Не довіряйте чистій компіляції. Попросіть ігровий тест, який повідомляє поточну анімацію та її змінні.

Опишіть аркуш точно

AI не бачить, у якому рядку вашого аркуша яка анімація. Ви маєте йому сказати.

  • Аркуш, експортований з PixelLab, має 6 стовпців і 13 рядків із клітинками по 92 пікселі, з чотирма напрямками в кожній анімації в порядку південь, захід, схід, північ. Рядок 0 це рядок поз обертання, а не анімація.
  • Експорт постачається з файлом розкладки, який вказує, у якому рядку яка анімація. Використовуйте його. Порядок різниться від персонажа до персонажа: у селі герой і маг починалися з walk, скелет з attack, а вовк з idle.
  • Рахуйте з 0 і назвіть рядок обертання. В одній сесії в запиті було «рядки з 1 по 4 це walk». AI порахував з 1, тож кожна анімація зсунулася на один рядок, а герой дивився не туди.

Запишіть рядки так:

Кожен аркуш це 6 стовпців на 13 рядків клітинок по 92 пікселі. Нумеруй рядки з 0. Рядок 0 це рядок обертання, пропусти його. Рядки з 1 по 4 це walk (південь, захід, схід, північ, 6 кадрів), рядки з 5 по 8 attack, рядки з 9 по 12 idle (4 кадри).

Важливі налаштування

  • Pixel art увімкнено. Текстури використовують nearest filtering і не мають mip, тож пікселі залишаються чіткими.
  • Pivot внизу по центру. Ноги залишаються в тому самому місці на кожному кадрі.
  • Кадрів за секунду. Просіть потрібну швидкість. AI використав 15 для всього, через що 4-кадровий idle зациклювався приблизно за чверть секунди. Idle 6, walk 12 і attack 14 виглядали правильно.
  • Порядок напрямків. Багатонапрямкова послідовність іде за годинниковою стрілкою від верху: північ, схід, південь, захід.
  • Значення на розміщеному акторі мають перевагу. Cooldown або швидкість, задані на акторі на рівні, перекривають типове значення Blueprint, тож коли зміна ніби нічого не робить, перевірте розміщені копії.

Тримайте спрайт обличчям до камери

Ось налаштування, яке зупинило обертання, нахил і розворот спрайта ребром:

  • Вимкніть обертання актора. Controller yaw вимкнено, orient rotation to movement вимкнено, controller desired rotation вимкнено. Якщо залишити їх увімкненими, картка обертається разом з актором і може стати ребром.
  • Створюйте з yaw 0. Yaw 180 при створенні нахиляє картку від камери, закріпленої у світі.
  • Закріпіть spring arm у світі. Pawn control rotation вимкнено, inherit pitch, yaw і roll вимкнено, collision test вимкнено. Спрацювали pitch -40 і yaw -90.
  • Нахиліть картку один раз. Коли камера дивиться вниз на 40 градусів, задайте спрайту roll -40 і підніміть його так, щоб ноги торкалися підлоги.
  • Рухайтеся у світових осях, а не вздовж вектора forward чи right актора.
  • Показуйте напрямок через Set Directionality. Подайте на нього змінну Vector2D з назвою Facing. Записуйте Facing на кожному tick зі швидкості та зберігайте останнє значення, коли персонаж зупиняється.

З такою камерою клавіші відповідають так:

  • D рухає вздовж +X, Facing (1, 0).
  • W рухає вздовж -Y, Facing (0, 1).
  • A рухає вздовж -X, Facing (-1, 0).
  • S рухає вздовж +Y, Facing (0, -1).

Якщо ліво з правом або верх з низом виходять переставленими, змініть знак цієї частини Facing. Не обертайте актора для компенсації.

Перевіряйте в грі

  • Перехід нічого не робить, доки його правило не може змінитися. Нове правило це «ніколи», а правилу, що читає змінну, потрібно щось, що цю змінну записує, зазвичай tick Animation Blueprint. Попросіть ігровий тест, який повідомляє поточну анімацію.
  • Задайте Facing початкове значення. Його записують лише тоді, коли персонаж рухається, тож атака до першого кроку читає нуль. Типове значення «південь» це виправляє.
  • Нехай герой дивиться на ціль. Якщо атака має влучити в щось збоку, попросіть AI виставити Facing у бік найближчого ворога перед ударом.

Справжня сесія

Колаб-кліп створено за чотири запити в чаті CoPilot з агентом Claude Code. AI сам запускав ігрові тести й виправляв те, що знаходив. Час наведено з однієї машини.

  1. Двоє персонажів імпортовано, з машинами станів idle, walk та attack: приблизно 2,5 хвилини.
  2. Ігровий герой (WASD для руху, Space для атаки), камера на spring arm, game mode і селянин, що ходить між трьома точками: приблизно 7 хвилин.
  3. Ворог-скелет, який переслідує й атакує, очки здоров’я та лічильник здоров’я на екрані: приблизно 7 хвилин.
  4. Вовки, що блукають, трави для збору та лічильник трав: приблизно 7 хвилин.

Вигляд це окрема робота

AI створює анімацію та ігрову логіку. Вигляд кліпу налаштовано на рівні, а не через AI:

  • Тепле сонячне світло та світло ліхтарів.
  • Bloom, віньєтка та мала глибина різкості для відчуття tilt-shift.
  • Unlit emissive матеріал на персонажах.

Почніть з unlit матеріалу та фіксованої експозиції. Підбір експозиції на око за багато раундів коштував більше часу, ніж дав.

Обмеження

  • AI не знає, яка анімація в кожному рядку вашого аркуша. Ви маєте йому сказати.
  • Вороги йдуть прямо до героя, без пошуку шляху довкола предметів.
  • Рівно під кутом 45 градусів дві осі рівні, і анімація обирає схід.
  • Здоров’я зупиняється на 0. Нічого іншого не відбувається, доки ви не попросите смерть.
  • Він не зміг прочитати стан анімації посеред утримання клавіші й сказав про це замість того, щоб вгадувати.

Дозволи

Читання вільне: перегляд ресурсу, графа чи запущеної анімації ніколи не питає. Зміни підпорядковуються вашому налаштуванню Ask Before Edit або Auto Edit, як і в кожному іншому інструменті.


Як це працює

  • Жодного зв’язку між плагінами. Розширення звертається до PaperZD лише через reflection, тож Ultimate Engine CoPilot збирається й працює однаково з PaperZD чи без нього, а розширення продовжує працювати між версіями PaperZD того самого дизайну. Якщо оновлення щось перейменує, інструмент назве відсутнє поле замість того, щоб вгадувати.
  • Скрізь одночасно. Інструменти працюють у чаті CoPilot, у зовнішніх MCP-клієнтах, як-от Claude Code і Cursor, та в агентах для програмування. Див. Інтеграція MCP.
  • 39 інструментів. Інструменти створення, перегляду та роботи під час гри для джерел, послідовностей, notify, скінів, Animation Blueprint, графів, машин станів, персонажів і Sequencer.

Дивіться Розширення, щоб дізнатися, як працюють розширення, і Ігрове тестування, щоб дізнатися, як AI перевіряє запущену гру.