설계서를 쓰고, 그날 바로 글자판이 돌았다
Claude와 설계서를 처음 쓰면서 하루 동안 결정 69개를 내렸다. 세가 · 문파 · 마교를 모두 '세력' 하나로 묶고 계승 방식만 다르게 한다. 엔진은 Godot, 그림은 웹툰풍(기준은 깔끔한 선과 가라앉은 색의 교주 시안)으로 정했다. 0.1의 목적은 하나였다. "핏줄을 잇는 것 자체가 재미있는가." 그래서 그림 · 지도 · 소리 없이 글과 단추만으로 첫 판을 만들었다.


무림세가 홈으로개발일지CK3처럼 한 사람이 아니라 핏줄을 플레이하는 무협 가문 시뮬레이션이다. 설계서 첫 줄부터 65번째 작업 지시서까지, 11일 동안 AI와 함께 만든 것과 내가 정한 것, 고친 것을 게임 화면과 함께 정리했다.
'무림세가'는 첫 화면에 쓴 가제다. 날짜는 한국 시간, 장(章)은 내가 Claude Code에게 넘긴 작업 지시서 번호다.
무대는 명나라풍 가상 왕조의 하남성이다. 정파 중소 세가 다섯이 있고, 플레이어는 그 가운데 한 세가의 가주가 된다. 혼인하고, 아이를 낳고, 수련하고, 후계자를 세우고, 죽으면 다음 대가 잇는다. 0.1의 목표는 손자가 가주가 되는 것이고, 시뮬레이션으로 보면 평균 60년쯤 걸린다.
시계는 하루 단위로 흐른다. 플레이어는 배속과 일시정지로 지켜보고, 큰일이 생기면 저절로 멈춘다. 가주는 몸이 하나라 한 번에 한 가지 일만 한다. 폐관하는 동안에는 집안 일을 돌볼 수 없다.
색 칸은 37장에서 정한 세가 빛깔이다. 초상의 포와 옷이 이 색으로 물들어, 얼굴만 보고도 어느 집 사람인지 알 수 있게 했다.
무엇을 만들지, 어느 쪽으로 갈지 모두 내가 정한다. 직접 해 보고 이상한 곳을 찾는다.
설계서 · 이벤트 글 · 그림(API 생성, 자르기, 가림 그림) · 작업 지시서를 쓰고, 보고를 읽고 검토한다.
지시서대로 코드를 짜고, 점검을 돌리고, 화면을 찍고, 보고를 쓴다.
Codex와 새 Claude 대화가 글 모드로 몇십 년씩 직접 골라 가며 플레이하고, 버그와 엉킨 곳을 근거와 함께 남긴다. 11/10부터.
코드는 직접 짜지 않는다. 대신 보고와 사진, 초상 시트로 맞게 됐는지 확인한다. 한 장은 대개 몇 시간 걸린다. 11월 7일 하루에만 28장부터 39장까지 열두 장이 돌았다. 장이 끝날 때마다 보고는 murim-0.1-work-order.md에 쌓이고, 결정은 설계서 10번 '결정 기록'에 날짜와 함께 남는다. 결정이 바뀌어도 지우지 않고 이력으로 둔다. 몇 장마다 AI에게 플레이를 맡기고, 거기서 나온 것을 모아 고치는 장을 따로 둔다 (55 · 62 · 66장).
그림이나 화면만 바꾸는 장에서는 같은 운 번호로 이벤트를 끈 200판을 돌린다. 그 결과가 전 장과 한 줄도 다르지 않아야 한다. 가게에서 영수증 두 장을 겹쳐 대 보는 것과 같다. 한 줄이라도 다르면 그림만 바꾼다면서 세상까지 건드렸다는 뜻이다.
같은 까닭으로 초상을 고르는 데는 게임의 운을 쓰지 않는다. 사람마다 태어날 때 정해진 수만 쓴다.
Claude와 설계서를 처음 쓰면서 하루 동안 결정 69개를 내렸다. 세가 · 문파 · 마교를 모두 '세력' 하나로 묶고 계승 방식만 다르게 한다. 엔진은 Godot, 그림은 웹툰풍(기준은 깔끔한 선과 가라앉은 색의 교주 시안)으로 정했다. 0.1의 목적은 하나였다. "핏줄을 잇는 것 자체가 재미있는가." 그래서 그림 · 지도 · 소리 없이 글과 단추만으로 첫 판을 만들었다.


