'캐릭터 달리게 해줘' 가 잘 안 되는 이유
캐릭터 그림 한 장을 주고 "달리는 애니메이션 만들어줘" 라고 하면, 대개 두 가지가 어긋난다. 캐릭터가 칸 안에서 옆으로 미끄러지고, 발이 바닥에서 뜬다. 프레임을 칸 경계로만 잘랐기 때문이다. 걸음마다 캐릭터 위치가 조금씩 달라서, 이어 붙이면 제자리 달리기가 아니라 반 칸씩 미끄러지는 슬라이드가 된다.
두 층: 프롬프트와 후처리기
생성 프롬프트 템플릿 은 캐릭터별로 채워 4x4·16프레임 시트를 만든다. 얼굴·의상·비율·액세서리를 프레임마다 고정하고, 팔은 다리와 정확히 반대 위상으로 흔들고, 16프레임을 한 사이클(착지→압축→밀어내기→공중→반대발…)로 잇고, 진짜 알파 투명(가짜 체크·초록 배경 금지)을 요구한다. 이미지 생성 자체는 환경에 있는 이미지 도구가 한다. 이 스킬은 도구를 가리지 않는다.
후처리기 pack_run_cycle.py 가 아래를 결정적으로 처리한다. 시트를 16칸으로 자르고, 프레임마다 알파 무게중심을 칸 중앙에, 발 바닥을 고정 바닥선에 앵커 해 제자리서 달리게 만든다. 그다음 disposal=2 로 잔상 없는 투명 GIF 를 조립하고, 개별 PNG 16장과 ZIP 을 쓴다. 의존성은 Pillow 하나뿐, 네트워크는 0.
QA 를 스크립트가 대신 잰다
후처리기는 끝에 QA 를 출력한다. 프레임 수(4x4=16 하드 체크), 루프 시간(480ms), 투명도 비율(가짜 배경이면 경고), 수평 드리프트(제자리서 달리는지), 바닥선 편차(발이 미끄러지는지). 눈으로 볼 것(팔 반대 위상·얼굴 변형·이음매)은 체크리스트로 남긴다.
실측으로 검증했다
합성 시트로 후처리기를 돌렸다. 일부러 캐릭터를 39.9px 밀리게 만든 시트가, 정렬을 켜자 0.3px 로 잡혔다(제자리 달리기 성립). 투명도(코너 알파 0·86% 투명), 16프레임, 480ms 무한 루프, ZIP 16장까지 확인했다.
쓰는 법
- Claude Code: 캐릭터 이미지를 주고 달리기 사이클을 요청하면, 프롬프트로 시트를 만들고 후처리기로 GIF·PNG·ZIP 까지 낸다
- 직접:
python3 scripts/pack_run_cycle.py your_sheet.png --out ./out - 다른 AI:
npx skills add hanmariyang/giting-skills --skill pixel-run