Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 53 additions & 88 deletions docs/GAME_DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@

### 시전 위치와 목표 판정

주문은 문양의 중심이 가까운 목표 오브젝트에 영향을 준다. 즉 같은 `earth + steel_brace`도 3층 다리 영역 근처에서 그리면 다리 지지대로 해석되고, 4층 균열 근처에서 그리면 균열 안정화로 해석된다. 같은 주문이 위치에 따라 다르게 작동한다는 사실 자체가 게임의 한 가지 발견이다.
주문은 문양의 중심이 가까운 목표 오브젝트에 영향을 준다. 즉 같은 사각(rect) 커스텀 도형도 3층 깨진 구멍 근처에서 쓰면 길을 만드는 메움판으로 해석되고, 4층 표적 근처에서 쓰면 엄폐 방벽으로 해석된다. 같은 주문이 위치에 따라 다르게 작동한다는 사실 자체가 게임의 한 가지 발견이다.

## 5. 마법 문법

Expand Down Expand Up @@ -285,9 +285,9 @@ NPC가 등장한 발언은 동시에 노트에 자동 기록된다. 1회 실패
| 층 | 역할 | 가장 강하게 가르치는 것 |
| --- | --- | --- |
| 1층 발착층 | 입장과 첫 시전 | base 5종이 세계에 영향을 준다는 사실 |
| 2층 반응층 | overlay 발견 | 같은 base가 overlay에 따라 다르게 변한다 |
| 3층 흐름층 | 조합 응용 | 한 목표를 여러 방법으로 풀 수 있다 |
| 4층 균열층 | 실시간 위험 | 그리는 동안에도 세계는 움직인다 |
| 2층 반응층 | 커스텀 도형 발견 | 내가 등록한 모양이 인식 기준이 된다 (개인화) |
| 3층 건널목층 | 조합 응용 | 기본 문양 + 커스텀 도형으로 길을 직접 만든다 |
| 4층 타격층 | 조합 실험 | 조합이 표적 반응과 숫자로 즉시 보인다 |
| 5층 성좌심 | 자유 조합 | 정답이 없는 큰 마법진을 자기 방식으로 푼다 |

층별 상세는 §9에서 본다.
Expand All @@ -296,14 +296,16 @@ NPC가 등장한 발언은 동시에 노트에 자동 기록된다. 1회 실패

각 층은 다음 항목으로 정의한다: 들어올 때의 공간, **퍼즐 밀도**, 목표 상태, 가능한 해결 방향, 키 모먼트, 화면 배치, 진행 시간 목표, NPC가 등장하는 자리, 실패 회복 디자인.

> **2026-06-12 as-built 개정** — 커스텀 도형(two-track personalization) 시스템 도입으로 2~4층 디자인이 초안과 달라졌다. 이 절은 실제 구현(`ExamGameController.BuildFloorDefinitions`) 기준으로 개정되었다. 초안(2층 깨진 룬·overlay 복구, 4층 진행형 균열+번개 회로)은 git 이력에서 볼 수 있다.

### 층별 퍼즐 밀도 요약

| 층 | 풀어야 할 인터랙션 | 통과 기준 | 해결 루트 최소 다양성 |
| --- | --- | --- | --- |
| 1층 | 인덱스 룬 5개 (base 5종에 1:1 대응) | 1개 이상 작동시키면 승강 룬이 차오름. 권장 3개 이상 | 5 base 각각 |
| 2층 | 깨진 룬 6개 (overlay 6종에 1:1 대응) | 4개 이상 복구 | overlay 6종 중 최소 4종 사용 |
| 3층 | 끊긴 다리 1개 | 어느 방법이든 한 경로로 통과 | 최소 4가지 해결 루트 (아래 목록) |
| 4층 | 균열 3개 + 번개 회로 1개 | 모두 안정화 | base+overlay 조합 최소 3가지 |
| 2층 | 커스텀 반응 표식 5개 (base 5종의 커스텀 도형에 1:1 대응) | 5개 안정화 | 도형 5종 (line/ellipse/arrow/rect/brace) 각각 |
| 3층 | 끊긴 구간 4개 (강물·깨진 구멍·낭떠러지·빈 공간) | 4구간 모두 개통 | 구간별 커스텀 스펠 4종 |
| 4층 | 훈련 표적 4개 | 4표적 모두 반응 | 효과 4종 (얼음·번개·정화·안정) |
| 5층 | 슬롯 6개 (상태 요구) | **5개 만족 = 통과 엔딩 / 6개 만족 = 진엔딩** | 슬롯당 만족 방법 최소 2종 |