개발용 100년 자동 진행과 통계 화면이 생겼다. 직접 해 보니 이벤트 선택지가 고민할 가치가 없고 글뿐이라 눈에 들어오지 않았다. 그래서 '좋은 선택지의 조건' 다섯 가지를 세우고 마음 · 체면 · 판정 확률 같은 새 값을 더했다. 그림 프롬프트 문서를 따로 두고, 내가 ChatGPT로 그린 첫 초상을 붙였다.



14장에서 AI 플레이테스트 모드를 만들었다. 화면 없이 결정을 하나씩 내릴 수 있어서, Claude에게 먼저 몇 판을 해 보게 했고 모자란 정보 넷이 나왔다. 설계는 Gemini와 GPT에게도 따로 검토받아 이벤트 3판, 가문의 기억, 대를 잇는 사건들을 더했다.
이날 큰 그림도 여럿 정했다. 대부분 내가 떠올린 것을 Claude가 설계서에 정리했다. 바깥에서 오는 사건 아홉 가지와 구금, 강호 서열(1신 · 2룡 · 4존 · 천하십대고수), 다섯 세가의 가문 무공 이름이다. 아이 단계를 셋으로 나누는 것도 이날 정했다. 이 결정은 나흘 뒤 다섯 단계가 된다. OpenAI 이미지 API로 그림을 뽑기 시작한 것도 이날이다.

근육질 몸에 마른 얼굴이 얹혀 보이는 것을 고치려고 체형에 맞춘 얼굴을 만들었다. API 그림 402장에서 조각 1,583장을 잘라냈다. 23 · 24 · 25장은 그 그림의 흠을 고쳐 다시 들여오는 장이었다.
26 · 27장은 화면 개편이다. 1920×1080을 바탕으로 화면 규칙을 정하고 첫 화면, 하남 지도 메인, 한 해 정리, 인물 상세, 가계도, 혼담 창, 이벤트 창을 새로 그렸다.

열두 장이 돌았다. 가장 큰 결정은 35장이었다. 해 보니 1년 단위는 빠르고 밋밋했고, 1년 내내 폐관하는 건 말이 안 됐다. 그래서 11월 2일에 내가 정한 '실시간은 만들지 않는다'를 뒤집었다. 시계가 흐르고(배속 · 일시정지), 가주의 일은 석 달 · 반년 · 1년처럼 기간이 생겼다. 전투만 턴으로 남았다.








캐릭터 그림이 여전히 이상해 보여서, 그날 밤에는 Claude에게 45장 초상 시트 300장을 한 장씩 보며 흠을 직접 찾게 했다. 바탕 회색이 3 – 8만큼 밝아 몸 둘레에 생긴 테 607장, 귓불 옆에 뜬 점 128장, 경장 머리띠 토막 32장, 은퇴 모자 위로 삐져나온 상투 32장, 흰 머리 앞머리칼의 철사 같은 선 84장을 고쳤다. 남자처럼 보이던 여자 얼굴 둘은 다시 그렸다.






