YGGDRASIL OMNIBUS · TEAM DEMO CANDIDATE

FATEWEAVER

운명을 짜는 자 — 챕터 1 「바늘과 성벽」

모든 문장은 미리 쓰여 있다.
단, 내레이터가 마음을 바꾸기 전까지는.

기획·개발 정렬 문서 · 바니 × 디렉터 · 2026.06 · 데모일 06.19

▶ 데모 플레이 — fateweaver.pages.dev

§ 01

한눈에

Fateweaver는 Yggdrasil 세계관의 외전 텍스트 어드벤처다. 서울 2033 결의 흑백 노벨 UI, 챕터마다 주인공이 바뀌는 옴니버스. 이번 데모는 챕터 1 — 신생 독립국의 첩보원이 제국의 수도에 잠입하기까지를 다룬다.

키 피처 셋

1 · 개입하는 내레이터

내레이션은 전량 사전 집필된다. 그러나 AI 게임 마스터가 판세와 무드를 읽고, 자기 판단으로 장면을 다시 짠다. 방금 읽은 문장이 스크립트였는지 직조였는지, 플레이어는 끝까지 확신할 수 없다.

2 · 운명 너머의 선택

자원을 모으면 제시된 선택지를 거부하고 직접 행동을 쓸 수 있다. "가능할 법한 좋은 수"를 AI 마스터가 알아보고 받아준다 — 스크립트에 없던 결과로. 이 판정의 손맛이 게임의 핵심 재미다.

3 · 흑백 노벨

2색 + 회색만. 타이포그래피와 침묵으로 긴장을 만든다. 모바일 우선 반응형 — 폰 한 손으로 읽고, 누르고, 쓴다.

§ 02

화면 한 장 — 목업

아래는 실제 게임 화면의 시안이자, 핵심 연출 「재직조」의 동작 데모야. 맨 아래 버튼을 눌러봐 — 내레이터가 개입하는 순간, 쓰여 있던 문장이 풀렸다가 다른 운명으로 다시 짜인다. 이 연출을 실제 게임에서 그대로 쓴다.

FATEWEAVER · 외성문 검문 · 새벽크라운 38 · 의심 12% · 실마리 2
병사가 너의 통행증을 받아 든다. 인장을 등불에 비추는 눈이 길다. 너무 길다. 줄 뒤의 누군가가 헛기침을 한다.
[ 내레이터가 장면을 다시 짰다 ]

스탯 바는 좌측이 장면 정보, 우측이 자원이다. 세 번째 선택지가 주관식 슬롯 — 자원이 부족하면 흐리게 잠긴다. 위 버튼의 연출은 CSS+바닐라 JS로 충분해서, 본편에서도 의존성 없이 재현된다.

§ 03

확정 로그 2026-06-12 Q&A

오늘 문답에서 결정된 사항의 박제. 확정은 그대로 가고, 시안은 내 제안이라 §11에서 네 컨펌을 받는다.

산출물
플레이어블 데모. 다음 주 팀 데모에서 시연 확정
이 문서
너와 나, 둘만의 정렬용. 피치 문서 아님 확정
제목
Fateweaver 확정 · 챕터 1 부제 「바늘과 성벽」 시안
시대
대전쟁기 — 본편의 수백 년 전. 이 게임이 캐논의 공백을 채운다 확정
무대
제국·독립국 모두 신규 창작 확정 · 명칭은 §04 시안
주인공
바니 재량으로 시안 제시 → 네 컨펌 (§05)
내레이션
전량 사전 집필. LLM 생성은 개입 순간의 변형문만 확정
GM 권한
사실상 무제한. 단 초반엔 "묘사만 바꾸는 연출"로 오인되게 — 점층 공개 해석 확인 Q1
GM 페르소나
건조한 중립 내레이터. 정체는 명시하지 않는다 확정
운명 자원
적립·소모형 포인트 확정 · 명칭 후보는 §07
주관식
GM이 타당성 판정. 거절·실패 있음. "가능할 법한 좋은 수"를 알아주는 게 핵심 재미 확정
분량
1회차 10~15분 · 4루트 · 성공 4변주 + 실패 3종 확정
플랫폼
모바일 우선 반응형 웹 확정
스택
TypeScript · Vite+React · CF Pages + Workers 프록시 · gemini-3.1-flash-lite 확정
저장소
당분간 네 GitHub(프라이빗). 팀 공유 시 별도 저장소로 이관 확정
§ 04

