00 · STATUS
지금 상태 — v2 그림은 생성 전
v2 그림은 아직 한 장도 없어요. 생성은 주인이 허락한 뒤 메인이 돌려요. 집필·기획 단계에서는 tools/gen.py 를 실행하지 않아요(바이블 5-1).
1판 그림 47장은 game/images/_v1 로 옮겼고(배포 제외), 최상위엔 jpg 0장 — 엔진 폴백(그라데이션·이름 카드)으로 돌아요. prompts.json 은 v2(45항목, seed 없음)로 바뀌었어요(2026-10-14 확인). 이 문서에도 1판 그림은 싣지 않았어요.
| 항목 | 지금 | v2 생성 전 할 일 |
|---|---|---|
| v2 그림 45장 | 생성 전 | 주인 허락 → 메인이 gen.py 실행 |
| 1판 그림 47장 | game/images/_v1 로 옮김(배포 제외). 최상위 jpg 0장 | 없음 — v2 그림이 들어오기 전까지 엔진 폴백으로 보여요 |
| prompts.json | v2 — 5-2 화풍 문장, 45항목, seed 없음 | 없음 |
| 엔진 시작 검사 9-2 ② | bg·cg id 가 prompts.json 에 있는지 봄 — validate.mjs 오류 0건(2026-10-14) | 없음 |
표 0 · 그림 현황 (2026-10-14 ls game/images 실측)
01 · DIRECTION
방향 — 손그림 수채, 성인 얼굴, 호그와트 교복
1판은 「조세이 망가 미연시」 화풍이었어요. 뽑아 보니 피부가 매끈하게 반짝이고 테두리 빛이 과했어요. 주인이 「AI 같다」고 한 게 글만이 아니라 그림에도 해당했어요. v2 는 펜 선에 수채를 얹은 그림책 쪽으로 옮겼어요. 종이 결이 보이고, 선이 조금 흔들리고, 색이 바래 있는 그림이요.
무대도 바뀌었어요. 1판은 2003년 마법부 감정실이라 코트·조끼 차림이었는데, v2 는 1998~99년 호그와트 8학년이에요. 그래서 모두 검은 학교 로브에 기숙사 넥타이를 매요. 프롬프트에는 「uniform」 대신 「academic robe」와 넥타이 색만 써요(바이블 5-3).
말포이 외형에서 정한 것
- 소매가 손등을 덮어요. 사고로 키가 10cm쯤 줄어서(바이블 1-4, IF) 원래 로브가 커요. 키 차이를 몸이 아니라 옷으로 보여 주는 장치예요(바이블 1-5).
- 바지예요. 말포이가 스스로 고른 것이라(바이블 1-5) 모든 말포이 그림에
long black trousers가 들어가요. - 눈은 회색이에요. 초록 눈은 특정 팬 작가의 디자인이라 쓰지 않아요(research/trend.md 5장).
- 머리는 어깨 아래까지, 목덜미에서 느슨하게 묶어요. 1판의 검은 리본은 뺐어요. 퀴디치 CG 에서 묶음이 풀려 날리는 장면(cg_pitch)이 이걸 받아요.
- 1판의
tall adult proportions는 뺐어요. v2 말포이는 해리보다 작아요.
02 · SPEC
생성 조건
바이블 5-1 값 그대로예요. 근거는 research/risk-art.md 4장(2026-10-14 실측)이에요.
| 항목 | 값 | 이유·근거 |
|---|---|---|
| 모델 | @cf/black-forest-labs/flux-1-schnell | Workers AI 무료 할당 안에서 돌릴 수 있는 이미지 모델(risk-art.md 4장) |
| steps | 8 | 바이블 5-1 고정값 |
| 크기 | 1024×1024 JPEG | 이 모델은 width/height 를 받지 않아요. 정사각 한 장을 화면에 세 가지로 잘라 써요(4장) |
| seed | 넣지 않음 | 넣으면 HTTP 400 이 났어요(1판 실측). prompts.json 에도 seed 키를 두지 않아요 |
| 저장 크기 | 인물 표정 768 축소 · bg_*·cg_* 1024 원본 | gen.py 기본 동작. 인물 카드는 화면에서 작게 쓰이고, 배경·CG 는 화면 전체를 덮어요 |
| 후보 | 장당 2장(45 × 2 = 90장) | 사람이 둘 중 하나를 골라요. 둘 다 버림 기준에 걸리면 그 id 만 다시 뽑아요 |
| 실행 | 집필·기획 단계 금지. 주인 승인 뒤 메인 | 2026-10-14 에 무료 한도를 넘겨도 호출이 막히지 않았어요(1판 실측). gen.py 에 유료 잠금이 들어가 있어요 |
| 후보 저장 위치 | game/images/_cand/<id>_1.jpg, _2.jpg | python3 tools/gen.py -n 2 ID 형식. 고른 파일만 game/images/<id>.jpg 로 복사하고 _cand 는 지워요 |
표 1 · 생성 조건표 (바이블 5-1)
03 · STYLE LOCK
화풍 고정 문장
모든 그림 앞에 붙는 문장이에요. prompts.json 의 style 칸에 들어가고, gen.py 가 항목마다 앞에 이어 붙여요. 글자 하나 바꾸지 않아요. 쉼표 하나만 달라져도 모델이 받는 문장이 달라져서, 이미 고른 그림과 결이 어긋날 수 있어요.
Hand-drawn illustration, fine dip-pen ink linework with loose transparent watercolor washes on rough cold-press paper, visible paper grain, uneven hand-drawn lines and small pencil marks, flat matte colors with no glossy highlights, muted desaturated palette of slate green, faded crimson, parchment beige and soft grey, gentle natural light, mature character design for adult readers, adult characters only. No text, no letters, no words, no signature, no watermark, no logo.
1판 문장과 비교 — 무엇을 넣고 무엇을 뺐나
1판 문장은 이거였어요: Josei manga visual novel illustration, clean cel shading, soft painterly lighting, muted elegant palette of deep green, silver and warm candlelight, adult characters only, no text, no watermark.
| 1판 | v2 | 바꾼 이유 |
|---|---|---|
Josei manga visual novel illustration | Hand-drawn illustration | 「manga」「visual novel」이 들어가면 모델이 애니 셀 화풍을 끌고 와요. 장르 단어를 빼고 「손으로 그렸다」만 남겼어요 |
clean cel shading | fine dip-pen ink linework with loose transparent watercolor washes | 매끈한 셀 음영이 반질반질함의 첫째 원인이었어요. 펜 선 + 투명 수채로 바꿔 면이 고르지 않게 했어요 |
| (없음) | on rough cold-press paper, visible paper grain | 종이 결을 깔아 화면 전체에 잔 얼룩이 생기게 해요. 디지털 그라데이션이 덜 보여요 |
| (없음) | uneven hand-drawn lines and small pencil marks | 선 굵기가 일정하면 기계 그림처럼 보여요. 흔들림과 연필 자국을 일부러 넣었어요 |
| (없음) | flat matte colors with no glossy highlights | 피부·머리카락의 하이라이트 반짝임을 막는 문구예요 |
soft painterly lighting | gentle natural light | 1판은 테두리 빛(림라이트)이 과했어요. 무대 조명 느낌을 빼고 창빛 정도로 낮췄어요 |
muted elegant palette of deep green, silver and warm candlelight | muted desaturated palette of slate green, faded crimson, parchment beige and soft grey | 채도를 한 번 더 낮췄어요(desaturated). 그리핀도르 셋(해리·론·헤르미온느)이 나오니 빨강 계열(faded crimson)을 넣었고, 양피지 베이지·회색을 바탕색으로 깔았어요 |
adult characters only | mature character design for adult readers, adult characters only | 얼굴 나이를 끌어올리는 문구를 하나 더 걸었어요(원칙 1) |
no text, no watermark | No text, no letters, no words, no signature, no watermark, no logo. | 1판 첫 생성분에 글자·서명 같은 낙서가 섞였어요. 막는 단어를 늘렸어요. 그래도 효과는 약하니 검수에서 다시 걸러요 |
표 2 · 화풍 문장 비교표 (1판 = 2026-10-14 교체 전 1판 prompts.json 의 style, v2 = 바이블 5-2)
04 · CHARACTER SHEETS
인물 외형 고정 문장
인물마다 영어 한 단락이 있어요. 순서는 나이 → 얼굴 → 눈 → 머리 → 옷이에요. 그 인물이 나오는 그림에는 이 단락을 그대로 넣고, 뒤에 구도·표정 문장만 바꿔 붙여요.
모든 학생이 「26 years old」인 건 실수가 아니에요. 설정 나이는 18~19세지만, 이 모델은 「mid-twenties」라고 써도 10대처럼 그렸어요(risk-art.md 3·4-3장). 그림에서 성인 얼굴을 강제하려고 일부러 높게 적었어요.
| id | 외형 고정 문장 (영어 원문) | 한국어 요약 |
|---|---|---|
draco | Adult woman, 26 years old, mature face, narrow pointed chin, defined cheekbones, pale skin, cool grey eyes, thin straight eyebrows, long straight platinum blonde hair past the shoulders loosely tied at the nape, black open-front academic robe with green lining over a white shirt and grey knit V-neck sweater, green and silver striped tie, robe sleeves slightly too long reaching the knuckles, long black trousers, fully clothed, modest outfit. | 백금발 긴 생머리 목덜미 묶음 / 회색 눈 / 검은 로브(초록 안감)·회색 니트 조끼·초록-은 줄무늬 넥타이·긴 바지·손등 덮는 소매 |
ron | Adult man, 26 years old, mature face, long face, freckles, blue eyes, shaggy ginger hair, tall and lanky, black open-front academic robe with red lining over a maroon hand-knitted sweater, red and gold striped tie loosened, long trousers, fully clothed. | 생강색 머리·주근깨 / 파란 눈 / 키 큼 / 검은 로브(빨강 안감)·적갈색 손뜨개 스웨터·빨강-금 넥타이 느슨하게 |
hermione | Adult woman, 26 years old, mature face, defined cheekbones, warm brown eyes, very bushy curly brown hair worn half-up, black open-front academic robe with red lining over a white shirt and grey knit V-neck sweater, red and gold striped tie neatly knotted, long dark trousers, a heavy book held against the chest, fully clothed, modest outfit. | 부스스한 갈색 곱슬 반묶음 / 갈색 눈 / 검은 로브·빨강-금 넥타이 단정·긴 바지·두꺼운 책 (피부색은 원작 본문 서술이 없어 넣지 않음) |
blaise | Adult Black man, 26 years old, mature face, high cheekbones, long narrow eyes, close-cropped black hair, tall, black open-front academic robe with green lining over a crisp white shirt, green and silver striped tie, long trousers, fully clothed. | 짧은 검은 머리 / 높은 광대·가늘고 긴 눈[원작 HBP 묘사] / 키 큼 / 검은 로브(초록 안감)·초록-은 넥타이 |
slughorn | Elderly man, very large round belly, shiny bald head, thick silvery walrus moustache, pale green eyes, maroon velvet waistcoat with gold buttons under a dark green robe, holding a small old-fashioned camera, fully clothed. | 대머리·은빛 바다코끼리 콧수염 / 큰 배 / 자주 벨벳 조끼·짙은 초록 로브·옛날 사진기 |
pomfrey | Middle-aged woman, stern but kind face, greying hair pinned under a white nurse's cap, white apron over a long dark blue robe, fully clothed, modest outfit. | 흰 간호모·앞치마 / 짙은 파랑 긴 로브 |
mcgonagall | Elderly woman, tall and thin, severe face, square spectacles, black hair streaked with grey in a tight bun, emerald green robe, black pointed witch's hat, fully clothed, modest outfit. | 사각 안경[원작] / 희끗한 올림머리 / 에메랄드 로브[원작]·고깔모자 |
harry (CG 전용) | Adult man, 26 years old, mature face, untidy jet-black hair, bright green eyes, round glasses, thin lightning-bolt shaped scar on the forehead, black open-front academic robe with red lining over a white shirt, red and gold striped tie, long trousers, fully clothed. | 헝클어진 검은 머리·둥근 안경·번개 흉터 / 초록 눈 / 검은 로브·빨강-금 넥타이. CG 에서는 뒷모습·옆모습·손 위주 |
draco_m (cg_e2 전용) | Adult man, 26 years old, mature face, narrow pointed chin, defined cheekbones, pale skin, cool grey eyes, short neatly combed platinum blonde hair, + draco 의 옷 문장 그대로(단 robe sleeves slightly too long reaching the knuckles 는 뺌) | 원래 모습(남성). E2 에서 키가 다시 커졌으니 소매 문구를 빼요 |
표 3 · 인물 외형표 (바이블 5-3 원문 그대로)
- 프롬프트에 넣지 않는 단어: 배우 이름 · 「Harry Potter」 · 「Hogwarts」 · 「film」 · 「movie still」 · 「uniform」(바이블 5-3). 영화 스틸이나 배우 얼굴을 끌어오지 않으려는 거예요.
- 해리는 플레이어라 스탠딩 카드가 없어요(바이블 2-5). 1판에 있던
harry_neutral·harry_surprised는 v2 목록에 없어요. 해리는 CG 4장(cg_cauldron·cg_pitch·cg_e1·cg_e2)에만 나오고, 얼굴 정면은 피해요.
인물은 머리색과 옷으로 구별해요
이 모델은 얼굴을 장마다 똑같이 잡지 못해요(risk-art.md 4-2). 그래서 독자가 머리색과 옷으로 알아보게 해요. 학생 넷이 같은 검은 로브를 입으니 머리가 제일 큰 단서예요.
| id | 머리 | 옷 단서 | 이름표 색(meta) | 헷갈릴 상대와 가르는 법 |
|---|---|---|---|---|
| draco | 백금 긴 머리 | 초록 안감·초록-은 넥타이·회색 조끼 | #dfe7ee | 블레이즈와 넥타이가 같아요 → 머리 길이·색으로 갈라요 |
| ron | 생강색 덥수룩 | 적갈색 손뜨개 스웨터·느슨한 넥타이 | #e07a4f | 헤르미온느와 넥타이가 같아요 → 스웨터와 머리색 |
| hermione | 갈색 곱슬 반묶음 | 단정한 넥타이·가슴에 안은 책 | #d39a6a | 책이 거의 항상 같이 나와요 |
| blaise | 짧은 검은 머리 | 흰 셔츠·초록-은 넥타이 | #9fb89a | 말포이와 같은 기숙사 → 머리 |
| slughorn | 대머리·은빛 콧수염 | 자주 벨벳 조끼·사진기 | #c9b06b | 체형과 사진기로 바로 구별돼요 |
| pomfrey | 희끗한 머리·흰 간호모 | 흰 앞치마·짙은 파랑 로브 | #a9b6d8 | 간호모 |
| mcgonagall | 희끗한 올림머리 | 에메랄드 로브·고깔모자·사각 안경 | #6fbf8f | 로브 초록이 슬리데린 초록과 비슷해요 → 고깔모자와 안경 |
표 4 · 인물 구별표 (이름표 색 = 바이블 6-2 meta.json color)
05 · LAYOUT
화면 구성 — 정사각 한 장을 세 가지로
모든 그림이 1024 정사각이라, 종류마다 구도 문장과 화면 자르는 법을 따로 정했어요. 1판 구성을 그대로 써요(바이블 5-4).
| 종류 | 생성 구도 문장 (외형 문장 뒤에 붙임) | 화면 표시 |
|---|---|---|
| 인물 표정 | Waist-up portrait, centered, facing the viewer, plain warm grey paper background with a faint watercolor stain, soft light. Expression: <표정 문장>. | 반신 카드: 4:5 둥근 모서리 카드, object-fit:cover; object-position:50% 20%. 가로 화면 높이 56vh, 세로 화면 폭 62vw. pos left/center/right = 22%/50%/78%. 동시 표시 최대 2명. 말하는 인물 밝기 100%, 나머지 70% |
| 배경 | Empty scene, no people, wide establishing view, main subject in the middle horizontal band, eye-level camera. + 장소 문장 | 화면 전체 object-fit:cover |
| CG | Event illustration, centered composition. + 등장 인물 외형 문장 + 장면 문장 | 화면 전체 object-fit:contain, 여백은 같은 그림을 흐리게. CG 동안 인물 카드 숨김 |
표 5 · 화면 구성표 (바이블 5-4)
- 왜 반신 카드인가. 배경을 지운 투명 인물(PNG)을 만들 도구가 이 기계에 없어요(1판 2026-10-14 확인 — rembg·PIL 없음). 종이색 배경째 카드로 띄우면 배경을 따로 안 지워도 돼요.
- 위쪽 20%에 초점. 정사각을 4:5 로 자르면 위아래가 잘려요.
50% 20%로 얼굴 쪽을 남겨요. - 배경은 가운데 띠에 피사체. 세로 화면에서는 좌우가, 가로 화면에서는 위아래가 잘려요. 가운데 가로 띠에 두면 어느 쪽에서도 남아요.
- CG 는 자르지 않아요. 손·약병처럼 가장자리에 걸린 것이 잘리면 장면이 안 읽혀요. 그래서 contain 이고, 남는 여백은 같은 그림을 흐리게 깔아요.
06 · FULL LIST
이미지 전체 목록 — 45장
인물 표정 25 + 배경 12 + CG 8 = 45장이에요. 파일 이름은 game/images/<id>.jpg 이고, prompts.json 항목 순서도 이 표 순서(표정 → 배경 → CG)예요. 「쓰는 챕터」는 game/story/ch1~ch5.json 을 세어 채웠어요(2026-10-14 실측 — say·show 의 face, 씬 bg·bg 줄, cg 줄). draco_teary 는 지금 원고 어디에도 안 나와요. 그래도 바이블 5-5 목록이라 45장에 남겨 뒀어요.
| # | id | 종류 | 설명 | 쓰는 챕터 |
|---|---|---|---|---|
| 1 | draco_neutral | 표정 | 말포이 기본 | ch1~ch5 |
| 2 | draco_smirk | 표정 | 비꼼, 「포터.」 | ch1~ch5 |
| 3 | draco_annoyed | 표정 | 짜증 | ch1~ch5 |
| 4 | draco_angry | 표정 | 분노(「다 네 탓이야, 포터.」) | ch1~ch5 |
| 5 | draco_flustered | 표정 | 칭찬·「해리」 직후 | ch2~ch5 |
| 6 | draco_sad | 표정 | 베조아르가 안 듣는 장면 같은 상실 | ch2~ch5 |
| 7 | draco_surprised | 표정 | 놀람 | ch1~ch5 |
| 8 | draco_soft | 표정 | 호감 후반 | ch3·ch4·ch5 |
| 9 | draco_teary | 표정 | 울음을 참음 | 안 씀(원고 0회) |
| 10 | draco_resolute | 표정 | 결심 | ch1~ch5 |
| 11 | ron_neutral | 표정 | 론 기본 | ch1~ch5 |
| 12 | ron_grin | 표정 | 놀림·가족 가게 자랑 | ch1~ch5 |
| 13 | ron_shocked | 표정 | 사레(스웨터 발견, 버터맥주) | ch2~ch5 |
| 14 | ron_eating | 표정 | 닭다리 들고 볼 빵빵 | ch1~ch5 |
| 15 | hermione_neutral | 표정 | 헤르미온느 기본 | ch1~ch5 |
| 16 | hermione_stern | 표정 | 잔소리·경계(화장실 장면) | ch1~ch5 |
| 17 | hermione_smile | 표정 | 누그러짐(「받아 둘게.」) | ch3·ch4·ch5 |
| 18 | hermione_surprised | 표정 | 놀람 | ch1·ch4 |
| 19 | blaise_neutral | 표정 | 블레이즈 기본 | ch1~ch5 |
| 20 | blaise_smirk | 표정 | 「흥미롭네.」 | ch1~ch5 |
| 21 | blaise_grave | 표정 | 나르시사에게 소식 흘린 고백 | ch3·ch4·ch5 |
| 22 | slughorn_beaming | 표정 | 사진기 들고 자랑 | ch1·ch2·ch3·ch5 |
| 23 | slughorn_flustered | 표정 | 솥 터진 뒤 허둥댐 | ch1·ch2·ch3·ch5 |
| 24 | pomfrey_stern | 표정 | 병동 잔소리 | ch1·ch3·ch5 |
| 25 | mcgonagall_stern | 표정 | 「붙어 다녀라, 포터.」 | ch1 |
| 26 | bg_hall | 배경 | 대연회장 — 긴 식탁 넷, 떠 있는 촛불, 별이 보이는 천장 | ch1~ch5 |
| 27 | bg_potions | 배경 | 지하 마법약 교실 — 돌벽, 솥이 놓인 작업대, 재료 병 선반 | ch1·ch2·ch5(s1·E4) |
| 28 | bg_wing | 배경 | 병동 — 하얀 철제 침대 줄, 칸막이 커튼, 높은 창 | ch1·ch3·ch5 |
| 29 | bg_gryf | 배경 | 그리핀도르 휴게실 — 빨간 안락의자, 벽난로 | ch2 |
| 30 | bg_slyth | 배경 | 슬리데린 휴게실 — 호수 밑 초록 창, 낮은 천장, 가죽 소파 | ch1·ch2·ch4·ch5 |
| 31 | bg_pitch | 배경 | 퀴디치 경기장 — 높은 골대 고리 셋, 관중석 탑, 흐린 가을 하늘 | ch2·ch5(E2) |
| 32 | bg_bathroom | 배경 | 2층 여자 화장실 — 금 간 세면대, 둥근 세면대 기둥, 흐린 창 | ch3 |
| 33 | bg_slugparty | 배경 | 슬러그혼 연구실 크리스마스 파티 — 사진 액자 수십 개, 촛불, 휘장 | ch3 |
| 34 | bg_broomsticks | 배경 | 세 개의 빗자루 — 붐비는 펍, 나무 테이블, 거품 머그 | ch4 |
| 35 | bg_ror | 배경 | 불탄 필요의 방 — 그을린 높은 방, 재 무더기, 녹은 잡동사니 | ch4 |
| 36 | bg_lake | 배경 | 호숫가 — 넓은 검은 호수, 멀리 성, 해 질 녘 | ch5 |
| 37 | bg_tower | 배경 | 천문탑 꼭대기 밤 — 돌 난간, 망원경, 보름달 | ch4·ch5 |
| 38 | cg_cauldron | CG | 터진 솥과 은빛 연기. 바닥에 주저앉은 TS 말포이(로브·바지 그대로, 소매가 손을 덮음), 연기 너머로 손을 내미는 해리의 팔과 안경 낀 옆얼굴 | ch1_s3 |
| 39 | cg_pitch | CG | 비 오기 직전 하늘, 빗자루 두 대가 나란히 낮게 날며 작은 금색 공을 쫓음. 앞쪽 말포이(머리 묶음이 풀려 날림), 반 걸음 뒤 해리 뒷모습 | ch2_s3 |
| 40 | cg_hands | CG | 금 간 세면대 위, 작은 약병을 든 손(초록 안감 소매)과 머리카락 한 올을 떨어뜨리는 손(빨강 안감 소매). 얼굴 없음 | ch3_s4a |
| 41 | cg_ash | CG | 그을린 방, 재를 뜨는 손(초록 안감 소매)과 그 손을 잡은 다른 손(빨강 안감 소매). 얼굴 없음 | ch4_s4 |
| 42 | cg_e1 | CG | 천문탑 보름달 아래, 뚜껑 닫힌 약병을 쥔 말포이가 해리 쪽으로 고개를 돌려 웃음(해리는 뒷모습). 가까운 거리, 접촉 없음 | ch5_e1 (E1) |
| 43 | cg_e2 | CG | 다음 날 경기장, 원래 모습의 남성 말포이(draco_m)가 빗자루를 어깨에 메고 해리와 나란히 선 뒷모습 — 말포이가 약간 더 큼 | ch5_e2 (E2) |
| 44 | cg_e3 | CG | 학기 마지막 날 호숫가, 바람에 머리가 날리는 말포이가 슬리데린 넥타이를 고쳐 매며 정면을 봄. 멀리 성 | ch5_e3t (E3) |
| 45 | cg_e5 | CG | 새벽 안개, 성 앞 마차를 끄는 뼈만 남은 검은 날개 말(세스트랄), 마차에 오르는 백금발 뒷모습 | ch5_e5 (E5) |
표 6 · 이미지 전체 목록 45장 (설명 = 바이블 5-5·5-6·5-7, 쓰는 챕터 = 원고 실측 2026-10-14)
- E4·E6 은 CG 가 없어요(meta
cg: null). 엔딩 갤러리에서는 이름 카드로 보여요. - 배경 장소 문장(영어)은 바이블 5-6 에 있어요. 예:
bg_tower=top of a stone tower at night, low parapet, brass telescopes, large full moon over mountains. 장소 이름(Hogwarts·Astronomy Tower)은 넣지 않고 생김새만 써요. - CG 의 손 두 장(cg_hands·cg_ash)은 얼굴이 없어요. 소매 안감 색(초록 = 말포이, 빨강 = 해리)만으로 누구 손인지 읽혀요. 얼굴이 없으면 장마다 얼굴이 달라지는 문제도 피해요.
- 해리는 정면 얼굴로 나오지 않아요. 플레이어 = 해리라서, 화면 속 해리 얼굴이 플레이어가 떠올린 얼굴과 부딪치지 않게 했어요.
- E1 CG 는 접촉이 없어요. 키스 직전 암전은 글로 처리하고(바이블 0-1 원칙 2), 그림은 가까운 거리에서 멈춰요.
07 · EXPRESSIONS
표정 문장
구도 문장 끝 Expression: 뒤에 붙는 문장이에요. 한 인물의 표정 여러 장은 외형 문장이 같고 이 줄만 달라요.
| id | 표정 문장 (Expression: 뒤) | 쓰는 때 |
|---|---|---|
draco_neutral | calm, unreadable, lips closed | 기본 |
draco_smirk | one corner of the mouth raised, condescending half-smile, eyes half-lidded | 비꼼·「포터.」 |
draco_annoyed | frowning, eyes narrowed, looking slightly away | 짜증 |
draco_angry | glaring, jaw clenched, eyebrows drawn together | 분노 |
draco_flustered | faint blush on the cheeks, eyes averted, lips pressed together | 칭찬·「해리」 직후 |
draco_sad | eyes lowered, eyebrows slightly raised in the middle, quiet sorrow | 상실 |
draco_surprised | eyes wide, lips slightly parted | 놀람 |
draco_soft | small reluctant smile, relaxed eyes | 호감 후반 |
draco_teary | eyes glistening with held-back tears, chin raised stubbornly | 울음을 참음 |
draco_resolute | steady direct gaze, chin raised, determined | 결심 |
ron_neutral | easygoing, slightly sleepy | 기본 |
ron_grin | wide lopsided grin | 놀림·자랑 |
ron_shocked | mouth open, eyes wide, eyebrows shot up | 사레·경악 |
ron_eating | cheeks puffed with food, holding a chicken leg | 식탐 |
hermione_neutral | attentive, composed | 기본 |
hermione_stern | serious frown, one eyebrow raised | 잔소리·경계 |
hermione_smile | small warm smile | 누그러짐 |
hermione_surprised | eyebrows raised, eyes wide | 놀람 |
blaise_neutral | bored, heavy-lidded, cool | 기본 |
blaise_smirk | amused knowing smile | 「흥미롭네」 |
blaise_grave | serious, eyes lowered | 고백 |
slughorn_beaming | delighted beaming smile, moustache lifted, raising the camera | 기본·자랑 |
slughorn_flustered | sweating, wide eyes, hands raised in panic | 허둥댐 |
pomfrey_stern | lips pressed, hands on hips | 기본 |
mcgonagall_stern | thin lips, one eyebrow raised over the spectacles | 기본 |
표 7 · 표정 문장표 25줄 (바이블 5-5 원문 그대로)
말포이 표정이 10장으로 제일 많아요. 공략 대상이고 거의 모든 장면에 나오니까요. 론은 4장인데 그중 하나가 ron_eating 이에요. 원작 팬이 론을 알아보는 첫 번째 단서가 먹는 얼굴이라서요. 단역 셋(슬러그혼·폼프리·맥고나걸)은 1~2장으로 줄였어요.
draco_flustered 의 faint blush 는 얼굴 붉힘까지만이에요. 몸을 움츠리거나 옷을 여미는 동작은 넣지 않아요(바이블 1-5).
08 · REVIEW
검수 체크리스트
후보 2장 중 하나를 고를 때 위에서부터 봐요. 하나라도 걸리면 버려요. 애매하면 버려요. 후보가 둘뿐이라 둘 다 걸리는 일이 생길 수 있는데, 그러면 그 id 만 다시 뽑아요.
| # | 항목 | 버리는 경우 | 근거 |
|---|---|---|---|
| 1 | 얼굴 나이 | 어려 보이는 얼굴. 둥근 볼·큰 눈·작은 코가 겹쳐 10대로 읽히면 버려요 | 원칙 1 · 바이블 5-1 |
| 2 | 노출 | 지시하지 않은 노출. 맨다리·맨어깨·풀어헤친 셔츠 포함. 말포이는 바지가 보여야 해요 | 원칙 2 · 바이블 1-5 |
| 3 | 글자 | 글자·서명·워터마크·로고. 배경 액자 속 낙서 같은 글자도 포함 | 바이블 5-1 |
| 4 | 배우 닮음 | 영화 배우가 떠오르는 얼굴. 한 번이라도 특정 배우 이름이 떠오르면 버려요 | 바이블 5-1 · 5-3 |
| 5 | 화풍 | 반질반질한 3D·광택 피부·강한 림라이트. 펜 선과 종이 결이 안 보이면 버려요 | 바이블 5-1 · 5-2 |
| 6 | 머리색·눈색 | 말포이 머리가 백금이 아님, 눈이 초록, 론 머리가 생강색이 아님 | 바이블 5-3 |
| 7 | 넥타이 색 | 그리핀도르 셋이 초록 넥타이, 슬리데린 둘이 빨강 넥타이 — 기숙사가 바뀐 그림 | 바이블 5-3 |
| 8 | 말포이 소매·바지 | TS 말포이 그림에서 소매가 손목 위로 올라감, 치마가 나옴(draco_m 은 소매 예외) | 바이블 1-5 · 5-3 |
| 9 | 사람이 들어간 배경 | bg_* 에 사람 형체가 있음. 인물 카드와 겹쳐 누가 말하는지 헷갈려요 | 바이블 5-4 구도 문장 |
| 10 | CG 접촉 수위 | cg_e1 에 입맞춤·끌어안기가 그려짐. 손만 나오는 CG 에서 손 외 신체가 크게 나옴 | 원칙 2 · 바이블 5-7 |
| 11 | 해리 얼굴 | CG 에서 해리 얼굴이 정면으로 크게 나옴 | 바이블 5-3 harry 줄 |
| 12 | 미성년으로 읽히는 인물 | 배경·CG 에 아이 같은 형체(하급생)가 섞임 | 원칙 1 · 바이블 0-1 |
표 8 · 검수 체크리스트 (항목 1~6 = 바이블 5-1 버림 기준, 7~12 = 5-3·5-7·0-1 에서 끌어낸 것)
고른 뒤에는 같은 인물 표정끼리 나란히 놓고 한 번 더 봐요. 머리 길이·넥타이 무늬가 장마다 다르면 독자가 다른 사람으로 읽어요. 이때 기준은 그 인물의 _neutral 이에요. neutral 을 먼저 고르고, 나머지 표정은 neutral 과 맞는지로 골라요.
09 · COST
생성 비용
Workers AI 는 이미지를 512×512 타일 수와 스텝 수로 셈해요. 1024² 한 장은 타일 4장이고, 8스텝이면 4×4.8 + 8×9.6 = 96 뉴런이에요(research/risk-art.md 4-1, https://developers.cloudflare.com/workers-ai/platform/pricing/ 2026-10-14 확인). 하루 무료 할당은 10,000 뉴런이에요.
| 구분 | 장수 | 후보 | 뽑는 장수 | 문서 계산 (96 뉴런/장) | 1판 실측 단가로 추정 (약 196 뉴런/장) |
|---|---|---|---|---|---|
| 인물 표정 | 25 | 2 | 50 | 4,800 | 9,800 |
| 배경 | 12 | 2 | 24 | 2,304 | 4,704 |
| CG | 8 | 2 | 16 | 1,536 | 3,136 |
| 합계 | 45 | — | 90 | 8,640 | 17,640 |
| 무료 10,000 대비 | — | — | — | 86.4% — 하루 안 | 176.4% — 하루를 넘음 |
표 9 · 생성 비용표 (장수 × 후보 2 × 단가. 모두 파이썬으로 계산)
바이블 기준은 왼쪽 칸(8,640 뉴런, 하루 안)이에요. 그런데 1판을 뽑은 2026-10-14 실측은 장당 약 196 뉴런이었어요(UTC 하루 flux 호출 91건 17,798 뉴런, Cloudflare GraphQL aiInferenceAdaptiveGroups 조회 — 1판 05 문서 기록). 실패한 호출이 뉴런을 쓰는지는 미확인이라 단가가 정말 두 배인지는 확정하지 못했어요. 오른쪽 칸은 그 실측을 그대로 곱한 추정이에요.
gen.py 는 장당 200 뉴런으로 잡고 하루 10,000 을 넘을 실행을 멈춰요. 그러니 90장을 한 번에 돌리면 잠금에 걸려요. 이틀로 나눠요.
| 날 | 무엇 | 장수(후보 포함) | gen.py 셈(200/장) |
|---|---|---|---|
| 첫날 | 인물 표정 25 × 2. 먼저 학생 넷의 _neutral 4장(draco·ron·hermione·blaise)과 단역 기준 컷부터 뽑아 고르고, 나머지 표정은 그 뒤에 | 50 | 10,000 — 한도와 딱 맞아 재시도 여유가 없어요. 표정 24장(48장, 9,600)에서 끊고 1장은 둘째 날로 넘겨요 |
| 둘째 날 | 첫날 남은 표정 + 배경 12 × 2 + CG 8 × 2 + 다시 뽑을 것 | 42 + 다시 뽑기 | 8,400 + 다시 뽑기 분. 다시 뽑기가 8장을 넘으면 셋째 날로 |
표 10 · 이틀 나눠 뽑기 (무료 한도만 쓰는 전제. 한도는 UTC 0시 = 한국 오전 9시에 초기화)
CG 를 표정 뒤로 미룬 이유가 있어요. CG 에는 인물 외형 문장이 들어가는데, 표정 기준 컷을 보고 외형 문장이 의도대로 나오는지 먼저 확인해야 CG 후보를 버리지 않아요.
유료 단가는 미확인이에요. 2026-10-14 에 무료 한도를 넘긴 뒤에도 호출이 성공했으니, 이 계정은 한도를 넘으면 막히지 않고 과금되는 쪽으로 봐요(추정). gen.py 잠금은 주인이 허락할 때만 BRUNI_PAID_IMAGE_OK=yes-owner-approved 로 풀어요.
10 · PROMPTS.JSON
prompts.json 형식
{"style": "<5-2 문장>", "items": [{"id": "draco_neutral", "prompt": "<외형 문장> <구도 문장> Expression: calm, unreadable, lips closed."}]}
seed키를 넣지 않아요(HTTP 400).- 항목 순서는 표정 25 → 배경 12 → CG 8 이에요(바이블 5-8).
- 1판 그림 47장은 v2 에 쓰지 않아요(
game/images/_v1에 보관). 파일 이름이 겹치던 것도 화풍과 옷이 달라서 전부 새로 뽑아요. - CG 항목 prompt 는
Event illustration, centered composition.+ 나오는 인물의 외형 문장(해리는 harry, cg_e2 의 말포이는 draco_m) + 장면 문장 순서예요. 손만 나오는 cg_hands·cg_ash 는 외형 문장 대신 소매 색만 적어요. 얼굴 문장을 넣으면 모델이 얼굴을 그리려 해요.
11 · OPEN ITEMS
확인 못 한 것, 조건이 걸린 일
| 항목 | 지금 | 언제 처리하나(조건) |
|---|---|---|
| v2 화풍 문장의 효과 | 미확인 — 생성 전 | 첫날 기준 컷을 본 뒤. 반질함이 남으면 메인에게 바이블 5-2 수정안을 올려요 |
| 장당 실제 뉴런 | 문서 96, 1판 실측 약 196 — 차이 원인 미확인 | v2 첫 생성 날 시작 전·후 GraphQL 사용량과 성공 장수를 대조해 이 표를 고쳐요 |
| WebP 변환 | 안 함 — 바이블 5-1 이 JPEG 고정 | 전체 용량을 잰 뒤 모바일 로딩이 느리다는 기록이 생기면 바이블 개정을 논의해요(research/vn-design.md 5장은 WebP 를 권함) |
표 11 · 미확인·조건부 항목