47장 보고를 보다가 "어릴 때 외모가 크면 바뀌는 경우가 많은 것 같은데" 싶었다. 청소년 얼굴은 생김새 단계마다 하나(남녀 5개)였다. 그래서 16세에 어른 얼굴 25가지 가운데 하나로 바뀌며 사람이 갑자기 달라졌다. 48장에서 청소년 얼굴을 어른 얼굴 유형마다 하나씩(남녀 25개) 만들었다. 이제 13세 얼굴이 그 사람의 어른 얼굴을 열 살쯤 어리게 한 모습이다.
49장은 그다음 든 생각에서 나왔다. 체형도 폭식이나 내상, 단련 같은 특수한 상황에서 더 자주 바뀌면 좋겠다는 것. 이제 무거운 내상을 입은 동안은 야윈 몸이 된다. 문하 단련을 오래 받으면 튼튼해질 수 있다. [태만]은 나이 들며 살찌기 쉽고 [무치]는 튼튼해지기 쉽다. 단, 체형은 그림에만 쓰기로 했다. 튼튼하다고 강한 건 아니니까.
오후에는 다른 AI에게 평가를 받았고, Claude에게 그 지적을 코드에서 하나씩 확인하게 했다. 저장에서 빠진 칸 하나와 실패해도 성공으로 끝나는 점검이 진짜 문제였다. Claude가 50 · 51장 지시서를 썼다. 50장은 단련으로 튼튼해지는 몫을 반으로, 51장은 저장 빠짐을 고치고 점검이 실패하면 실패로 끝나게 했다.
같은 날 바깥 AI가 기획 제안 열둘을 냈다. 약속, 세대 결산, 무위로 영향력, 여러 단계 대형 사건, 정마대전까지. 처음에는 설계서에만 적어 두려다 "제안도 결국 확정이잖아" 싶어서 모두 만들기로 했다. 순서는 플레이를 보고 정하기로 했다.
저녁에는 Codex에게 글 모드로 5년을 먼저 해 보게 했다. 같은 손님에게 같은 답을 반복하는 게 지루하다는 말에 52장에서 세가별 사절 응대 방침과 '지도 비무', 손님 창의 맥락 한 줄, 출전 후보 비교표를 넣었다. 승부도 이때 바꿨다: 경지가 한 단계 위면 80%, 두 단계 위면 95%. 53 · 54장은 내가 찾은 버그다. 평범한 무가 출신 혼처 셋이 모두 같은 얼굴이었고, 혼담이 한 달 뒤 말없이 무산됐다.




직접 3대를 플레이하기 전에 Codex에게 글 모드로 3대를 먼저 해 보게 했다. 사건마다 글을 읽고 직접 고른 결정이 46건이다. 평가 한 줄은 이랬다. "가족 이야기가 만들어지는 재미는 확실하다. 그 이야기를 잘 보여 주고 다음 선택으로 이어지게." 기록을 하나하나 대조해서 버그를 찾는 건 내가 직접 할 때보다 낫다는 느낌이었다.
새 기능의 차례도 이날 정했다. 세대 결산 → 세가 사이 사연 → 약속 → 무위로 영향력 → 대형 사건 → 대규모 전쟁. 그리고 하나를 더했다. "너무 긴장감만 있는 이벤트보다 일상을 즐길 수 있는" 잔치와 축제다.



웹툰 컷은 연습 삼아 "지금 초상 느낌에 맞게, 이왕이면 미형으로" 몇 장 그려 본 데서 시작했다. 다 마음에 들어서 바로 61장이 됐다. 지금은 19장이다.
저녁에는 Codex가 다시 20년을 했다 (직접 결정 86건). "가족 사건과 잔치가 이어지는 재미는 좋아졌다. 이제 그 역사를 요약하는 글의 정확도를 먼저." 일생 장이 '떠날 때 서열'을 새 가주 것으로 적는 것처럼, 기록과 글이 어긋나는 확정 버그 10개가 나왔다. Claude가 이어받아 Codex 판에서 일어나지 않은 상황을 갈래 판으로 확인했다.







밤에는 Codex 사용량이 금방 바닥나서, 새 Claude 대화에게 글 모드 플레이를 맡겼다. 31년 · 가주 3대 · 직접 결정 155건에, 본판에서 안 생긴 상황을 만든 갈래 판 16개. 결론은 "새 규칙 하나하나는 돈다. 엉키는 곳은 '사이'다." 우리를 보호하는 집이 우리에게 도전장을 보내고, 위세 고수가 석 달 이웃을 도우러 가면 굴복한 집이 반기를 든다. 66장은 고치기만 하는 장으로 썼다.
마지막으로 초식 이름을 정했다. 가문 무공마다 12개다. 지금은 비무 글에만 쓰고, 나중에 턴제 비무가 들어오면 포켓몬처럼 골라 끼워 나간다. 경지가 높을수록 들고 나갈 칸도, 내력도 많다. 내력 초식은 세지만 내력을 쓰고, 내력이 바닥나면 약한 외공 초식만 남는다. 그래서 차륜전이 통하고, 내력이 끝없이 도는 화경에게는 통하지 않는다.







