정식 아트 제작
출시 가능한 2D 리소스 제작: 일러스트, 배경, UI, 아이템, 아이콘. 임시 사각형이 아닙니다 — 하지만 먼저 한계를 명확히 합니다(문서 하단 참조).
0단계: 이미지 생성 능력 확인
순서대로 확인하고, 추측하지 마세요:
- 현재 세션에서 사용 가능한 네이티브 이미지 생성 또는 편집 도구를 먼저 확인하고, 사용 가능하다면 직접 호출하세요. 프롬프트만 작성하지 마세요.
- Codex의 이미지 생성 스킬은 기본적으로 내장
image_gen도구를 사용하며, API 키가 필요하지 않습니다. 사용자가 명시적으로 직접 API 방식을 선택한 경우, 아래 플러그인 어댑터를 사용할 수 있습니다. 이 방식은 별도로 키와 모델 권한을 설정해야 합니다. - 어느 쪽도 불가능하다면 명확히 알리세요: 이 경로로는 현재 정식 아트를 제작할 수 없습니다. 스크립트로 사각형을 그려서 속이지 마세요.
OpenAI Images API (선택 사항)
사용자가 명시적으로 API 서비스를 선택한 경우에만 사용하세요: 사용자는 로컬에 OPENAI_API_KEY를 설정해야 하며, 조직에 이미지 모델 접근 권한이 있어야 하고, 실제 생성 요청에 대해 비용이 청구될 수 있습니다. 먼저 --dry-run으로 미리보기하세요. 스크립트는 --backup-dir을 필요로 하며, API에서 반환된 원본 이미지를 먼저 백업한 후 런타임 디렉토리로 복사하고, 기존 파일을 덮어쓰지 않습니다.
python scripts/gen_ai_image.py --prompt "단일 중앙 배치 손으로 그린 파란색 우주 헬멧 픽업 아이콘, 투명 배경" --format png --background transparent --out assets/art/items/helmet.png --backup-dir doc/temp
python scripts/gen_ai_image.py --prompt "작은 녹색 로봇이 손을 흔든 다음 돌아서서 걸어갑니다. 깔끔한 루핑 픽셀 아트 애니메이션" --format gif --frames 8 --frame-duration-ms 100 --out assets/animation/robot.gif --backup-dir doc/temp
내장 image_gen의 기본 저장 위치는 $CODEX_HOME/generated_images/입니다. 현재 프로젝트용 이미지를 생성한 후, 즉시 원본 이미지 복사본을 프로젝트 규칙에 지정된 백업 디렉토리(이 프로젝트에서는 doc/temp/)에 저장한 다음, 자르기, 크기 조정, 배경 제거 등을 처리합니다. 최종 리소스도 런타임 리소스 디렉토리에 남깁니다. 내장 도구가 파일 경로 직접 지정을 지원한다고 가정하지 마세요.
--format gif는 모델이 생성한 2-16프레임의 짧은 애니메이션을 사용하며, 게임에 최적화된 스프라이트 시트와 동일하지 않습니다. GIF 미리보기 자격, 크기 제한 및 지원 모델은 공식 이미지 API 문서를 따릅니다. 프레임별 제어가 필요한 경우 정적 스프라이트 시트를 생성하고 game-animation-production을 사용하세요. Codex 세션의 내장 이미지 생성 도구는 이미지를 직접 생성하거나 편집할 수 있습니다. 이는 이 스크립트의 API 키 구성과 별개입니다.
1단계: 먼저 스타일 바이블 만들기 (성공과 실패를 가르는 단계)
시리즈 자료가 통일된 스타일을 필요로 하는 경우, 기존 이미지나 하나의 메인 비주얼을 시각적 앵커로 사용할 수 있습니다. 단일 항목 편집은 기존 자료를 그대로 사용하며, 새 메인 비주얼을 강제로 만들지 않습니다.
docs/art-style-bible.md 출력:
## 스타일 앵커 단락 (매 생성 시 반드시 원문 그대로 붙여넣기)
<한 문장: 매체 + 화풍 + 조명 + 색상 팔레트 + 선/질감 특성>
예: 2D 손그림 카툰, 굵은 외곽선, 부드러운 상향등, 보라-금색 메인 팔레트 (#7C3AED / #FBBF24),
평면 채색에 약간의 노이즈 텍스처, 그라데이션 배경 없음
## 색상 팔레트 (HEX)
주색 / 보조색 / 강조색 / 그림자색 / 하이라이트색
## 금지 항목
사진 사실적 질감 금지 / 사이버 네온 금지 / 3D 렌더링 느낌 금지 / 텍스트 워터마크 금지
스타일 앵커 단락은 고정 텍스트여야 합니다. 모든 이미지에 원본 그대로 포함해야 하며, 이것이 40장의 이미지가 하나의 게임처럼 보이도록 유지하는 주요 수단입니다.
2단계: 에셋별 생성
개별 프롬프트 구조 (순서 변경 금지):
[스타일 앵커 단락] + [주체와 자세] + [크기/구도: 정면/중앙/여백] + [배경: 키잉 용이를 위해 순백색] + [기술 요구사항: 텍스트 없음, 바닥 그림자 없음]
- 투명 배경이 필요한 경우 생성 도구에 직접 투명 배경 출력을 우선 요청하세요. 적합한 소재에만 단색 배경 및 색상 키잉을 사용하세요.
- 필요와 예산에 따라 변형을 생성하고, 고정된 수량을 강제하지 마세요.
- 동일 캐릭터: 이미 선택된 이미지를 참조 이미지로 사용하고(호스트가 image-to-image를 지원하는 경우), 동일한 앵커 텍스트를 재사용하세요.
- 스프라이트 시트 및 애니메이션 생성, 프레임 분할 및 승인은
game-animation-production을 참조하세요. 프레임별로 일관성을 확인하고 필요한 경우 수정하세요. - 프로젝트 이미지 백업 규칙을 준수하세요. 원본, 드래프트 및 모든 후처리 이미지는 프로젝트 요구사항에 따라 먼저 백업한 후 처리하세요.
3단계: 사양에 맞게 후처리
python scripts/process_art.py \
--in raw/ui_btn_raw.png \
--out assets/art/ui/ui_btn_primary.png \
--size 256x64 --mode fit \
--key-color "#FFFFFF" --key-tolerance 14 \
--nine-slice 24 --check-nine \
--report assets/art/ui/ui_btn_primary.report.json
중요 판단:
--mode fit비율 유지 크기 조정 + 중앙 정렬 투명 채움, stretch 사용 금지, 변형됩니다.--check-nine는 외곽이 9-슬라이스로 늘어날 수 있는지 확인합니다. 불가능하면 다시 디자인하고 억지로 진행하지 마세요.- 보고서의
transparent_ratio가 0에 가까우면 키잉이 성공하지 못한 것입니다.
4단계: 아틀라스 및 압축
python scripts/pack_atlas.py --input assets/art/ui --out-sheet assets/art/ui_atlas.png \
--out-data assets/art/ui_atlas.json --max-size 2048 --padding 2
아틀라스 분할은 "같은 화면, 같은 아틀라스" 기준으로 하며, 리소스 유형별로 하지 않습니다. 단일 시트는 2048×2048을 초과하지 않아야 하며, 저사양 기기에서는 1024×1024가 더 안정적입니다.
5단계: 등록 및 최종 검사
각 리소스는 assets/manifest.json에 다음을 모두 기재해야 합니다:
{
"path": "assets/art/ui/ui_btn_primary.png",
"kind": "ui",
"tier": "final",
"size": [256, 64],
"nine_slice": 24,
"source": "ai",
"ai_generated": true,
"model": "gpt-image",
"license": "AI-generated, commercially cleared under <service> terms",
"commercial_ok": true,
"note": "주 버튼, 삼중 상태"
}
python scripts/validate_assets.py --manifest assets/manifest.json --final --strict-license
최종 검사에서 다음을 차단합니다: 아직 draft 상태, license 누락, sprite/ui에 알파 채널 없음, 완전 불투명(키잉 누락), 크기 불일치.
라이선스 및 심사 (건너뛸 수 없음)
- AI 생성 자료의 상업적 이용 조건은 서비스마다 다릅니다. 서비스별로 확인하고
license필드에 출처를 명확히 기재하세요. - 일부 플랫폼(특히 국내 소규모 게임 심사)에서는 자료 출처를 요구합니다.
ai_generated: true는 심사를 위한 표시이니 빼먹지 마세요. - 폰트는 OFL 오픈소스 폰트(Noto / 본고딕 계열)만 사용 가능하며, 상업용 폰트는 사용자가 직접 라이선스를 구매해야 합니다. 출처를 알 수 없는 폰트를 다운로드하지 마세요.
할 수 없는 부분 (사용자에게 반드시 알려야 함)
| 요구사항 | 결론 |
|---|---|
| 2D 일러스트 / 배경 / UI / 아이콘 / 아이템 | 가능, 수동 선별 및 수정 필요 |
| 동일 캐릭터 프레임별 애니메이션 | AI 스프라이트 시트 또는 시퀀스 프레임 시도 가능, 일관성 확인 및 필요시 수정 |
| 3D 모델 / 본 바인딩 | 이 파이프라인으로는 불가능 |
| 픽셀 단위 엄격한 통일 (예: 엄격한 픽셀 아트 그리드 정렬) | 수동 픽셀 수정 필요, AI 출력은 종종 반 픽셀 오프셋 발생 |
| 상업용 폰트 | 오픈소스 대안만 제공 가능 |