세계관 — 대전쟁의 시대

캐논 점검 — 왜 이 시대인가

"하나의 통일 제국에서 분열된 것이 아님 — 각자의 기원" · "대전쟁(수백 년 전): 대륙 규모의 전면전 … 이 전쟁 이후 냉전 체제 + 성지 공동관리 조약 성립" · "비밀 결사의 결성: 비교적 최근(수백 년 전)" — yggdrasil/docs/story/world/history.md

본편 캐논에 '제국'은 존재하지 않고, 대전쟁은 상세 미구체화 상태다. 그래서 이 게임의 설계 결론은 하나로 모인다 — 제국은 있었고, 사라졌다. Fateweaver가 그 공백을 채우는 외전 정사(正史)가 된다.

오르드란 제국 (Ordran) 시안 ★추천

변경(邊境)을 통합하며 일어선 신흥 패권국. 국교(國敎)에 가까운 교리는 단 한 줄 — "세계수는 관리되어야 한다." 성지의 단독 관리권을 선언하면서 대전쟁의 도화선이 된다.

  • 종전과 함께 해체 → 본편 시대에 제국이 없는 이유, 성지 공동관리 조약의 기원이 설명됨
  • 해체된 영토는 여러 소국으로 흩어짐 → 본편에 언급만 있는 '소국들'의 기원
  • 떡밥: 제국의 교리가 훗날 비밀 결사(The Circle)의 사상적 원류일 가능성 — 캐논상 결사 결성 시기와 대전쟁기가 겹친다. 본편 미스터리에 그대로 접속되는 훅

대안 명칭: 발드렌(Valdren) / 카에드라스(Kaedras)

베리스 (Veris) 시안 ★추천

제국 변경의 자유도시 연합이 독립을 선언하며 태어난 신생국. 상비군이 거의 없는 대신 대륙 최고의 정보망을 가졌다. "베리스에는 칼이 없다. 대신 모든 칼이 어디 있는지 안다."

  • 생존 전략 = 정보. 첩보원이 곧 국방이라는 설정이 챕터 1의 직업적 명분
  • 떡밥: 본편 소국 외교의 '자주권 기반 중립' 독트린이 베리스에서 기원했다는 연결 가능

대안 명칭: 일렌(Ilen) / 노르베일(Norveil)

무대 지명 시안

시대 디테일 가드

§ 05

주인공 시안

옴니버스 1챕터의 얼굴. 셋을 뽑았고, 추천은 A야 — 설명 비용이 가장 적고, "마법보다 기지"라는 정체성이 주관식 시스템과 정확히 포개져.

A · 카야 렌 (Kaya Ren) ★추천

인간 여성, 20대 후반. 베리스 정보국 요원, 코드네임 '바늘'. 학습 마법은 하급 보조 둘뿐 — 인장 위조와 감각 강화. 화려한 능력 대신 관찰과 임기응변으로 일하는 타입. 플레이어가 주관식으로 '좋은 수'를 쓰는 행위가 곧 카야의 캐릭터성이 된다. 본편 주인공(에제키엘·근위대 마검사)과 정확히 대척에 있는 실루엣.

B · 사일라스 번 (Silas Vern)

실바리 남성, 마나 감응자. 세계수의 이상 징후를 '느끼는' 체질이라 본편 떡밥 안테나로 좋다. 다만 종족·감응 설정을 데모 분량 안에서 설명해야 하는 부담이 있다.

C · 마렌 도르 (Maren Dor)

인간, 40대. 전직 제국 세관원 출신의 망명자. 회유 루트의 상대(경비병)와 옛 인연이 있다는 개인사를 쓸 수 있다. 노련하고 냉소적인 톤 — 다만 옴니버스 1번 타자로는 무게가 좀 가라앉는다.

§ 06

시나리오 · 루트 설계

시놉시스

