HERO INC. · 제작 노트
캐릭터 스프라이트 제작은 이렇게 했습니다
제가 용사주식회사 캐릭터를 만들고 스프라이트 애니메이션으로 정리한 과정을 공유합니다. ImageGen 신버전 출시를 계기로, 영상에서 짧게 다룬 작업 순서와 프롬프트 예시를 정리했습니다.
SSOT를 먼저 정합니다
SSOT는 이후 작업에서 계속 돌아오는 하나의 승인 기준입니다. 제 작업에서는 제국군 거너를 그림체와 몸 비율의 기준으로 사용합니다. 새 결과물이 마음에 든다고 매번 기준을 바꾸면, 캐릭터의 풍도 조금씩 달라집니다.
기준을 GPT 이미지 생성만으로 만들지는 않습니다. Stable Diffusion으로 만든 결과물도 활용합니다. 어느 도구에서 만들었든, 선택한 이미지와 유지할 규칙을 함께 고정하는 것이 핵심입니다.

풍은 맞추고, 캐릭터의 외형은 유지합니다
어프렌티스 메이지를 만들 때도 거너는 그림체 참조입니다. 거너의 총이나 제복을 가져오는 것이 아니라, 픽셀 표현과 비율을 맞춥니다. 메이지의 얼굴·의상·장비는 메이지의 참조 이미지에서 가져옵니다.

그림체 맞추기 프롬프트예시 펼치기 +
이미지 1은 제국군 거너, 이미지 2는 만들 캐릭터의 참조입니다. 다른 캐릭터라면 apprentice mage와 외형 설명을 바꿔주세요.
Reference image 1: the Imperial Gunner, used ONLY for pixel-art style, body proportions, shading and level of detail. Reference image 2: the character to redraw, used for character identity. Redraw the apprentice mage from image 2 in the same visual style as image 1. Preserve the mage's face, hair, outfit, equipment and colors from image 2. Do not copy the gunner's rifle, uniform or hat. Match the reference's head-to-body ratio, pixel clusters and shading. One full-body idle pose, facing right in three-quarter view. Keep all equipment and feet visible with empty margins. No text, extra characters, scenery, particles or ground shadow. Request a transparent background. Change style only; preserve character identity.
키포즈 8개를 먼저 만듭니다
승인한 캐릭터에서 자세만 바꾸는 작업입니다. 얼굴, 모자, 제복, 총은 그대로 두고 대기·조준·웅크리기·피격·이동 등에 사용할 포즈를 뽑습니다.
이 단계에서 손의 그립, 총의 형태, 장비 누락과 잘림을 확인합니다. 투명 배경을 요청해도 실제 알파가 생겼는지 확인해야 합니다. 원본에 체크무늬가 그림 자체로 들어갈 수도 있습니다.

