PaperZD
요청만 하면 PaperZD로 2D 캐릭터 애니메이션을 만듭니다. 스프라이트 시트에서 플립북, 애니메이션 소스, Animation Blueprint, 스테이트 머신, 플레이 가능한 캐릭터, 플레이 확인까지.
Critical Failure Studio의 PaperZD는 대부분의 Paper2D 게임이 사용하는 애니메이션 시스템으로, 플립북 캐릭터를 위한 애니메이션 그래프와 스테이트 머신을 제공합니다. Fab과 GitHub에서 무료로 받을 수 있습니다.
PaperZD 확장 기능을 사용하면 Ultimate Engine CoPilot이 스프라이트 시트에서 플레이 중에 걷고 공격하는 캐릭터까지 그 설정을 대신 만들어 줍니다.
PaperZD 2.2.4와 Unreal Engine 5.7에서 테스트했습니다.
필요한 것
- 프로젝트에 설치하고 활성화한 PaperZD. PaperZD는 Unreal 자체의 Paper2D 플러그인을 사용하며, PaperZD를 켜면 함께 활성화됩니다.
- 캐릭터의 스프라이트 시트, 또는 이미 있는 플립북.
그리고 PaperZD 확장 기능을 켠 Ultimate Engine CoPilot이 필요합니다.
PaperZD가 없어도 이 확장 기능은 아무런 해를 끼치지 않습니다. 모든 PaperZD 도구는 플러그인이 설치되었는지, 활성화되었는지, 로드되었는지, 그리고 다음에 무엇을 해야 하는지를 알려 주는 메시지 하나로 응답합니다.
설정하기
- Fab 또는 GitHub에서 PaperZD를 설치하고 프로젝트에서 활성화합니다. Unreal이 요청하면 에디터를 재시작합니다.
- CoPilot에서 설정 > 확장 기능을 열고 PaperZD를 켭니다. 기본값은 꺼짐입니다.
- AI에게 PaperZD 상태를 확인해 달라고 요청하세요. PaperZD를 찾았는지, 못 찾았다면 무엇이 빠졌는지 알려 줍니다.
요청할 수 있는 것
- “이게 내 기사 스프라이트 시트야, 6열 13행. idle, walk, attack 플립북을 네 방향으로 만들고 PaperZD를 설정해 줘.”
- “Idle, Walk, Attack이 있는 스테이트 머신을 추가해 줘. 캐릭터가 움직이면 Walk, 멈추면 Idle로 돌아가고, Attack은 한 번 재생된 뒤 Idle로 돌아가게 해 줘.”
- “애니메이션이 캐릭터가 움직이는 방향을 향하게 해 줘.”
- “WASD로 이동하고 Space로 공격하는 플레이 가능한 캐릭터를 만들어 줘. 뒤에서 따라오는 카메라와 그 캐릭터를 스폰하는 게임 모드도 같이.”
- “walk 애니메이션에 발소리를 추가해 줘.”
- “게임이 실행되는 동안 캐릭터를 빨간색 팔레트로 바꿔 줘.”
이런 요청 뒤에서 AI는 다음을 할 수 있습니다:
- 스프라이트 시트를 애니메이션으로 자르기. 호출 한 번으로 시트가 스프라이트, 플립북, 애니메이션 시퀀스, 애니메이션 소스, Animation Blueprint가 됩니다. 방향이 여러 개인 애니메이션은 다방향 시퀀스 하나가 됩니다.
- 애니메이션 그래프 만들기. 시퀀스 재생, 스테이트 머신, 방향, 오버라이드 슬롯, bool, 숫자, enum으로 선택, 랜덤 플레이어, 캐시된 애니메이션 노드를 만들고 연결합니다.
- 스테이트 머신 만들기. 스테이트, 컨듀잇, 점프를 만들고, 변수에 따라, 현재 애니메이션이 끝났을 때, 항상 또는 절대 안 함으로 발동하는 트랜지션을 우선순위와 선택적인 전환용 시퀀스와 함께 설정합니다.
- 노티파이 추가하기. 타임라인에 커스텀 이벤트, 사운드, Niagara 또는 파티클 효과를 넣습니다. 커스텀 노티파이는 직접 채울 수 있는 함수가 됩니다.
- 스킨 추가하기. 의상이나 팔레트 교체를 위해 애니메이션마다 대체 플립북을 지정하고, 게임이 실행되는 동안 적용합니다.
- 캐릭터 만들기. Animation Blueprint로 구동되는 새 PaperZD 캐릭터를 만들거나, 기존 액터를 연결합니다. Level Sequence에 PaperZD 트랙을 추가할 수도 있습니다.
- 플레이에서 확인하기. 어떤 시퀀스가 재생 중인지, 얼마나 진행되었는지, 애니메이션 변수의 값을 읽고, 애니메이션을 재생, 정지하거나 점프해서 트랜지션을 직접 테스트합니다.
피해 가는 실수
PaperZD에는 깔끔하게 컴파일되는데도 아무 일도 하지 않는 함정이 몇 가지 있습니다. AI는 이를 알고 있습니다:
- 새 트랜지션의 규칙은 설정하기 전까지 “never”입니다. 그래서 캐릭터가 Idle에서 절대 벗어나지 못합니다.
- 규칙이 읽는 변수는 어딘가에서 값이 써져야 합니다. 보통은 Animation Blueprint의 tick입니다. 깔끔한 컴파일은 규칙이 실제로 바뀐다는 증거가 아니므로, AI는 플레이에서 확인합니다.
- 시퀀스는 자신의 애니메이션 소스에 속한 Animation Blueprint에서만 재생됩니다. 그래서 AI는 각 캐릭터의 에셋을 한곳에 모아 둡니다.
- 스테이트와 트랜지션은 한 번에 묶어서 컴파일됩니다. 편집을 마칠 때마다가 아니라 한 묶음의 편집이 끝난 뒤에 합니다.
- 스프라이트 시트 그리드는 위에서부터 왼쪽에서 오른쪽으로 읽습니다. 그래서 AI는 PaperZD와 같은 방식으로 셀을 셉니다.
팁과 요령
이 내용은 PaperZD와 CoPilot으로 작은 플레이 가능한 마을(영웅, 마을 주민, 스켈레톤 적, 돌아다니는 늑대)을 만들면서 얻은 것입니다. PaperZD 2.2.4와 Unreal Engine 5.7에서 테스트했습니다.
가장 중요한 세 가지:
- AI에게 시트의 실제 행 구성을 알려 주세요. 행을 0부터 세고, 어떤 행이 애니메이션이고 어떤 행이 다른 것인지 말하고, 각 플립북의 첫 프레임을 열어 확인하세요.
- 액터를 절대 회전시키지 마세요. 플립북은 평평한 카드이므로, 방향은 액터를 돌리는 것이 아니라 어떤 애니메이션이 재생되는지로 정해야 합니다.
- 깔끔한 컴파일을 믿지 마세요. 현재 애니메이션과 그 변수를 보고하는 플레이 테스트를 요청하세요.
시트를 정확히 설명하기
AI는 시트의 어느 행에 어떤 애니메이션이 있는지 볼 수 없습니다. 직접 알려 줘야 합니다.
- PixelLab에서 내보낸 시트는 92픽셀 셀이 6열 13행이며, 모든 애니메이션에 남쪽, 서쪽, 동쪽, 북쪽 순서로 네 방향이 들어 있습니다. 0행은 애니메이션이 아니라 회전 포즈 행입니다.
- 내보내기에는 어느 행에 어떤 애니메이션이 있는지 나열한 레이아웃 파일이 함께 들어 있습니다. 이 파일을 사용하세요. 순서는 캐릭터마다 다릅니다. 마을에서는 영웅과 마법사는 walk가 먼저, 스켈레톤은 attack이 먼저, 늑대는 idle이 먼저였습니다.
- 0부터 세고 회전 행을 명시하세요. 한 세션에서 프롬프트에 “1행에서 4행이 walk”라고 썼는데, AI가 1부터 세는 바람에 모든 애니메이션이 한 행씩 어긋나 영웅이 엉뚱한 방향을 바라보았습니다.
행은 이렇게 적으세요:
각 시트는 92픽셀 셀 6열 13행입니다. 행은 0부터 셉니다. 0행은 회전 행이니 건너뛰세요. 1행에서 4행은 walk(남, 서, 동, 북, 6프레임), 5행에서 8행은 attack, 9행에서 12행은 idle(4프레임)입니다.
중요한 설정
- 픽셀 아트 켜기. 텍스처는 nearest 필터링을 쓰고 밉맵을 쓰지 않으므로 픽셀이 선명하게 유지됩니다.
- 피벗은 하단 중앙. 모든 프레임에서 발이 같은 자리에 있습니다.
- 초당 프레임 수. 원하는 속도를 요청하세요. AI는 모든 것에 15를 썼고, 그러면 4프레임 idle이 약 0.25초 만에 반복되었습니다. idle 6, walk 12, attack 14가 알맞아 보였습니다.
- 방향 순서. 다방향 시퀀스는 위쪽에서 시계 방향으로 진행합니다: 북, 동, 남, 서.
- 배치된 액터의 값이 우선합니다. 레벨에 놓인 액터에 설정한 쿨다운이나 속도가 Blueprint 기본값보다 우선하므로, 변경해도 아무 일이 없는 것 같을 때는 배치된 사본을 확인하세요.
스프라이트가 카메라를 계속 향하게 하기
스프라이트가 돌아가거나, 기울어지거나, 옆면만 보이는 것을 막아 준 설정입니다:
- 액터 회전 끄기. 컨트롤러 Yaw 끄기, 이동 방향으로 회전 끄기, 컨트롤러 희망 회전 끄기. 켜 두면 카드가 액터와 함께 돌아 옆면만 보일 수 있습니다.
- Yaw 0으로 스폰하기. 스폰 Yaw가 180이면 월드에 고정된 카메라에서 카드가 뒤로 기울어집니다.
- 스프링 암을 월드에 고정하기. Pawn Control Rotation 끄기, Pitch, Yaw, Roll 상속 끄기, 충돌 테스트 끄기. Pitch -40과 Yaw -90이 잘 동작했습니다.
- 카드는 한 번만 기울이기. 카메라가 40도로 내려다볼 때 스프라이트에 -40의 Roll을 주고, 발이 바닥에 닿도록 올려 줍니다.
- 월드 축으로 이동하기. 액터의 forward나 right 벡터를 따라가지 않습니다.
- Set Directionality로 방향 표시하기. Facing이라는 Vector2D 변수를 넘겨 주세요. Facing은 매 tick 속도에서 계산해 쓰고, 캐릭터가 멈추면 마지막 값을 유지합니다.
이 카메라에서 키는 이렇게 매핑됩니다:
- D는 +X로 이동, Facing (1, 0).
- W는 -Y로 이동, Facing (0, 1).
- A는 -X로 이동, Facing (-1, 0).
- S는 +Y로 이동, Facing (0, -1).
좌우 또는 상하가 뒤바뀌어 나오면 Facing의 해당 부분의 부호를 뒤집으세요. 보정하겠다고 액터를 회전시키지 마세요.
플레이에서 테스트하기
- 트랜지션은 규칙이 바뀔 수 있기 전까지 아무것도 하지 않습니다. 새 규칙은 “never”이고, 변수를 읽는 규칙에는 그 변수를 쓰는 무언가가 필요합니다. 보통은 Animation Blueprint의 tick입니다. 현재 애니메이션을 보고하는 플레이 테스트를 요청하세요.
- Facing에 시작 값을 주세요. 캐릭터가 움직일 때만 값이 써지므로, 첫 걸음 전에 공격하면 0으로 읽힙니다. 기본값을 남쪽으로 두면 해결됩니다.
- 영웅이 대상을 향하게 하세요. 공격이 옆에 있는 무언가를 맞혀야 한다면, 휘두르기 전에 Facing을 가장 가까운 적 쪽으로 설정하도록 AI에게 요청하세요.
실제 세션
협업 클립은 CoPilot 채팅에서 Claude Code 에이전트와 함께 프롬프트 네 번으로 만들었습니다. AI는 스스로 플레이 테스트를 실행하고 발견한 문제를 고쳤습니다. 시간은 한 대의 컴퓨터에서 잰 것입니다.
- idle, walk, attack 스테이트 머신이 있는 캐릭터 두 명 가져오기: 약 2분 30초.
- 플레이 가능한 영웅(WASD로 이동, Space로 공격), 스프링 암 카메라, 게임 모드, 세 지점 사이를 걸어 다니는 마을 주민: 약 7분.
- 쫓아와서 공격하는 스켈레톤 적, 체력과 화면의 체력 카운터: 약 7분.
- 돌아다니는 늑대, 수집 가능한 약초, 약초 카운터: 약 7분.
룩은 별개의 작업입니다
AI는 애니메이션과 게임플레이를 만듭니다. 클립의 룩은 AI가 아니라 레벨에서 직접 설정했습니다:
- 따뜻한 햇빛과 랜턴 조명.
- Bloom, 비네트, 틸트 시프트 느낌을 위한 얕은 피사계 심도.
- 캐릭터에 적용한 Unlit Emissive 머티리얼.
Unlit 머티리얼과 고정 노출로 시작하세요. 노출을 눈대중으로 여러 번 조정하는 데 든 시간이 얻은 것보다 컸습니다.
한계
- AI는 시트의 각 행에 어떤 애니메이션이 있는지 모릅니다. 직접 알려 줘야 합니다.
- 적은 소품을 피하는 길 찾기 없이 영웅에게 곧장 걸어옵니다.
- 정확히 45도 각도에서는 두 축이 동률이 되어 애니메이션이 동쪽을 고릅니다.
- 체력은 0에서 멈춥니다. 죽음을 요청하기 전까지는 다른 일이 일어나지 않습니다.
- 키를 누르고 있는 도중의 애니메이션 상태는 읽을 수 없었고, AI는 추측하지 않고 그렇게 말했습니다.
권한
읽기는 자유롭습니다. 에셋, 그래프, 실행 중인 애니메이션을 살펴보는 작업은 묻지 않습니다. 변경은 다른 모든 도구와 마찬가지로 편집 전 확인 요청 또는 자동 편집 설정을 따릅니다.
동작 방식
- 플러그인 간 링크 없음. 확장 기능은 리플렉션만으로 PaperZD에 접근하므로, Ultimate Engine CoPilot은 PaperZD 설치 여부와 관계없이 똑같이 빌드되고 실행되며, 확장 기능은 같은 설계의 PaperZD 버전들에서 계속 동작합니다. 업데이트로 무언가의 이름이 바뀌면 도구는 추측하지 않고 빠진 필드의 이름을 알려 줍니다.
- 어디서나 동시에. 이 도구들은 CoPilot 채팅, Claude Code나 Cursor 같은 외부 MCP 클라이언트, 그리고 코딩 에이전트에서 동작합니다. MCP 통합을 참고하세요.
- 도구 39개. 소스, 시퀀스, 노티파이, 스킨, Animation Blueprint, 그래프, 스테이트 머신, 캐릭터, Sequencer를 위한 저작, 검사, 플레이 중 도구입니다.
확장 기능이 동작하는 방식은 확장 기능을, AI가 실행 중인 게임을 확인하는 방식은 플레이 테스트를 참고하세요.