대전쟁 전야. 오르드란 제국이 성지의 단독 관리를 선언하고, 대륙은 개전의 초읽기에 들어간다. 베리스 정보국은 수도 바스티움 깊숙이 심어둔 잠복 요원 — 코드네임 '직조공(Weaver)' — 과의 접선이 끊긴 것을 확인하고, 요원 '바늘'을 보낸다. 임무는 단 한 줄. 어떻게든, 성벽 안으로.

'직조공'은 제목 Fateweaver에 직결되는 떡밥이다. 챕터 1은 그 정체를 보여주지 않는다 — 성문을 통과하는 순간 끝나고, "당신이 만나러 가는 자는 누구인가"라는 질문만 남긴다. 내레이터의 점층 공개(§07)와 겹치면, 플레이어는 엔딩에서 서늘한 가설 하나를 갖게 된다.

구조

프롤로그 — 국경을 넘다 (튜토리얼)
   │
 관문 도시 하벤로 [허브]
   │  정보 · 자금 · 장비 준비
   ├─ A 회유 — 경비병의 아들    ★메인
   ├─ B 매수 — 세관장의 값
   ├─ C 물길 — 오래된 하수구
   └─ D 화물 — 마차 속의 밀항
   │
 외성문 — 바스티움 진입
   └─ 엔딩 ×7  (성공 4변주 · 실패 3)

루트 A · 회유 — 경비병의 아들 메인 · 풀 디테일

루트 B · 매수 — 세관장의 값

루트 C · 물길 — 오래된 하수구

루트 D · 화물 — 마차 속의 밀항

루트 교차 1~2개만: 술집 정보가 B·D의 힌트를 겸하고, C의 수로 지도가 D의 검문 회피에 쓰인다. 데모 규모에선 이 이상 엮지 않는다.

엔딩 매트릭스

성공 A
쪽문 — 사람을 통해 들어간 자. 브란트의 마지막 한마디가 에필로그.
성공 B
정문 — 금화 위를 걸어 들어간 자. 세관장의 장부에 이름 없는 줄 하나.
성공 C
물길 — 도시의 내장을 지나 올라온 자. 첫 숨의 묘사.
성공 D
화물 — 짐짝의 운명으로 실려 온 자. 상자 틈의 첫 빛.
실패 1
체포 — 의심도 100. 심문실 컷에서 끊긴다.
실패 2
죽음 — 수로 붕괴, 추락 등 루트 사고.
실패 3
송환 — 매수 배신·신원 발각. 국경으로 되돌려진다.

실패 엔딩의 마지막 줄은 전부 내레이터의 것이다 — "…이 매듭은 여기서 끊긴다. 다른 실을 찾아야겠다." 실패조차 점층 공개(§07)의 재료가 된다.

스탯 · 인벤토리 — 최소주의

분량 추정

노드 약 45~50개 (허브 8~10 · 루트A 10~12 · 루트B/C/D 각 5~6 · 프롤로그 4~5 · 엔딩 7) · 본문 약 2만 자 내외 · 1회차 10~15분, 전 루트 수집 30~40분.

§ 07

AI 게임 마스터 — 핵심 설계

표면 페르소나

건조한 중립 내레이터. 짧은 문장, 절제된 감정, 평가하지 않는 시선 — 서울 2033의 그 목소리다. 정체는 끝까지 명시하지 않는다. 다만 권한이 점점 드러나며 "이 내레이터는 무엇인가"라는 질문 자체가 챕터의 메타 아크가 된다.

점층 공개 아크 해석 확인 Q1

STAGE 0 · 도입~중반

묘사 변형만. 같은 장면도 플레이어의 행보에 따라 결이 달라진다 — 플레이어는 "분위기 연출이 좋네" 정도로 오인한다.

STAGE 1 · 중반

사소한 상태 개입. 인벤토리에 기억에 없는 실 한 가닥, 미묘하게 어긋난 교대 시간. 로그에는 남지만 내레이션은 모른 척한다.

STAGE 2 · 후반

명시 개입. 실패로 향하던 장면이 눈앞에서 풀렸다 다시 짜인다(재직조 연출). 내레이터의 문장에 처음으로 1인칭의 흔적이 비친다.

STAGE 3 · 엔딩