밀도는 "이 정도가 한 층에서 무리 없이 발견될 분량"의 잠정 값이다. 사용자 테스트에서 조정한다.
Expand Down Expand Up @@ -354,129 +356,92 @@ ghost gesture는 1층에서만 1회 재생된다. 한 번 본 사람은 다음

### 2층 반응층

**공간** — 벽화가 가득한 둥근 방. 가운데에 6개의 깨진 룬이 원형으로 배치돼 있다.

**목표 상태** — 6개 깨진 룬 중 4개 이상이 복구된다.
**공간** — 벽화가 가득한 둥근 방. 좌측에 커스텀 레퍼런스 책장이 있고, 방 안에 5개의 반응 표식이 배치돼 있다.

**가능한 해결 방향** — 깨진 룬은 각각 다른 overlay에 반응한다. 플레이어는 base를 먼저 그린 뒤 overlay를 그려야 룬이 복구된다. overlay는 처음부터 모두 그릴 수 있지만, 어떤 overlay가 어떤 룬과 맞는지는 시도로만 알 수 있다.
**목표 상태** — 커스텀 반응 표식 5개(불꽃 직선·물 보호막·바람 화살표·사각 방벽·생명 연결선)가 모두 안정화된다.

**키 모먼트** — overlay가 처음 base seal 위에 붙는 순간. 룬 가장자리에 작은 마크가 추가되며 라벨이 `불꽃 + 집중` 같은 형태로 변한다. 이 순간이 "base 위에 무언가를 더 올릴 수 있다"는 발견이다.
**가능한 해결 방향** — 좌측 책장에 가까이 가면 base별 커스텀 레퍼런스를 도형 슬롯으로 들여올 수 있다. 표식은 저장된 커스텀 도형의 gold capture를 기준으로 반응한다 — 즉 플레이어가 등록한 그 모양이 인식 기준이 된다. 각 표식은 요구 도형 토큰(line/ellipse/arrow/rect/brace)이 다르다.

**화면 배치**

```
[노트] [층 라벨]

깨진룬1 깨진룬2

깨진룬6 [PLAYER] 깨진룬3

깨진룬5 깨진룬4

[벽화 — overlay 형태 힌트]
```

벽화는 클릭하지 않아도 자연스럽게 시야에 들어오게 한다. 정답이 아니라 "이런 모양도 있다"는 단서.
**키 모먼트** — 자기가 등록한 커스텀 도형이 처음 표식을 깨우는 순간. "시스템이 내 모양을 기억한다"는 개인화의 발견이다.

**진행 시간 목표** — 평균 8~12분.

**환경이 먼저 가르치는 것**

- 첫 overlay 성공 시 룬 가장자리에 작은 마크가 추가되고 라벨이 `불꽃 + 집중` 형태로 변한다. NPC 등장 없음.
- `martial_axis` 의존성 부족 시 시도 자체가 잠긴 듯한 `cast_dependency_missing` SFX로 처리되고, 룬 라벨 위에 "축이 설 자리가 없음" 한 줄이 1초 표시. NPC 등장 없음.
- 벽화는 6 overlay의 실루엣 단서를 정적 배경으로 제공한다.
- 책장 접근 시 레퍼런스가 자연스럽게 보인다. 정답 강요가 아니라 "이런 모양을 등록할 수 있다"는 단서.
- 표식에서 먼 곳에 그린 커스텀 도형은 발동하지 않고 근접 안내 말풍선이 뜬다 (위치 의존 규칙 학습).
- 이전 seal이 활성인 상태에서도 다음 커스텀 base 목표를 이어서 진행할 수 있다.

**NPC가 등장하는 자리**

- 같은 깨진 룬에 같은 base로 3회 실패 시 (escalator 2단계). family 체크리스트 한 번.
- 6개 룬 중 4개를 복구해 층 완료 시 한 줄 마무리.
- 같은 표식에 반복 실패 시 escalator 단계에 따라 등장. family 체크리스트 한 번.
- 5개 표식을 안정화해 층 완료 시 한 줄 마무리.

2층은 발견 위주 층이라 NPC 출연이 매우 드물다. 환경 자체가 단서다.

**실패 회복** — 같은 깨진 룬에 같은 base를 두 번 실패하면 그 룬이 5초간 살짝 진동한다. 비언어적 단서로 끝. 세 번째부터 escalator가 NPC로 넘어간다.