| 가문 무공 | 성향 | 화경 절초 | 현경 오의 |
|---|---|---|---|
| 모란검법 (낙양육가) | 고름 | 국색천향(國色天香) | 화개무성(花開無聲) — 꽃은 소리 없이 핀다 |
| 탁류도법 (개봉위가) | 강 | 탁세청류(濁世淸流) — 흐린 물이 다하면 맑은 물이 남는다 | 백천귀해(百川歸海) |
| 백엽장 (남양엽가) | 유 | 백엽귀일(百葉歸一) | 일엽지추(一葉知秋) — 상대의 수가 오기 전에 이미 안다 |
| 파진창법 (허창종리세가) | 강 · 쾌 | 만진개파(萬陣皆破) | 부전굴병(不戰屈兵) — 싸우지 않고 굴복시킨다 |
| 세우비침 (신양은가) | 쾌 | 무성세우(無聲細雨) | 우과천청(雨過天晴) |
초식 초안 60개 가운데 집마다 맨 끝 둘. 성향은 강 · 유 · 쾌의 가위바위보(강은 쾌를, 쾌는 유를, 유는 강을 누른다)에서 그 집 초식이 어느 쪽에 많은지다.
게임 속 초상은 그림 한 장이 아니다. 얼굴 그림 위에 체형 · 옷 · 머리 · 표정 · 수염 조각을 차례로 겹친다. 조각마다 따로 있으니 사람 수천 명이 다 달라 보이고, 나이 · 신분 · 계절이 바뀌면 조각만 갈아 끼운다.