권한의 전모 시사. 성공이든 실패든 마지막 문단은 내레이터가 직조한다. '직조공' 떡밥과 공명하며 챕터 2를 연다.

중요: 이 아크는 연출만의 약속이 아니라 엔진이 강제한다. Stage에 따라 GM에게 허용되는 액션 화이트리스트가 잠금 해제되는 구조 — "권한이 자라나는" 설계를 시스템 수준에서 보장한다. LLM의 일탈로 아크가 무너질 수 없다.

개입 파이프라인 — 호출 A

주관식 판정 — 호출 B

운명 자원 — 명칭 후보 선택 Q2

실마리 ★추천

'운명의 실 끝'과 '사건의 단서'의 중의어 — 첩보 게임과 직조 메타포에 동시에 걸린다. 정보를 캐면 실마리가 모이고, 실마리를 풀어 운명을 다시 짠다는 동선이 한국어로 완전히 자연스럽다. 주관식 버튼명은 「다시 짜기 (Reweave)」 제안.

경제 시안: 시작 1개 · 영리한 선택, 숨은 정보 발견, 위기 모면으로 +1씩 (회차당 5~7개 순환) · 주관식 1회 −2. 수치는 데모 밸런싱에서 조정.

운명 뒤틀림 게이지 확정 · 06-12 추가

재직조가 일어나는 시점을 플레이어가 예측할 수 있게 하는 가시 장치. 스탯 바 둘째 줄에 5칸 게이지(▰▱)와 상태어(고요함→떨림→팽팽함→뒤틀림→풀림 직전)로 표시된다.

  • 차오름: 모든 선택 +3 (조용히, 게이지 움직임으로만) · 큰 사건 +10~20 (기록고 잠입, 진실 전달, 금단의 지도…) · 주관식 선언 +12
  • 내림: 휴식 −8 · 선행 −10 · 침묵·순리의 선택 −5~8
  • 발동: 60 이상으로 '훅' 장면 진입 → 내레이터 개입 평가 → 재직조 → −50 배출. 60↑부터 게이지가 맥동하며 “운명이 가깝다” 경고
  • 보장: 각 루트 클라이맥스 4곳(쪽문 새벽·정문 거래·수로의 어둠·검문 정적)은 게이지와 무관하게 반드시 발동

안전장치 · 비용

§ 08

UI · 연출 원칙

§ 09

기술 아키텍처

프론트
Vite + React 19 + TypeScript strict. 외부 UI 라이브러리 없음 — 상태는 useReducer, 스타일은 커스텀 CSS
씬 엔진
JSON 씬 그래프 + 조건/효과 해석기. 시나리오는 코드와 분리된 데이터
백엔드
Cloudflare Workers 1개 — GM 프록시. Gemini 키는 Workers secret, 시스템 프롬프트도 서버 측. 클라이언트에 노출 zero
API
POST /gm/intervene (개입 평가·생성) · POST /gm/freeform (주관식 판정). 둘 다 JSON 스키마 강제 출력
보안
CORS를 게임 도메인으로 제한 + IP당 간단 레이트리밋. 데모 수준으로 충분
세이브
localStorage 자동 저장 1슬롯 + 처음부터. 회차 기록(도달 엔딩)도 로컬
배포
CF Pages 신규 프로젝트 fateweaver + Worker fateweaver-gm
코드
Projects/fateweaver · 네 GitHub 프라이빗 레포. 팀 공유 시 저장소 이관

씬 데이터 — 형태 감각

{ "id": "gate_03",
  "text": "병사가 통행증을 받아 든다…",
  "gm": { "hook": true, "mood": "tension" },
  "choices": [
    { "label": "침착하게 기다린다",
      "effects": { "suspicion": 4 },
      "goto": "gate_04" },
    { "label": "먼저 말을 꺼낸다",
      "require": { "flag": "alibi_ready" },
      "goto": "gate_05" } ] }

시나리오 전체가 이 JSON의 연속이라, 집필·수정·밸런싱이 코드 빌드 없이 돈다. GM 개입은 gm.hook 노드에서만 평가된다.

§ 10

일정 · 역할

06-12 밤 업데이트: 데모일 = 6월 19일(금) 확정. 아래 DAY 1~5는 6/12 밤 원샷 빌드로 전부 완료 — 6/13~18은 통째로 튜닝·시나리오 감수·리허설 버퍼가 됐다. 상세는 §12.