### 3층 흐름층
**실패 회복** — 표식 근처 재시도는 비용이 없고, 실패가 쌓이면 escalator가 단계적으로 개입한다.

**공간** — 끊어진 공중 다리. 플레이어와 다음 구역 사이에 빈 공간이 있다.
### 3층 건널목층

**목표 상태** — 플레이어가 건너편으로 이동할 수 있는 경로가 만들어진다.
**공간** — 강물, 깨진 바닥 구멍, 낭떠러지, 빈 공간 네 구간이 길을 끊고 있다. 시작 구간 책장에서 3층 프리셋 도형을 가져올 수 있다.

**가능한 해결 방향** — 의도된 네 가지 + 발견 가능한 변주.
**목표 상태** — 네 구간의 길이 모두 열린다.

- `earth + steel_brace` — 빈 공간에 단단한 지지대가 솟아 다리가 됨. 가장 직관적인 해법.
- `wind + martial_axis` — 떠 있는 발판이 일직선으로 정렬되어 건널 수 있음. 발판이 보일 때만 가능.
- `life + soul_dot` — 한쪽 끝에서 덩굴이 자라 반대편에 닿음. 닿을 거리가 짧을 때만 충분.
- `water + ice_bar` — 임시 얼음 다리. 일정 시간 후 녹으니 그 안에 건너야 함.
- (선택적 변주) `earth` 단독으로도 짧은 발판은 가능하지만 길이가 부족함. 두 번 그어 연결해야 함.
- (선택적 변주) `electric_fork`로 끊긴 회로를 잇고 그 위를 건너는 변형도 가능 (성공 시 NPC가 "내가 고른 길이 나의 답이다" 발화).
**가능한 해결 방향** — 구간별로 의도된 커스텀 스펠이 하나씩 있다. 먼저 기본 문양으로 seal을 만들고, 그 빛나는 원 안쪽이나 가장자리에 요구 도형을 얹으면 발동한다.

같은 목표를 다른 방법으로 풀 수 있다는 것을 처음 명시적으로 알려주는 층이다.
- 강물 — `water` + 육각(hexagon) 결정: 강물이 얼어 안전한 얼음길이 됨.
- 깨진 구멍 — `earth` + 사각(rect) 메움판: 구멍이 메워져 지나갈 길이 생김.
- 낭떠러지 — `life` + 화살표/사각(arrow·rect): 덩굴 다리가 낭떠러지를 이음.
- 빈 공간 — `wind` + 사각(rect) 발판: 바람 발판이 마지막 빈 공간을 건너게 함.

**키 모먼트** — 플레이어가 만든 경로 위로 처음 한 발을 내딛는 순간. 카메라가 살짝 줌인된다.
base를 먼저 만들고 그 위에 도형을 얹는 2단 시전이 이 층의 핵심 학습이다. 표식에서 먼 곳에 그리면 발동하지 않는다 — 위치 의존 규칙을 여기서 체화한다. (초안의 "한 다리에 4가지 해법" 다양성은 5층의 자유 조합으로 옮겨졌다.)

**화면 배치**

```
[층 라벨]

[건너편 — 다음 층 입구]
──────────────

────────
(빈 공간)
──────

[PLAYER]
─────────
```

빈 공간은 의도적으로 시야 한가운데에 둔다. 플레이어 시선이 자연스럽게 "여기를 메워야 한다"로 향하게.
**키 모먼트** — 자기가 만든 길(얼음길·메움판·덩굴 다리) 위로 처음 한 발을 내딛는 순간.

**진행 시간 목표** — 평균 6~10분.

**환경이 먼저 가르치는 것**

- 빈 공간이 시야 한가운데 — "여기를 메우면 된다"는 비언어적 단서.
- 가까운 영역에 base/overlay 시전 시 그 효과가 빈 공간에서 한 번씩 미리 잠깐 비치는 시각 힌트 (예: `earth` 시전 시 작은 돌 부스러기가 빈 공간 가장자리에 잠깐 솟음).
- 끊긴 구간이 시야에 들어오는 배치 — "여기를 메우면 된다"는 비언어적 단서.
- 장애물 아트가 깊이 단서(수직 단면·원근)를 제공해 어디가 막혀 있는지 보인다.
- 키보드만으로도 발판 이동이 가능하다 (접근성 fallback).

**NPC가 등장하는 자리**

