미드저니 캐릭터 컨셉아트 케이스 스터디: 인디 게임 스튜디오가 200개 에셋의 일관성을 유지한 워크플로우
프로젝트 개요: 인디 스튜디오 '픽셀드래곤'의 도전
5인 규모의 인디 게임 스튜디오 '픽셀드래곤'은 판타지 RPG 타이틀 개발 과정에서 200개 이상의 캐릭터 컨셉아트 에셋을 제작해야 했습니다. 제한된 예산과 인력으로 전통적인 외주 방식 대신 Midjourney를 핵심 파이프라인에 도입하여, 스타일 일관성 유지와 대량 생산 효율성이라는 두 가지 목표를 동시에 달성한 실제 사례를 분석합니다.
1단계: 스타일 레퍼런스(Style Reference) 기반 구축
일관된 아트 스타일을 확보하기 위해 가장 먼저 수행한 작업은 '마스터 스타일 시트'를 Midjourney에 학습시키는 것이었습니다.
마스터 스타일 이미지 생성
/imagine prompt: fantasy RPG character concept art, cel-shaded style, warm color palette, thick outlines, soft ambient lighting, painterly texture, full body standing pose --ar 2:3 --style raw --v 6.1생성된 결과물 중 가장 프로젝트 방향에 부합하는 이미지를 선정하여 스타일 레퍼런스로 사용합니다.
스타일 레퍼런스 적용 (--sref)
/imagine prompt: elven archer female character, leather armor, green cloak, quiver on back, confident pose --sref https://cdn.example.com/master-style-ref.png --sw 100 --ar 2:3 --v 6.1--sref 파라미터는 참조 이미지의 스타일을 적용하며, --sw(style weight)를 0~1000 사이로 조절하여 스타일 영향도를 제어합니다. 픽셀드래곤 팀은 --sw 80~120 범위가 캐릭터 다양성과 스타일 일관성의 최적 균형점임을 발견했습니다.
2단계: 캐릭터 시트(Character Sheet) 워크플로우
개별 캐릭터의 다양한 앵글과 표정을 일관되게 유지하기 위해 캐릭터 시트 프롬프트 체계를 설계했습니다.
캐릭터 시트 기본 프롬프트
/imagine prompt: character design sheet, multiple views, front view, side view, back view, 3/4 view of a dwarf blacksmith, heavy leather apron, braided red beard, muscular build, holding hammer, white background, clean layout --sref https://cdn.example.com/master-style-ref.png --sw 100 --ar 16:9 --v 6.1표정 시트 프롬프트
/imagine prompt: expression sheet, 6 facial expressions, happy, angry, surprised, sad, determined, laughing, dwarf blacksmith character with braided red beard, portrait close-up, white background --cref https://cdn.example.com/dwarf-blacksmith-front.png --cw 100 --sref https://cdn.example.com/master-style-ref.png --sw 90 --ar 16:9 --v 6.1--cref(character reference)는 특정 캐릭터의 외형적 특징을 유지하는 핵심 파라미터입니다. --cw(character weight)를 100으로 설정하면 얼굴과 의상 모두를 보존하고, 0에 가까울수록 얼굴만 유지합니다.
3단계: 프롬프트 체이닝(Prompt Chaining) 시스템
200개 에셋을 효율적으로 생산하기 위해 픽셀드래곤 팀은 체계적인 프롬프트 체이닝 워크플로우를 수립했습니다.
체이닝 워크플로우 구조
- Phase 1 — 실루엣 탐색: 대략적인 포즈와 비율 결정
- Phase 2 — 디테일 생성: 선정된 실루엣 기반으로 디테일 추가 (--cref 활용)
- Phase 3 — 변형 확장: 무기/의상/색상 변형 생성
- Phase 4 — 시트 제작: 최종 캐릭터의 다각도 시트 완성
Phase 1: 실루엣 탐색
/imagine prompt: character silhouette concept, dark knight class, heavy armor, greatsword, dynamic action pose, dark fantasy, simple background --sref https://cdn.example.com/master-style-ref.png --sw 60 --ar 2:3 --v 6.1 --chaos 30Phase 2: 디테일 확정
/imagine prompt: detailed character design, dark knight paladin, ornate black plate armor with gold trim, glowing blue runes on greatsword, tattered red cape, scarred face, stoic expression --sref https://cdn.example.com/master-style-ref.png --sw 100 --ar 2:3 --v 6.1 --chaos 5Phase 3: 변형 생성 (배리에이션 활용)
/imagine prompt: dark knight character variant, same design but ice-themed armor, frost effects on sword, pale blue color scheme --cref https://cdn.example.com/dark-knight-final.png --cw 80 --sref https://cdn.example.com/master-style-ref.png --sw 100 --ar 2:3 --v 6.14단계: 자동화 파이프라인 구축
대량 생산을 위해 Midjourney API(알파)와 스크립트를 결합한 배치 처리 시스템을 구축했습니다.
배치 프롬프트 자동화 스크립트
import requests import json import timeAPI_BASE = “https://api.midjourney.com/v1” HEADERS = { “Authorization”: “Bearer YOUR_API_KEY”, “Content-Type”: “application/json” }
STYLE_REF = “https://cdn.example.com/master-style-ref.png”
characters = [ {“name”: “fire_mage”, “desc”: “female fire mage, red robes, flame staff, fierce eyes”}, {“name”: “shadow_thief”, “desc”: “male shadow rogue, dark leather, twin daggers, hood”}, {“name”: “holy_priest”, “desc”: “elderly priest, white vestments, golden halo, gentle smile”}, ]
def generate_character_sheet(char): prompt = ( f”character design sheet, multiple views, front side back, ” f”{char[‘desc’]}, fantasy RPG style, white background ” f”—sref {STYLE_REF} —sw 100 —ar 16:9 —v 6.1” ) payload = {“prompt”: prompt, “aspect_ratio”: “16:9”} resp = requests.post(f”{API_BASE}/imagine”, headers=HEADERS, json=payload) task_id = resp.json()[“task_id”] print(f”[{char[‘name’]}] 생성 시작: {task_id}”) return task_id
for char in characters: generate_character_sheet(char) time.sleep(10) # Rate limit 준수
프로젝트 성과 요약
| 지표 | 전통 외주 방식 | Midjourney 파이프라인 |
|---|---|---|
| 200개 에셋 소요 기간 | 약 4 | 약 3주 |
| 예상 비용 | $40,000+ | $600 (Pro Plan × 3개월) |
| 스타일 일관성 점수 (내부 평가) | 85/100 | 92/100 |
| 이터레이션 속도 | 수정당 25일 | 수정당 5 |
Pro Tips: 파워 유저를 위한 고급 팁
- 시드(Seed) 고정 활용:
—seed 12345를 사용해 동일 캐릭터의 포즈/앵글 변형 시 일관성을 더욱 강화할 수 있습니다. - 멀티 레퍼런스 블렌딩:
—sref url1 url2 —sw 60처럼 복수 스타일을 혼합하여 유니크한 스타일을 만들되, 한 장을 메인으로 고정하세요. - Permutation 프롬프트:
{fire, ice, lightning} mage구문으로 한 번에 3개 변형을 동시 생성할 수 있습니다. - 네거티브 프롬프트 표준화:
—no realistic, photographic, 3d render, blurry를 모든 프롬프트에 일괄 적용하여 스타일 이탈을 방지하세요. - 리전(Region) 기능 활용: Vary(Region)을 사용해 캐릭터의 특정 부분(무기, 장신구)만 선택적으로 수정할 수 있습니다.
Troubleshooting: 자주 발생하는 문제 해결
| 문제 | 원인 | 해결 방법 |
|---|---|---|
| 캐릭터 시트에서 각 뷰의 디자인이 다름 | —cw 값이 너무 낮거나 프롬프트 모호 | —cw 100으로 설정, 의상/특징을 구체적으로 명시 |
| —sref 적용 시 색감이 과도하게 변형됨 | —sw 값이 과도하게 높음 | —sw를 6080으로 낮추고, 프롬프트에 원하는 색상 명시 |
| 배치 생성 시 Rate Limit 오류 | API 호출 간격이 너무 짧음 | 요청 간 10 |
| 캐릭터 얼굴이 매번 달라짐 | —cref 미사용 또는 참조 이미지 해상도 부족 | 고해상도 정면 이미지를 —cref로 지정, —cw 90 이상 설정 |
| 동일 프롬프트인데 스타일 편차 발생 | —chaos 값이 높거나 —style raw 미적용 | —chaos 010, —style raw 추가로 안정화 |
자주 묻는 질문 (FAQ)
Q1. Midjourney로 생성한 캐릭터 컨셉아트를 상업용 게임에 사용해도 되나요?
네, Midjourney 유료 구독(Basic 이상) 사용자는 생성된 이미지에 대한 상업적 사용 권리를 갖습니다. 단, Pro Plan 이상에서만 스텔스 모드(—stealth)를 사용해 이미지를 비공개로 생성할 수 있으므로, 출시 전 에셋 유출이 우려된다면 Pro Plan 이상을 권장합니다. 연 매출 $1,000,000 이상 기업은 Mega Plan 이상이 필요합니다.
Q2. —sref와 —cref를 동시에 사용할 때 충돌이 발생하면 어떻게 하나요?
두 파라미터는 서로 다른 영역을 제어합니다. —sref는 전체 아트 스타일(색감, 렌더링 방식, 질감)을, —cref는 특정 캐릭터의 외형적 특징(얼굴, 의상, 체형)을 보존합니다. 충돌이 느껴질 때는 —sw를 6080으로 낮추고 100으로 높여서 캐릭터 일관성에 우선순위를 두세요. 또한 프롬프트에서 스타일 관련 키워드를 최소화하면 —sref가 더 안정적으로 작동합니다.—cw를 90
Q3. 200개 이상의 에셋을 관리할 때 프롬프트와 결과물을 어떻게 체계적으로 정리하나요?
스프레드시트 기반 프롬프트 관리 시스템을 추천합니다. 캐릭터명, 클래스, 프롬프트, 시드값, 사용된 —sref/—cref URL, 최종 선정 이미지 링크를 열로 구성합니다. Midjourney의 /describe 명령으로 기존 결과물의 프롬프트를 역추출하여 기록해두면 향후 재생산이나 변형에 유리합니다. 픽셀드래곤 팀은 Notion 데이터베이스와 Google Sheets를 병행 사용하여 전체 에셋을 추적했습니다.