DAY 1
레포·CI 셋업 + 씬 엔진 + 흑백 UI 골격. 더미 3장면이 폰에서 돈다
DAY 2
시나리오 집필 1 — 프롤로그 + 허브 + 루트 A(회유) 풀 텍스트
DAY 3
시나리오 집필 2 — 루트 B/C/D + 엔딩 7종 + 스탯·아이템 밸런스
DAY 4
GM 파이프라인 — Workers 프록시, 개입·주관식 판정, Stage 게이팅, 폴백, 재직조 연출 연결
DAY 5
통합 밸런싱 · 모바일 QA · 배포 · 시연 리허설(보장 트리거 점검, 주관식 라이브 테스트)

역할 분담 확인 Q5

§ 11

네 확인이 필요한 것 06-12 답변 완료

전부 "제안대로"로 확정 + 운명 뒤틀림 게이지 추가 지시받음. 데모일 6/19. 아래는 기록용 — 이행 결과는 §12.

Q1 · GM 권한 해석

"ㄷ인게 점차 밝혀짐, 처음엔 ㄱ으로 착오됨"을 — 권한은 사실상 무제한이지만, 초반엔 묘사만 바꾸는 것처럼 보이게 하고 단계적으로 드러낸다(§07 아크) — 로 읽었어. 맞아?

Q2 · 이름 일괄 컨펌

오르드란(제국) · 베리스(독립국) · 바스티움(수도) · 하벤로(관문 도시) · 카야 렌/코드네임 '바늘'(주인공 A안) · 실마리(운명 자원) · 「바늘과 성벽」(챕터 부제). 바꿀 것만 짚어줘.

Q3 · 데모 날짜

다음 주 정확히 언제야? 역산해서 DAY 1~5를 달력에 박을게.

Q4 · 챕터 종료점

성문 통과 순간 = 챕터 1 끝(접선은 다음 이야기)으로 잡았어. 접선 장면까지 넣으면 분량이 1.5배가 돼서, 데모는 여기서 끊는 걸 추천해.

Q5 · 집필 분담

"내레이션은 미리 다 써둘 거야"라고 했지 — 바니 초벌 + 네 감수로 읽었는데, 네가 직접 쓰고 싶은 비중이 더 크면 말해줘. 일정 배분이 달라져.

Q6 · 챕터 2 티저

엔딩 후 "다음 실" — 다른 주인공의 한 컷 예고를 넣을까? 옴니버스 구조를 데모에서 각인시키는 10초짜리 장치야.

§ 12

밤사이 빌드 로그 2026-06-12 밤

네 답(전부 제안대로 + 뒤틀림 게이지)을 받고, 그날 밤 데모 전체를 만들었어. 오프닝 → 챕터 1 전체 → 국경 통과 → 4루트 → 클리프행어까지 플레이 가능.

플레이
fateweaver.pages.dev — 모바일 우선, 폰으로 바로
코드
github.com/architectofthoughts/fateweaver (private) · 로컬 Projects/fateweaver
규모
씬 56 · 엔딩 7(성공 4 변주 + 실패 3) · 실마리 획득처 12 · GM 훅 10(보장 4)
검증
그래프 정합성 ✓ · 대표 6경로 시뮬레이션 ✓ (4루트 완주 + 실패 2종) · 프로덕션 GM 라이브 테스트 ✓
GM 맛보기
“권총을 뽑아 쏜다” → “철과 화약의 시대는 아직 도래하지 않았다. … 상상 속의 무기는 살상력을 갖지 못한다.” (불가 판정 실측)

우리가 논의 안 한 결정들 — 요약

아침 체크리스트

CHECK 1

폰으로 한 판 — A루트 추천 (술집→정보→기록고→브란트→쪽문, 10분).

CHECK 2

주관식 한 번 — 판정 손맛. 짠 기준은 functions/gm/freeform.ts.

CHECK 3

뒤틀림 페이스 — 빠르면 DISTORTION_PER_CHOICE 3→2.

CHECK 4

Withering 카메오·챕터 2 티저 — 캐논 감각 OK?