그리는 차례는 얼굴 → 체형 → 옷 → 겨울 겉옷 → 앞머리칼 → 체형 얼굴 → 표정 → 아이 머리 → 수염이다. 4번 '체형 얼굴'은 몸에 맞춰 볼과 턱을 넓히는 조각이다. 앞머리칼 위에 그려야 넓어진 볼 자리의 머리칼이 볼 뒤로 숨는다(24장에서 바꾼 순서). 세가 빛깔은 흑백 '가림 그림'이 정한 자리만 물들인다. 흰 곳일수록 많이 물든다.
| 단계 | 보이는 나이 | 얼굴 | 머리 · 체형 |
|---|---|---|---|
| 갓난아기 | 0 – 2 | 남녀 3가지씩 | 강보 (조각 없음) |
| 어린아이 | 3 – 7 | 남녀 5가지씩 | 배코 · 쌍상투 · 앞머리, 체형 셋 |
| 소년 · 소녀 | 8 – 12 | 남녀 5가지씩 | 아이 머리 다섯, 체형 셋 |
| 청소년 | 13 – 15 | 남녀 25가지씩 (48장) | 앞머리 · 헝클어진 머리 (얼굴마다 전용), 체형 셋 |
| 어른 | 16 – | 남녀 25가지씩, 중년 · 노년 얼굴 | 신분 · 혼인 머리, 체형(남 기본 · 근육질 · 비만 · 빈약, 여 기본 · 단련 · 통통 · 가녀림 · 풍만), 옷 · 표정 · 수염 |
사람마다 얼굴 부품 다섯(얼굴형 · 눈 · 눈썹 · 코 · 입)의 점수가 있다. 그 합으로 생김새 단계(−2 – +2)가 정해지고, 단계 안에서 유형 글자(a – g)를 고른다. 절반쯤은 같은 성별 부모의 글자를 닮는다. 글자는 태어날 때 정해져 평생 같아서, 청소년 얼굴과 어른 얼굴이 이어진다.
| 차례 | 상황 | 보이는 체형 | 시작값 |
|---|---|---|---|
| 1 | 무거운 내상 중 | 마름 | 나으면 원래 몸 |
| 2 | 문하 단련을 받은 달 수 | 튼튼 | 한 달 +1.5%p, 최대 30% (50장, 49장에선 +3%p · 60%) |
| 2 | [무치] 성격 | 튼튼 쪽 | +20%p |
| 3 | [태만] 성격 / 그 밖 | 통통 | 25 – 40세 사이 45% / 8% |
| 4 | 그 밖 | 태어날 때 체형 | 기본 61%, 튼튼 · 통통 · 마름 13%씩 |
단련한다고 무조건 튼튼해지면 안 된다고 했더니, Claude가 체질이라는 방법을 냈다. 사람마다 태어날 때 '근육이 붙는 체질' 번호표를 받는다. 단련할수록 합격선이 오르고, 번호표가 그 안에 들어온 사람만 튼튼해진다. 이 번호표는 게임의 운이 아니라 그 사람에게 고정된 수다. 그래서 체형을 바꿔도 세상은 그대로다.
처음 얼굴들은 내가 ChatGPT 창에서 그렸고, 11월 4일부터는 그림을 Claude에게 맡겼다. Claude가 OpenAI 이미지 API로 뽑는다. 조각으로 쓰려면 새 그림의 머리 위치가 원본과 1픽셀도 어긋나면 안 된다. 그래서 "다시 그리지 말고 이 부분만 바꿔라"라는 편집으로 뽑고, 숫자로 맞춰 본 뒤 고른다. 나는 마지막에 합친 시트를 보고 확인한다.
편집으로 뽑기. 원본을 5픽셀 늘려 보내고 받은 그림을 다시 잘라 크기를 맞춘다. 청소년 얼굴은 청소년 기준 그림과, 그 유형 어른 얼굴에서 얼굴 둘레만 잘라 함께 보냈다. 어른의 머리 · 옷 · 화장이 따라오지 않게 하려는 것이다.
위치 맞춤 검사. 머리 위와 옷 자리를 원본과 대 보고 ALIGNED(그대로)와 MOVED(어긋남)로 나눈다. 11월 9일 청소년 얼굴 50장과 머리 100장은 모두 ALIGNED였다.
바탕 맞추기. 초상 바탕은 모두 같은 회색 (169, 165, 170). 가장자리에 이어진 바탕만 이 색으로 맞춘다. 3 – 8만 달라도 게임에서 몸 둘레에 테가 보였다.
조각 오리기. 원본과 크게 다른 곳만 남기고 나머지는 투명하게. 머리 조각은 이마 · 볼 둘레까지 들어가서 얼굴마다 따로 만든다.
가림 그림. 포와 옷 자리를 흑백으로 그려 세가 빛깔이 들 곳을 정한다.
합쳐 보기. 게임과 같은 차례로 겹쳐 시트를 만들고 눈으로 본다. 통과하면 작업 지시서에 넣어 Claude Code가 들여온다.



