Community이미지github.com

2D 스프라이트 생성

게임에 바로 사용할 수 있는 2D 캐릭터, 크리처, 소품, 아이콘 및 FX를 마스터 스틸, 스프라이트 시트 또는 애니메이션 클립으로 제작합니다. 크기, 동작 및 마감을 계획하고 아트를 생성한 후, 게임 엔진에 맞게 프레임을 키잉, 슬라이싱, 등록, 크기 조정, 팔레트, QA 및 내보내기합니다.

2D 스프라이트 생성란 무엇인가요?

이 스킬은 게임 개발을 위해 최적화된 2D 스프라이트 에셋 번들을 생성하는 종합 파이프라인입니다. 캐릭터, 크리처, 소품, 아이콘, FX 등 다양한 유형의 아트를 마스터 스틸, 스프라이트 시트, 또는 애니메이션 클립 형태로 제작할 수 있습니다. 기본적으로 이미지 생성(API 또는 로컬 도구)을 통해 아트를 만들며, 캐릭터 애니메이션은 마스터 스틸 하나를 승인한 후 `video2dsprite` 스킬로 각 동작별 클립을 생성합니다. FX, 아이콘, 소품은 스프라이트 시트로 제작합니다. HD 마감이 기본이며, 픽셀 아트나 하이빗(hibit) 마감도 지원합니다. 최종적으로 Aseprite JSON, Godot SpriteFrames, Sprite3D 등 게임 엔진에 맞게 프레임을 키잉, 슬라이싱, 등록, 크기 조정, 팔레트 적용, QA 후 내보냅니다. 이 스킬은 맵, 타일, 배경(별도 스킬 사용), 코드로 그린 아트(요청 시), 또는 단순한 이미지/비디오 API 호출에는 사용하지 않습니다.

지원 대상✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/lyseocuonglauthingai-sketch/agent-sprite-skills/tree/HEAD/.agents/skills/generate2dsprite

Installed? Explore more 이미지 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Generate 2D Sprite

게임에 필요한 가장 작은 에셋 번들을 실제 디스플레이 크기, 카메라 및 스타일로 제작합니다. 게임 로직(충돌, 데미지, 타이밍)은 아트와 독립적으로 유지됩니다.

사용 시기

  • 캐릭터, 크리처, 소품, 아이템, 아이콘 또는 FX가 마스터 스틸, 시트 또는 클립으로 필요한 경우.
  • 이미 프레임이 존재하고(생성됨, 그려짐, 코드로 그려짐) 클립, 팔레트 또는 엔진 내보내기가 필요한 경우.

사용하지 말아야 할 경우

  • 맵, 타일, 지형, 패럴랙스 또는 씬 플레이트: generate2dmap.
  • 캐릭터 애니메이션: 여기서 마스터 하나를 승인한 후, video2dsprite가 각 동작별로 하나의 클립을 만듭니다(video-handoff.md).
  • 사용자가 요청한 코드로 그린 아트: codeart2d. API 또는 CLI 호출만 필요한 경우: generate2dmedia.

기능 확인 (세션당 한 번)

python "<skill-dir>/../generate2dmedia/scripts/forge_doctor.py" --host-tools <tools> --save <output>/doctor.json을 실행합니다. 여기서 <tools>는 자신의 도구 목록에 있는 미디어 도구(image_gen, image_edit, image_to_video) 또는 none을 나열합니다. ROUTES 블록은 구성된 API 키(예/아니오), 로컬 준비 상태 및 확인된 순서를 보여줍니다. encoding.stdout이 실패하면 PYTHONUTF8=1을 설정합니다.

아트 소스