- 층 완료 시 한 줄 마무리. 예: "한 자리에 닿는 길은 여럿이다."
- 두 번째 다른 방법으로 통과 시 (선택적): "내가 고른 길이 나의 답이다." (이 자리는 의도된 보너스라 NPC 등장에 가치가 있음)

**실패 회복** — 만든 경로가 시간 경과로 약해지면 한 번 더 같은 주문을 덧그릴 수 있게 한다. 부분 진행은 유지된다.
- 층 완료 시 한 줄 마무리.
- 같은 구간 반복 실패 시 escalator 단계에 따라 등장.

### 4층 균열층
**실패 회복** — 시간이 지나 약해지는 효과(얼음길 등)는 같은 시전을 덧그려 보수할 수 있다. 부분 진행은 유지된다.

**공간** — 불안정한 룬 회로가 깔린 좁은 공간. 번개 회로와 균열이 천천히 퍼지고, 발판이 떠 있다 사라진다.
### 4층 타격층

**목표 상태** — 균열 3개가 모두 안정화되고, 번개 회로가 잠잠해진다.
**공간** — 훈련 표적 4개가 배치된 수련장. 표적은 어려운 말을 쓰지 않는다 — 필요한 조합을 만들면 바로 반응과 숫자로 보여 준다.

**가능한 해결 방향** — base+overlay 조합 최소 3가지가 의도된 답.
**목표 상태** — 네 표적이 모두 반응한다.

- `earth + steel_brace` — 균열 봉합. 가장 안정적이지만 시전 시간이 김.
- `water + ice_bar` 또는 `ice_bar` 단독 — 번개 회로 동결. 회로가 멈춤.
- `void_cut` — 균열 진행 차단. 즉발이지만 부분만 막음.
- `wind` 단독 — 떠 있는 발판을 안전 위치로 밀어 안전 지점 추가 (선택, 진행 보조).
- 균열 3개를 모두 같은 방법으로 풀어도 되고, 각각 다른 방법을 써도 됨. 다양성이 통과 조건은 아님.
**가능한 해결 방향** — 표적별 의도된 커스텀 스펠 효과.

**키 모먼트** — 그리는 중에 위험이 닿아 안전 지점으로 리셋되는 첫 순간. 게임이 처음으로 "실시간 압박"을 가르치는 순간이다. 화면 가장자리 비네트 + 짧은 효과음 + 즉시 안전 지점 이동. 죽음이나 체력 감소는 없다.
- 얼음 제압 — `water` 계열 얼음 결정: 표적의 움직임을 늦춤.
- 번개 타격 — `fire` 계열 번개 직선: 표적을 빠르게 때림.
- 정화 수막 — `water` + 둥근 수막: 표적의 오염 효과를 씻어 냄.
- 사각 방벽 — `earth` + 사각 방벽: 표적 앞에 엄폐물을 세움.

**화면 배치** — 다른 층과 달리 시야 안에 안전 지점(파란 룬)을 항상 1개 이상 보이게 둔다. 카메라가 안전 지점에서 너무 멀어지지 않게 약한 추적 제한을 둔다.
**키 모먼트** — 조합의 결과가 피해 숫자와 버프 표시로 즉시 보이는 첫 순간. 1~3층에서 배운 문법이 "전투적 반응"으로도 읽힌다는 발견이다.

**진행 시간 목표** — 평균 8~12분.
**진행 시간 목표** — 평균 6~10분.

**환경이 먼저 가르치는 것**

- 첫 안전 지점 리셋 시 화면 가장자리 비네트 + `hazard_reset` SFX. 노트는 "탑은 떨어진 사람을 다시 돌려보낸다"를 자동 관찰문으로 기록. NPC 등장 없음.
- 균열 첫 안정화 시 균열이 또렷이 다물리는 시각 변화 + 짧은 `goal_satisfied`. 노트는 "벌어진 자리는 단단한 것이 덮는다"를 자동 기록.
- 피해 숫자와 버프 큐(지속 효과 시계 표시)가 엔티티에 붙어 효과의 세기·지속을 정량적으로 보여 준다.
- 속성 반응(점화·동결·전도 등)이 재질에 따라 다르게 일어나고, 첫 발생 시 관찰문이 codex에 기록된다.
- 위험 접촉 시 체력 하트가 절반씩 줄지만 죽음은 없다 — 위험의 무게만 가르친다.

**NPC가 등장하는 자리**