11월 4 – 11일 API로 뽑은 그림은 약 2,400장이다. 거의 모두 high 품질이고, 장당 0.075달러로 어림하면 약 180달러다(정확한 금액은 결제 화면 기준). 가장 많이 쓴 곳은 체형에 맞춘 얼굴(402장)과 새 얼굴 22개의 중년(231장)이다. 11월 10 – 11일에는 잔치 배경 셋, 천하도 두 겹, 웹툰 컷 열아홉 장을 그렸다. 배경 음악과 효과음은 ElevenLabs 구독(Starter)으로 만들었다.
사람이 플레이하기 전에, 개발용 자동 진행으로 100년 판을 수백 번 돌려 숫자를 본다. 목표가 있는 숫자는 맞추고, 목표가 없는 숫자는 내가 보고 정한다.
| 무엇 | 값 | 언제 · 뜻 |
|---|---|---|
| 손님 (한 해) | 0.93 → 2.13 → 2.05 | 38 → 40 → 44장. 목표 2 – 3번. 모든 목표가 손님을 보내게 고쳐 맞췄다 |
| 이벤트 멈춤 (한 해) | 0.87 | 44장. 1 아래라 확률을 그대로 뒀다 |
| 세가끼리 도전장 (한 해) | 0.66 | 41장. 우리와 상관없이 다른 세가끼리 겨룬다 |
| 100년 뒤 인원 | 83.0명 | 46장 기준선. 윗끝은 90 (40장에서 85 → 90, AI 교류 때문) |
| 끊긴 세가 | 16.9% → 16.6% | 46 → 62장. 100년 안에 대가 끊기는 세가의 몫. 62장에서 고모 · 숙부도 맨 끝 후계가 되어 조금 줄었다 |
| 황실의 압박 · 입궁 | 35% | 46장. 목표보다 높지만 "관부와의 관계를 돌보지 않은 대가"로 그대로 |
| 체형이 바뀐 어른 | 41.9% · 36.9% | 49장, 우리 세가 · AI. 3분의 2가 문하 단련 → 50장에서 단련 몫을 반으로 |
| 웹툰 컷 (60년 한 판) | 14.7번 | 61장. 큰 순간 여덟에만, 같은 컷은 3년에 한 번 |
| AI가 어긴 약속 | 60% → 20% | 63 → 64장. 자동 진행 AI가 약속을 지키려 하지 않아서 숫자가 엉터리였다. 약속을 먼저 지키게 하고 다시 쟀다 |
| 도적 (위세가 있을 때) | −21% · −25% | 64장, 우리 세가 · AI. 집안 최고 고수가 절정 이상이면 도적이 피한다 |
| 사라진 이변 (100판) | 176번 | 65장 벽. 전 규칙이었으면 약한 쪽이 이겼을 비무 |
| 굴복 관계 (60년 한 판) | 1.34 → 2.97번 | 65장. 목표 3 – 6번에 맞추려고 AI의 굴복 요구 확률을 8% → 50%로 |
| 보호를 저버림 | 41% → 33% | 64 → 65장. 목표 15%엔 못 미쳤지만 한 번 청할 때 도울 확률이 83%라 그대로 두고, 대신 66장에서 그 확률을 화면에 보이기로 |
| 화경 고수 | 0명 | 65장, 이벤트 끈 200판 × 100년. 만들어 둔 '천하 절대고수'를 아무도 못 본다 → 66장에서 100년에 한 번 나올까 말까(약 30%)로 |
11월 9일 바깥 평가의 지적 넷(저장에서 빠진 칸, 실패해도 성공으로 끝나는 점검 등)은 51장에서 고쳤다. 그 뒤로는 AI에게 글 모드로 직접 플레이를 맡겼다. 자동 봇 · 다시 굴리기 · 시간 건너뛰기 없이 사건마다 글을 읽고 고르게 하고, 버그마다 그때 출력과 선택 직전 저장을 근거로 남기게 했다. 나는 그 보고를 받아 무엇을 고칠지, 규칙이 부딪치는 곳을 어느 쪽으로 정리할지 정한다.
| 날짜 | 누가 · 얼마나 | 한 줄 결론 | 이어진 장 |
|---|---|---|---|
| 11/10 | Codex · 3대, 직접 결정 46 | "가족 이야기가 만들어지는 재미는 확실하다. 그 이야기를 잘 보여 주고 다음 선택으로 이어지게." | 55장 |
| 11/11 | Codex · 20년, 직접 결정 86 (+ Claude 갈래 판) | "잔치가 이어지는 재미는 좋아졌다. 이제 역사를 요약하는 글의 정확도를 먼저." 확정 버그 10 | 62장 |
| 11/12 | Claude · 31년, 직접 결정 155 + 갈래 판 16 | "새 규칙 하나하나는 돈다. 엉키는 곳은 '사이'다." 확정 버그 13 · 규칙이 부딪치는 곳 12 | 66장 |
보호는 한 층만, 굴복하면 그 집의 보호는 모두 끝, 보호하는 집과는 도전장도 굴복 요구도 없음. 선물 · 사절은 절반으로. 화경은 100년에 한 번 나올까 말까로.
초식 이름을 비무 글에. 여러 단계로 이어지는 사건 틀을 만들고, 첫 사건은 금분세수 — 이웃 고수의 은퇴식에 원한을 품은 이가 나타난다.
봉인된 장원 · 하남의 맹약 · 거목이 쓰러진 날. 정마대전 하남 전선(6-18)에서는 여럿 대 한 명도 벽을 따른다. 그리고 초식을 골라 나가는 턴제 비무.