이미지 생성은 캐릭터, 크리처, 소품, 아이콘 및 FX의 기본 아트 소스입니다. art_source(api, host_image, existing, 또는 요청 시에만 code)로 기록하고 응답에 경로 이름을 지정합니다. 사용자가 명시적으로 지정한 경로가 우선합니다.

  1. API, 키가 구성된 경우: OpenAI (OPENAI_API_KEY), Google Gemini (GEMINI_API_KEY), xAI (XAI_API_KEY), BytePlus Seedream (ARK_API_KEY) 또는 fal.ai (FAL_KEY) (환경 변수 또는 사용자 구성 파일에 있음, route-media.md 참조). 구성된 키는 소유자의 동의이므로 호출 시마다 질문하지 않습니다.
  2. 로컬: 사용자 고유의 이미지 도구(자체 이미지 도구가 있는 경우 Codex image_gen, Grok의 네이티브 도구), 그렇지 않은 경우 사용자가 로그인한 Codex CLI, 그다음 Grok CLI.
  3. codeart2d: 사용자가 명시적으로 코드로 그린 아트를 요청하거나, route_media.py가 no-route(종료 코드 3)를 출력하는 경우에만 사용합니다. 그런 다음 "코드로 그려짐, 이미지 모델 없음"이라고 말합니다.

Hibit FX는 유일한 예외입니다: fx_pixelfx.py check는 사용자가 pixelfx를 설치한 경우(경로 A, 타사 코드 드로잉 FX, 출처 표시 및 공개) pixelfx로 보내고, 그렇지 않으면 이미지 경로(경로 B)로 보냅니다. 자세한 내용은 hibit.md를 참조하십시오.

모든 이미지는 하나의 명령어를 거칩니다: python "<skill-dir>/../generate2dmedia/scripts/route_media.py" image --prompt-file <txt> --reference <png> --size 1024x1024 --out-dir <new>. 이 명령어는 해당 순서대로 경로를 선택하고 route, artifact, sha256 및 estimateUsd가 포함된 하나의 JSON 라인을 출력합니다. resolve --kind image는 어떤 경로가 실행될지 알려줍니다. 사용자가 제공하는 기존 아트는 항상 환영합니다. 발생하지 않은 생성을 주장하지 마십시오. 프롬프트와 계약을 유지하고 누락된 기능을 보고하십시오.

  • 마감: HD가 기본값입니다: 풀 컬러, 깨끗한 알파, 하나의 등록, 게임 높이로의 프리멀티플라이드 영역 다운스케일. 픽셀 마감(하나의 공유 팔레트, 바이너리 알파, 디더링 없음)은 사용자가 픽셀 아트를 요청할 때 옵션입니다. 하이빗 마감(모델의 평평한 라인리스 아트, 그다음 하나의 캐릭터 팔레트, 다수결 다운스케일 및 이미지에서 가져온 외곽선 색상)은 사용자가 하이빗 룩을 원할 때 사용합니다(hibit.md 참조). 논리적 픽셀 그리드를 위해 이미지 모델에 프롬프트를 작성하지 마십시오. 픽셀 룩은 마감에서 비롯됩니다.
  • 캐릭터: 캐릭터당 하나의 마스터 스틸을 승인한 다음 video2dsprite로 애니메이션 처리합니다: 마스터에서 각 동작별로 하나의 이미지-투-비디오 클립을 생성합니다(sprite_set.py). 마스터의 휴식 포즈에서 각 동작의 바디 높이를 유지합니다.
  • 시트는 FX, 아이콘 및 소품용입니다(그리고 사용자가 제공하는 프레임). 캐릭터 애니메이션용이 아닙니다.

마스터 스틸 (모든 캐릭터 애니메이션은 여기서 시작)