- 같은 균열에 5회 이상 실패 시 (escalator 2~3단계). "그 균열은 단단한 것을 좋아한다" 같은 한 줄. 화면 가장자리 작은 윈도우로 등장해 그리는 손을 가리지 않음.
- 같은 표적에 반복 실패 시 escalator 단계에 따라 등장.
- 층 완료 시 한 줄 마무리.

**실패 회복** — 무한 리셋이 안전 지점에서 일어나기 때문에 진행이 막히지 않는다.
**실패 회복** — 표적은 몇 번이고 다시 반응한다. 실패 누적은 escalator로만 이어지고 진행이 막히지 않는다.

### 5층 성좌심

Expand Down Expand Up @@ -539,7 +504,7 @@ ghost gesture는 1층에서만 1회 재생된다. 한 번 본 사람은 다음

- **시작** — 1층 입장에서 NPC가 짧게 환영한다. 시험이 무엇인지 거창하게 설명하지 않는다. "바닥은 너의 종이다." 정도의 한 줄.
- **전개** — 1~3층 본문에서는 환경(룬 발광, 라벨, SFX, 노트 자동 기록)이 거의 모든 안내를 한다. NPC는 막혔을 때(2회 이상 실패)와 층 완료 시에만 짧게 등장한다.
- **위기** — 4층의 균열은 탑이 불안정하다는 사실을 보여준다. NPC가 화면 가장자리 작은 윈도우로 들어와 "탑의 입학 마법진이 흔들린다"고 한 줄을 남기고, 그 말이 노트에 기록된다.
- **위기** — 4층 수련장은 배운 문법이 위협 앞에서도 통하는지 시험한다. 표적의 반응과 체력 하트가 "탑의 시험이 진지해졌다"는 사실을 보여주고, 멘토(균열 감시자)의 발화가 노트에 기록된다.
- **클라이맥스** — 5층 성좌심에서 5번째 슬롯이 만족되는 순간. 화면 전체가 밝아지고 BGM이 정점에 도달한다. 6번째까지 채우면 한 박 더 차오른다.
- **마무리** — NPC가 다시 등장해 한 줄을 남긴다. "너의 방식이 마법진을 다시 일어서게 했다." 그 뒤 성찰형 리포트가 열린다.

Expand Down Expand Up @@ -632,7 +597,7 @@ low quality로 발동은 되었지만 약한 경우는 별도 SFX를 두지 않
- **ambient_tower** — 1~3층용. 조용한 룸톤. 8~10분 루프.
- **climax_seal** — 5층 시작부터. 한 단계 더 강한 톤. 마법진 1개 만족마다 음 추가.

4층은 BGM을 거의 끄고 환경음(번개 잡음, 균열 갈라짐) 위주로 둔다. 압박감을 음악이 아니라 침묵으로 만든다.
1~4층은 `ambient_tower`를 공유하고 5층에서 `climax_seal`로 전환한다. 4층의 압박감은 BGM 변화가 아니라 표적 반응음과 피해 표시의 타격감으로 만든다.

## 13. NPC: Exam Mentor

Expand Down Expand Up @@ -710,7 +675,7 @@ NPC가 말하는 순간 그 대사가 그대로 마법 노트에 자동 기록
1. **첫 base 발동** — 빛 펄스 + 차임. 카메라 미세 흔들림 없음 (첫 인상은 부드럽게).
2. **첫 overlay 부착** — 작은 트레일이 base seal로 빨려 들어감 + 가벼운 차임.
3. **3층 첫 경로 통과** — 카메라 짧은 줌인 + 발걸음 사운드 강조.
4. **4층 첫 위험 리셋** — 가장자리 비네트 + 낮은 진동 + 짧은 화면 흐릿함.
4. **4층 첫 위험 접촉** — 체력 하트 절반 감소 + `hazard_reset` 계열 피드백. 위험의 무게를 처음 가르치는 순간.
5. **노트 자동 기록 새 줄** — 우상단 책 아이콘 0.4초 펄스 + 책장 넘김 사운드. NPC 없이도 일어나는 가장 자주 있는 보상.
6. **assist ghost trace 등장 (escalator 3단계)** — NPC가 짧게 등장해 "이런 모양이다" + 바닥에 흐릿한 모범선 1.5초 + 짧은 종소리. 셋이 동시에.
7. **5층 슬롯 1개 만족** — 슬롯 라벨이 또렷해지며 빛 + 상승 멜로디 1단.
Expand Down
Loading