키포즈 8개 프롬프트예시 펼치기 +
승인한 거너 이미지를 첨부합니다. 다른 캐릭터에는 장비와 포즈 목록을 바꿔 쓰세요. 아래 문장은 재사용하기 위한 예시이며, 생성 결과는 직접 검수합니다.
Use the attached approved Imperial Gunner image as the fixed character reference. Create exactly 8 full-body key poses in a 4-column by 2-row sheet, in this order: 1. Idle rifle guard 2. Level rifle aim 3. Raised rifle bracing 4. Crouched aim 5. Recoil / hit reaction 6. Low forward dash 7. Extended movement pose 8. Recovery guard Keep the same face, hair, hat, uniform, boots, rifle, palette and pixel-art style in every pose. Keep the same body and head scale. A crouched pose must be naturally shorter; do not enlarge it to match a standing pose. Keep the entire weapon and feet inside each cell with empty margins between poses. No labels, muzzle flashes, floating bullets, scenery or ground shadows. Request a transparent background, not a painted checkerboard.
키포즈를 애니메이션으로 연결합니다
키포즈 8장이 곧 완성된 애니메이션 8개는 아닙니다. 필요한 포즈를 골라 동작 순서에 배치하고, 중간 움직임과 재생 간격을 조정합니다. 거너는 대기·사격·스킬·피격·전진·후퇴 동작으로 조립합니다.
생성 도구로 동작을 보완한다면 승인 원본은 외형, 키포즈는 자세를 담당하도록 구분하세요. 시트가 보기 좋아도 재생하면 장비나 얼굴이 바뀔 수 있으니, 반드시 움직여 보며 확인합니다.
동작 시퀀스 프롬프트예시 펼치기 +
이미지 1은 승인 원본, 이미지 2는 선택한 키포즈입니다. [ACTION], [FRAME COUNT], [DIRECTION], [COLUMNS], [ROWS]를 실제 동작·프레임 수·방향·격자로 바꿔주세요.
Reference image 1: the approved character master, used for identity, equipment, palette and pixel-art style. Reference image 2: the selected key poses, used ONLY for posture and motion. Create a short [ACTION] sprite sequence of [FRAME COUNT] frames, facing [DIRECTION], in a [COLUMNS] by [ROWS] grid. Replace all bracketed fields before generating. Preserve the character from image 1 across all frames. Follow the poses from image 2 without changing the face, outfit or weapon. Use one consistent drawing scale. Keep clear margins and complete weapons and feet in every cell. Do not enlarge crouching or leaning poses. No text, extra equipment, particles or ground shadows. Request transparent alpha. The sequence will be inspected in motion and aligned after generation.
중심점과 체고를 맞춥니다
그림이 잘 나와도 프레임마다 크기나 발 위치가 달라지면 캐릭터가 흔들립니다. 제 작업에서는 정렬 스크립트로 기준 배율과 중심점, 발 위치를 맞춥니다.
- 기준 체고를 정합니다. 서 있는 기준 자세로 캐릭터의 몸 크기를 맞춥니다.
- 같은 배율을 적용합니다. 포즈마다 따로 확대하지 않습니다. 웅크린 자세는 자연스럽게 낮아야 합니다.
- 발 기준점을 고정합니다. 같은 셀 안에서 발과 몸의 가로 기준을 맞춥니다. 무기 끝을 발로 오인하지 않도록 확인합니다.
- 모든 동작을 재생합니다. 대기뿐 아니라 사격·피격·이동에서도 크기와 위치가 튀는지 확인합니다.
아군·적군 색의 아웃라인을 넣습니다
용사주식회사에서는 아군과 적군을 구분하는 색으로 외곽선을 넣습니다. 투명 경계의 알파값 차이가 배경 위에서 너무 튀어 보이지 않게 정리하는 역할도 합니다.
완성 여부는 확대 이미지보다 실제 표시 크기에서 판단합니다. 다대다 전투를 상정하기 때문에, 세부 표현을 조금 뭉개더라도 실루엣과 동작이 읽히는 쪽으로 맞춥니다.
경계를 확대해서 비교해 보세요
실제 렌더러의 단색 실루엣 복제 방식을 SVG로 보여주는 설명용 비교입니다. 거너의 기본 기준인 두께 1.65px, 복제당 불투명도 0.48을 사용했습니다. 게임의 조명·선택 강조·다른 등급에 따른 변화는 포함하지 않습니다.
제가 .mjs로 고정한 기준을 눈으로 보세요
좋은 그림을 뽑는 것과, 게임에서 쓸 수 있게 정리하는 것은 다른 작업이었습니다. 저는 배경 제거 → 연결된 포즈 분리 → 불투명 영역 측정 → 발 중심 계산 → 같은 셀에 배치하는 순서를 스크립트로 고정했습니다.
- 정리된 영역
- 377 × 471px
- 적용 배율
- 1.00배
- 셀 안 위치
- x 128 / y 23
- 발 기준선
- y 494 / 여백 18px
왼쪽은 원본을 4 × 2로 단순히 나눈 셀입니다. 총이 칸을 넘어가면 잘릴 수 있어, 정리할 때는 연결된 실루엣을 먼저 분리했습니다. 오른쪽은 실제 배경 제거·연결 성분 분리·발 중심 계산을 다시 적용한 자료입니다. 파란 박스는 장비까지 포함한 알파 영역이며, 몸 자체의 체고와 구분합니다.
대기 영역은 471px, 웅크린 영역은 320px입니다. 둘 다 1배로 남깁니다. 낮아진 포즈를 대기 높이에 맞춰 확대하지 않습니다.
실제 아틀라스를 동작별로 재생합니다
아래는 게임에서 사용하는 거너 아틀라스의 실제 6프레임입니다. 키포즈 선택 순서와 동작별 작은 위치 보정이 어떻게 합쳐졌는지 확인할 수 있습니다.
대기·전진·후퇴는 같은 키포즈를 반복하고 스크립트의 위치 변화로 간단히 움직입니다. 관절을 새로 그린 중간 프레임과는 구분합니다. 기준 정렬 후 적용한 동작별 보정 때문에 재생 중 발 위치는 조금 달라질 수 있습니다.
왜 이미지 전체의 가운데를 쓰지 않나요?
총을 오른쪽으로 뻗으면 불투명 영역의 가운데도 오른쪽으로 이동합니다. 이 가운데를 셀 중앙에 두면 몸이 왼쪽으로 밀립니다. 거너 빌더는 아래쪽 12% 영역에서 알파가 16 이상인 픽셀의 좌우 끝을 찾아, 그 중간을 발 중심으로 추정합니다. 무기나 망토가 아래로 내려오는 포즈는 따로 검수합니다.
셀을 넘는 결과는 조용히 잘라내지 않습니다
거너 빌더는 512px 셀, 가장자리 2px, 바닥 여백 18px을 사용합니다. 셀을 조금 넘으면 최근접 보간으로 축소하고, 필요한 배율이 0.85보다 작으면 오류로 중단합니다. 포즈별 높이를 같은 값으로 키우는 처리는 하지 않습니다.
핵심 배치 로직코드 펼치기 +
실제 배치 계산을 읽기 쉽게 축약했습니다. 배경 제거·분리 함수와 동작별 보정은 생략한 설명용 코드입니다.
const cell = 512;
const bottomPadding = 18;
const edgePadding = 2;
// 아래쪽 12% 영역의 알파 픽셀로 발 중심을 추정합니다.
const band = Math.max(4, Math.round(bounds.height * 0.12));
const footX = measureFootCenter(alphaPixels, bounds, band);
// 필요할 때만 셀 안에 들어오게 축소합니다. 확대하지 않습니다.
const fitScale = Math.min(1,
(cell - edgePadding * 2) / bounds.width,
(cell - edgePadding * 2) / bounds.height);
if (fitScale < 0.85) throw new Error("원본 포즈를 다시 확인하세요");
// 실제 구현은 축소 후 footX도 배율에 맞춰 변환하고,
// 동작별 x/y 보정을 더한 뒤 셀 경계 안으로 제한합니다.
const left = Math.round(cell / 2 - resizedFootX + motionX);
const top = cell - bottomPadding - resizedHeight + motionY;SSOT는 이미지 한 장으로 끝나지 않습니다
기준 이미지는 눈으로 보는 계약이고, 기록은 작업을 다시 시작할 때 쓰는 계약입니다. 처음 승인한 얼굴과 장비를 글로도 적어두면, 여러 도구를 오가거나 다음 버전에서 다시 생성할 때 무엇을 유지해야 하는지 분명해집니다.
| 고정할 것 | 바꿔도 되는 것 |
|---|---|
| 얼굴, 머리, 의상, 무기, 기본 색 | 관절의 자세, 표정의 작은 변화 |
| 몸과 머리의 배율, 픽셀 표현 | 웅크림에 따른 실루엣 높이 |
| 동작별 방향과 프레임 순서 | 동작에 맞는 재생 간격 |
| 공통 셀과 정렬 규칙 | 포즈별 위치 보정값 |
새 프레임을 다음 프레임의 유일한 참조로 삼지 마세요. 조금씩 달라진 이미지를 연쇄적으로 따라가면, 마지막에는 처음과 다른 캐릭터가 됩니다. 수정할 때도 승인 원본을 다시 붙이고, 어느 부분만 고칠지 지정합니다.
내 작업용 SSOT 기록 양식예시 펼치기 +
공개용 범용 양식입니다. 대괄호를 채워 승인 이미지와 함께 보관하세요. 게임의 내부 설정 파일을 복사할 필요는 없습니다.
캐릭터 제작 / SSOT 기록 양식 캐릭터 이름: [이름] 승인 원본: [첨부할 이미지 이름과 버전] 그림체 기준: [스타일 참조 이미지] 외형 기준: [캐릭터 정체성 참조 이미지] 유지할 외형: [얼굴, 머리색, 의상, 장비, 색상] 몸 비율: [승인 원본 기준의 머리 / 몸 비율] 기본 방향: [오른쪽 / 왼쪽 / 정면] 필요한 동작: [대기, 공격, 피격, 이동 등] 시트 구성: [프레임 수, 열 / 행 수] 정렬 기준: [셀 크기, 공통 배율, 발 기준점] 아웃라인: [팀 색, 최종 표시 크기에서의 두께] 승인 조건: 외형 유지 / 장비 잘림 없음 / 실제 알파 / 재생 시 크기와 위치 안정 사용한 도구와 버전: [도구명 / 모델명] 수정 이력: [어떤 문제를 어떻게 고쳤는지]
8개 포즈에서 무엇을 확인하나요?
포즈 수를 채우는 것보다 각 포즈의 역할을 구분하는 것이 중요합니다. 아래는 거너 포즈 목록에 맞춰 따라 해볼 수 있는 검수 기준입니다.
| 키포즈 | 우선 확인할 부분 |
|---|---|
| 1 · 대기 / 총 들기 | 얼굴과 장비, 서 있는 몸 크기. 다른 포즈를 비교할 기준입니다. |
| 2 · 수평 조준 | 총구 방향, 양손 그립, 총 길이가 바뀌지 않는지. |
| 3 · 총을 들어 버티기 | 어깨·팔 연결, 총과 얼굴이 겹쳐 형태가 무너지지 않는지. |
| 4 · 웅크려 조준 | 무릎과 발 위치, 서 있는 자세보다 자연스럽게 낮아지는지. |
| 5 · 반동 / 피격 반응 | 기울어진 몸에서도 얼굴과 제복이 유지되는지. 공격 반동과 피격은 필요한 동작에 맞춰 구분합니다. |
| 6 · 낮은 전진 | 움직이는 방향, 발과 무기가 셀 안에 들어가는지. |
| 7 · 크게 뻗는 이동 자세 | 팔다리 길이와 몸 배율이 과장되거나 달라지지 않는지. |
| 8 · 복귀 / 다시 총 들기 | 대기 자세로 돌아갈 때 얼굴·총·중심이 갑자기 튀지 않는지. |
시트 분리는 어떻게 하나요?
격자가 정확하면 셀 단위로 자를 수 있습니다. 생성 결과의 격자가 어긋나거나 포즈가 셀 경계를 넘었다면 먼저 각 포즈를 분리해 같은 크기의 빈 셀에 다시 배치하세요. 무조건 등분하면 총구나 모자까지 잘라낼 수 있습니다.
반복 동작과 한 번 재생할 동작을 구분하세요
대기는 처음과 끝이 자연스럽게 이어져야 합니다. 사격이나 피격은 준비 → 반응 → 복귀의 순서가 읽히는지 봅니다. 움직임을 만들기 위해 단순히 그림을 좌우로 흔드는 것만으로는 발의 접지나 관절 움직임이 생기지 않습니다.
정렬 스크립트에 넣을 기준을 정합니다
아래는 같은 방식으로 직접 정렬 도구를 만들 때 사용할 수 있는 계산 예시입니다. 예시 숫자는 용사주식회사의 내부 설정값이 아닙니다. 자신의 캔버스와 표시 크기에 맞춰 바꾸세요.
공통 배율 = 목표 기준 체고 ÷ 승인 원본의 기준 체고프레임 위치 = 목표 발 기준점 − 배율 적용 후 해당 프레임의 발 기준점승인 원본의 기준 체고가 300px이고 목표가 240px이면 공통 배율은 0.8입니다. 웅크린 포즈의 기준 체고가 210px이라면 같은 배율을 적용해 168px로 남깁니다. 이 포즈도 240px로 키우면 머리와 장비가 갑자기 커집니다.
- 측정 기준을 통일합니다. 몸의 기준 높이와 발 위치를 먼저 정합니다. 총·깃털·장식까지 포함한 전체 이미지 높이와 몸의 크기를 혼동하지 않습니다.
- 셀 크기와 바닥 여백을 정합니다. 예를 들어 320px 셀에 바닥 여백 16px을 두면 발의 목표 세로 위치는 셀 위에서 304px입니다. 가장 넓게 뻗은 포즈와 무기도 들어가야 합니다.
- 발 위치를 먼저 맞춥니다. 실루엣 전체의 가운데는 총을 뻗는 방향에 따라 달라집니다. 몸이나 접지 발의 기준점을 사용하고, 애매한 포즈는 직접 지정합니다.
- 위치 보정을 기록합니다. 동일한 프레임에 같은 보정을 다시 적용할 수 있게 배율과 이동값을 저장합니다. 완성 PNG만 손으로 수정하면 재생성할 때 같은 일을 반복하게 됩니다.
이동 동작에서 캐릭터가 실제로 전진하는 위치는 게임 쪽 이동 처리와 구분하세요. 그림 안의 위치 이동과 게임에서의 이동을 동시에 크게 적용하면, 속도나 발의 움직임이 어색해질 수 있습니다.
알파와 아웃라인은 배경 위에서 검수합니다
밝은 배경, 어두운 배경, 실제 사용할 배경에 각각 올려봅니다. 체크무늬가 보이거나 흰 테두리가 남으면 배경 제거 단계로 돌아갑니다. 의상과 장비에도 같은 색이 있으므로 배경색과 비슷한 픽셀을 전부 지우는 방식은 피하세요.
팀 색 외곽선은 정리된 알파의 바깥 경계에 적용합니다. 불투명 사각형 전체에 테두리를 두는 것이 아닙니다. 확대 원본에서 보기 좋은 두께보다 최종 표시 크기에서 캐릭터를 가리지 않는 두께를 선택합니다.
결과가 이상할 때, 돌아갈 단계
문제의 원인이 외형, 여백, 투명도, 배율, 기준점 중 어디에 있는지 먼저 나눕니다. 한 번에 전부 다시 만들기보다 문제가 생긴 단계로 돌아가 수정합니다.
| 문제 | 먼저 바꿀 것 |
|---|---|
| 새 캐릭터가 거너의 옷까지 닮습니다 | 스타일 참조와 외형 참조의 역할을 분리하고, 복사하면 안 되는 장비를 명시합니다. |
| 프레임마다 얼굴이나 총이 바뀝니다 | 승인 원본을 다시 첨부하고, 포즈만 바꾸도록 수정 범위를 좁힙니다. |
| 머리나 총구가 잘립니다 | 생성 시 여백을 늘립니다. 분리된 프레임이라면 셀 크기와 분리 영역도 확인합니다. |
| 체크무늬가 그대로 보입니다 | 실제 알파 채널을 확인합니다. 무늬가 그려진 원본은 배경을 제거하거나 다시 생성합니다. |
| 웅크릴 때 캐릭터가 커집니다 | 프레임별 높이 정규화를 멈추고, 기준 자세에서 정한 공통 배율을 적용합니다. |
| 사격할 때 좌우로 튑니다 | 총을 포함한 실루엣 중앙 대신 몸·발 기준점으로 정렬합니다. |
| 움직일 때 발이 뜨거나 미끄러집니다 | 접지 포즈와 프레임 순서, 위치 보정, 게임의 이동 속도를 함께 확인합니다. |
| 배경 위에서 테두리가 지저분합니다 | 잔여 배경색과 반투명 경계를 먼저 정리한 뒤 팀 색 아웃라인의 두께를 조정합니다. |
| 크게 보면 예쁜데 작게 보면 안 읽힙니다 | 실제 표시 크기에서 실루엣과 장비를 확인하고, 불필요한 작은 디테일을 줄입니다. |
이 정도를 통과하면 다음 작업으로 넘어갑니다
매 프레임의 작은 픽셀이 완벽한지보다, 플레이 중 드러나는 오류가 없는지를 먼저 봅니다. 다시 생성할 계획이 있다면 지금 고칠 문제와 이후 개선할 디테일을 나눠 기록해두세요.
- 기준 이미지와 얼굴·의상·장비·색이 일치합니다.
- 모든 프레임에서 무기와 발이 잘리지 않습니다.
- 체크무늬나 잔여 배경 없이 실제로 투명합니다.
- 웅크림과 피격에서도 머리와 몸의 배율이 유지됩니다.
- 동작을 재생했을 때 중심과 발 위치가 불필요하게 튀지 않습니다.
- 실제 표시 크기와 배경에서 실루엣, 동작, 팀 색이 읽힙니다.
- 승인 원본과 프롬프트, 수정 이력, 정렬 기준을 다시 찾을 수 있습니다.
지금 필요한 만큼 다듬고, 다시 만들 수 있게 남깁니다.
다음 버전에서 더 나은 결과를 얻기를 기대하며, 나중에 다시 뽑을 각오로 작업합니다. 얼굴·장비 변화, 잘림, 정렬 문제는 지금 해결하되 미세한 디테일에 끝없이 시간을 쓰지는 않습니다.
승인 이미지와 프롬프트, 포즈 목록, 정렬 기준을 남겨두면 도구가 바뀌어도 같은 기준으로 다시 제작할 수 있습니다.
SpriteGen도 살펴보세요
기준 이미지에서 동작 행을 만들고, 배경 제거·프레임 추출·아틀라스 조립과 움직임 검수를 돕는 공개 프로젝트입니다. 이미 만들어 둔 시트를 정리하는 기능도 제공합니다. 설치 방법과 지원 기능은 저장소의 최신 안내를 확인하세요.
GitHub · aldegad / sprite-gen ↗도구 설명 출처: 위 저장소의 README. 제가 사용한 정렬 기준과 도구 자체의 사용법은 구분해서 참고해주세요.
이 페이지는 제작 방법과 프롬프트 예시를 공유하는 자료입니다. 각 프롬프트는 참조 이미지와 원하는 동작에 맞게 수정해서 사용하세요.