캐릭터당 하나의 승인된 마스터 스틸, 그다음 마스터에서 각 동작별로 하나의 이미지-투-비디오 클립(video2dsprite 참조); 시트는 FX, 아이콘 및 소품용입니다. 표현: prompt-rules.md; 명령어, 프레이밍 및 master.json: master-still.md.

  1. 사양 (--spec <json> 및/또는 플래그): --name, --subject, --identity (길고 정확하게), --facing left|right|front|back, --class hero|mob|boss|prop, --finish hd|pixel|hibit (HD 기본값; 요청 시에만 pixel 또는 hibit; hibit은 스틸을 평평하고 라인리스하게 만듦), --identity-ref (첫 번째 이미지, 정확히 복사됨), --style-ref (두 번째: 승인된 피어 스프라이트, 스타일 및 프레이밍만), --key (기본값 #FF00FF; 보라색 및 분홍색 디자인의 경우 녹색 또는 파란색).
  2. 생성: python "<skill-dir>/scripts/master_still.py" generate --spec <json> --takes 3 --output-dir <new>. 각 테이크는 generate2dmedia route_media.py를 거칩니다(API 키 우선, 그다음 로컬 데몬); takes.png는 나란히 보여줍니다. 종료 코드 3은 경로가 없음을 의미합니다: 그렇게 말하십시오; codeart2d가 대체 수단입니다("코드로 그려짐, 이미지 모델 없음"). 호스트의 자체 이미지 도구를 사용하는 경우: master_still.py prompt를 실행하고 해당 순서대로 나열된 참조를 첨부하십시오.
  3. 보면서 선택: 정체성, 방향, 가장자리에 닿는 것 없음, 텍스트 없음.
  4. 재시도 대신 편집으로 근접 실패 수정: master_still.py edit --run <dir> --take N --change "<one change>" --output-dir <new> (또는 --master <dir>).
  5. 승인: master_still.py approve --run <dir> --take N --output-dir <new> (다른 곳에서 가져온 스틸: --still <png> --route <만든 경로>). 스틸을 키잉하고, 6px 여백으로 자르고, 1024x1024의 클래스 프레이밍으로 LANCZOS-스케일링하고(히어로 788px 높이, 상단 여백 138px), master.png(불투명, 순수 키), master_rgba.png 및 master.json (generate2dsprite.master.v1)을 씁니다.
  6. 모션 단계는 master.json (identity_recap, facing, finish, class, framing, key, files, transform, route)을 읽고 스틸을 다시 측정하지 않습니다. 모든 클립 프롬프트는 "The same <identity_recap>"으로 시작합니다.

master.json route에서 경로를 보고합니다. FORGE_ROUTE_MEDIA_FAKE 경고는 이미지가 실제 생성이 아님을 의미합니다.

호스트 참고 사항

  • Codex: image_gen은 자체 이미지 도구입니다. 구성된 키가 없으면 사용하고 view_image로 결과를 확인하십시오. 이 세션에서 만든 이미지가 프로젝트에 없는 경우: python "<skill-dir>/../generate2dmedia/scripts/cli_media.py" adopt --codex-thread <thread-id> --output-dir <new>를 실행한 다음 generated.png를 처리하십시오. codeart2d 및 generate2dmedia는 명시적 전용입니다: 이 스킬이 해당 경로로 라우팅될 때 해당 SKILL.md를 여십시오.
  • Claude Code: 기본 제공 이미지 생성기가 없습니다: route_media.py가 API 또는 로컬 CLI를 사용합니다. 만드는 모든 PNG를 Read로 확인하십시오. 도구는 Bash로 실행하십시오. <skill-dir>는 ${CLAUDE_SKILL_DIR}입니다.
  • Grok: 네이티브 이미지 및 비디오 도구는 자체 도구입니다. 실제 스키마를 사용하십시오.

명령어

각 도구를 사용자 프로젝트 루트에서 한 줄로 실행합니다: python "<skill-dir>/scripts/<tool>.py" .... <skill-dir>는 이 스킬의 폴더입니다. 형제 스킬은 옆에 있습니다(<skill-dir>/../video2dsprite). 입력과 출력을 프로젝트 내에 유지하십시오. 모든 도구는 새 --output-dir를 씁니다: 기존 디렉토리를 거부하고, 옆에 스테이징하며, 검사 통과 후에만 게시합니다(--strict-qc / --strict는 실패 시 아무것도 게시하지 않음). 성공 시 하나의 JSON 라인을 출력합니다. 오류는 error: ...를 출력하고 종료 코드 1로 종료합니다. 사용법 오류는 종료 코드 2로 종료합니다. Python 3.10+, numpy 및 Pillow가 필요합니다(scipy 권장). --help는 모든 플래그를 나열합니다.

에셋 계획

정체성 및 참조, 카메라 및 방향, 스타일, 게임 디스플레이 크기, 마감(기본값 HD, 요청 시 픽셀), 액션 목록 및 단계, 루프 또는 원샷, 모션 엔벨로프, 공유 루트 및 출력 형식을 기록하십시오. 캐릭터당 하나의 승인된 마스터와 하나의 소스-대-디스플레이 배율을 유지하십시오. 계획되지 않는 한 몹은 히어로보다 키가 크지 않습니다. 그리드는 부드러움과 동일하지 않습니다: 포즈 간격, 타이밍, 루프 이음매 및 지면 접촉이 더 중요합니다. 포즈, NEAR/FAR 다리 및 타이밍: animation-planning.md.

  • 알파: native_alpha는 실제 투명도를 유지합니다(칠해진 체커보드는 알파가 아님). chroma_key는 피사체에 마젠타가 없는 경우에만 평평한 마젠타를 사용합니다. opaque는 전체 이미지를 유지합니다(assemble_frames.py).
  • 샘플링: 생성된 아트의 경우 lanczos 또는 프리멀티플라이드 영역 리사이즈. 검증된 픽셀 그리드에 대해서만 nearest. 고해상도 픽셀 같은 그림은 깨끗한 32px 아트가 아닙니다.
  • 공유 루트는 프레임별 알파 bbox 하단이 아닙니다: 의도적인 비행, 점프, 바운스 및 반동을 유지하십시오.

생성 (이미지 경로)

직접 프롬프트를 작성하십시오(prompt-rules.md; 그리드, 단계 및 프리셋은 action-recipes.md 참조). --reference를 통해 참조를 첨부하십시오(또는 도구의 실제 이미지 입력). 텍스트 경로는 참조가 아닙니다. 모든 생성에서 승인된 마스터를 유지하고 절대적인 단계를 설명하십시오. 체인 편집은 하지 마십시오. 수정은 승인된 스틸의 편집으로 유일한 변경 사항을 명명해야 합니다. 한 번에 하나의 액션 패밀리를 생성하고 넓은 슬래시, 트레일 및 발사체는 바디 시트 밖에 두십시오. 실제 경로, 모델 및 반환된 크기를 확인하십시오. 프롬프트에서 추측하지 마십시오.

파이프라인

시트(FX, 아이콘, 소품): sheet_qc.py spill을 원시 시트에 대해 실행한 다음, generate2dsprite.py process, sheet_qc.py frames, scale_frames.py, build_animation_clips.py, export_engine.py를 순서대로 실행합니다. 캐릭터 액션은 패키징된 클립으로 video2dsprite에서 반환됩니다.

필요 사항경로
이미지 도구용 시트 계획(종횡비, 그리드, 가이드, 프롬프트)plan_guide.py --frames N --cycle run --output-dir <new>; guide.png 첨부, prompt.txt 붙여넣기. 고정 배율 및 발 라인: make_anchor_layout.py; 빈 안전 프레임: make_layout_guide.py
슬라이싱 전 원시 시트 확인sheet_qc.py spill --input <sheet> --rows R --cols C --output-dir <new>; 부품이 교차하면 더 많은 여백을 두고 다시 생성하거나 소유권별로 슬라이스하고, 최대 구성 요소 필터는 사용하지 마십시오
시트 키잉, 슬라이싱 및 등록generate2dsprite.py process --input <sheet> --target asset --mode <mode> --rows R --cols C --output-dir <new> --strict-qc (지오메트리 v2; processing.md 참조)
아트 px당 M 소스 px로 그려진 픽셀 아트process --resampler nearest --logical-pixel M --pixel-scale N (정수 배율만 해당)
하나의 등록 지점에서 점프, 바운스 또는 반동process --scale-strategy registered (또는 --anchor-px X,Y)
액션 전체에 걸친 한 캐릭터의 배율접지된 참조에 대해 process --write-scale-profile <p.json>을 실행한 다음 --scale-profile <p.json> --max-profile-scale-drift 0.08 실행
캔버스가 그리드로 나누어지지 않음; 다른 행 순서process --grid-rounding nearest 또는 --pad-to-grid; --direction-order down,up,left,right (modes.md 참조)
정체성, NEAR/FAR 교대, 드리프트, 기준선sheet_qc.py frames --sheet <sheet> --rows R --cols C --cycle run --output-dir <new>; 복제된 반주기는 두 번째 절반을 다시 생성해야 함을 의미합니다. 코드로 그려진 프레임(art_source=code)에서 identity_residual 및 torso_drift는 참고용입니다
하나의 캔버스와 루트에 게임 크기, 절대 클램핑 안 함scale_frames.py --frames <pngs> --root-lock torso-x --row-baseline --emit-clips --ticks N --output-dir <new>; 이후 액션은 --profile <first>/scale-frames.json --action-padding L,T,R,B 추가
타이밍, 이벤트, 전환이 있는 클립build_animation_clips.py --manifest clips.json --output-dir <new>; 린트 및 review/ 읽기 (frames-and-clips.md 참조)
전체 프레임 또는 씬 루프(키잉 없음)assemble_frames.py (--key chroma, --slice ownership; --loop-overlap K --ambient은 앰비언트 루프 전용)
공유 팔레트, 잠금, 변형, 플리커(픽셀 마감)palette_tool.py build, apply, lock, quantize-seq, variants, luts; 엄격한 논리적 그리드: pixel_reduce.py (palette-and-pixels.md 참조)
엔진 내보내기export_engine.py --clips <animation-clips.json> --target all --output-dir <new>; Sprite3D: --target godot-sprite3d --world-height <units> (engine-export.md 참조)
게임에서 클립 재생(보행, 히트스톱, 전환)runtime-integration.md
코드로 그린 스프라이트, 리그 또는 FX(요청 시에만)codeart2d render_pixelspec.py, rig_animate.py 또는 fx_build.py with --build-clips (절대 process 사용 안 함), 그다음 export_engine.py; 코드로 그려짐을 공개
hibit 게임용 FXfx_pixelfx.py check 경로 선택(사용자가 명명한 경로가 우선). A, pixelfx 설치됨(권장): fx_pixelfx.py render --pixelfx <checkout> --id <effect> --ramp ... --snap <palette.json>, Patch의 pixelfx (MIT, 사용자가 클론하는 별도 프로젝트), CREDITS.txt 제공 및 pixelfx에 의해 코드로 그려짐을 공개. B, 그 외: 이미지 경로에서 2x2 FX 시트, process --scale-strategy registered --cell-size 512, 그다음 hibit_fx.py pixelize --palette <palette.json> (hibit.md 참조)

승인

  • 게임 크기에서 검토: 실루엣과 정체성, 접촉과 비행, 루프 이음매 또는 원샷 복구, 밝고 어두운 배경에서의 알파, 말단, 액션 전체 배율, 루트와 콜라이더.
  • 품질 주장에 대한 숫자 인용: pipeline-meta.json matte.qa (key_ring_spill 경고: --despill-radius 1 또는 --key-quality soft 추가), sheet-qc.json, 클립 빌더의 린트. 숫자 QC는 증상을 찾습니다. 해부학이나 동작을 승인하지 않습니다.
  • 게시된 각 QA 봉투에서 모든 WARN 또는 FAIL 검사를 있는 그대로 보고하십시오(id, 값, 임계값, 파일). 게시된 봉투에 경고가 있을 때 "모든 검사 통과"라고 말하지 마십시오.
  • 승인된 소스 아트, 런타임 프레임 또는 클립, 미리보기, 프롬프트 및 출처(경로, 모델, estimateUsd), QA 및 남은 제한 사항을 제공하십시오. 개정할 때 마지막 승인된 번들을 유지하십시오.

참조

processing.md (process 플래그, 레거시 스위치), modes.md, prompt-rules.md, master-still.md, animation-planning.md, action-recipes.md, frames-and-clips.md, palette-and-pixels.md, engine-export.md, runtime-integration.md, hibit.md, video-handoff.md, route-media.md

관련 스킬