Projext/보스전_설계_지침서.md
hydrozen e989d20668 카툰 쉐이더 추가 + 중복 스크립트 수정 + 전체 업데이트
- ToonPostProcess.shader: 횃불 고딕 스타일 후처리 쉐이더 (Built-in RP)
- ToonCameraEffect.cs: 카메라 자동 부착 후처리 스크립트
- 중복 UI 스크립트 제거 (MenuIntroController, ToggleCustom)
- 씬, 프리팹, 애니메이션 등 전체 업데이트

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 12:31:16 +09:00

412 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 보스전 설계 지침서 — 12가지 핵심 원칙
> 작성일: 2026년 3월 4일
> 대상: 노르시엘(Norciel) 보스 — 쇠공 투척형 대형 보스
> 목적: 설명이 아닌 **실전 설계 기준**. "이렇게 만들어라 / 이렇게 만들지 마라"
---
## 원칙 1: 즉사기·강공격에는 반드시 전조를 넣어라
### 절대 이렇게 만들지 말 것
- 애니메이션 시작과 동시에 판정이 나가는 공격
- 와인드업 분산(variance)이 커서 전조 시간이 0.1초 미만으로 줄어드는 설계
- 이펙트나 사운드 없이 동작만으로 위험도를 구분하게 만드는 것
### 대신 이런 원칙으로 만들 것
- **위험도 = 전조 시간**. 데미지가 클수록 전조를 길게
- 전조는 반드시 **3채널 이상 동시 사용**: 모션 + 사운드 + 시각(바닥 표시·글로우·파티클)
- 같은 패턴이라도 Phase가 올라가면 전조의 **형태가 바뀌어야** 함 (색상, 소리 톤 변화)
### 실제 구현 시 체크리스트
- [ ] 모든 공격 패턴에 최소 0.3초 이상의 와인드업 보장 (windupVariance 적용 후에도)
- [ ] attackIndicator가 Smash/Sweep뿐 아니라 DashSmash에도 적용되는가
- [ ] Dash 와인드업 중 시각적 구분이 충분한가 (발을 구르는 모션, 먼지 파티클 등)
- [ ] Phase3 DashSmash의 0.15초 최소 와인드업이 사실상 전조 없는 것은 아닌가
- [ ] 사운드 큐가 공격 종류별로 구분되는가
### 플레이어 납득 설계 포인트
> "처음 맞아도 다음엔 피할 수 있겠다"
전조 3요소(모션·사운드·시각)를 모두 갖추면, 첫 사망 시 "아 그 동작이 그 공격이었구나" 라고 **복기가 가능**해야 함.
전조 없이 갑자기 큰 데미지를 주면 플레이어는 "어? 왜 맞았지?" → 학습 실패 → 이탈.
---
### 🔍 현재 노르시엘 진단
| 패턴 | 전조(모션) | 전조(사운드) | 전조(시각) | 판정 |
|------|-----------|-------------|-----------|------|
| Throw | ✅ 던지기 애니 | ❌ 없음 | ❌ 없음 | ⚠️ |
| Smash | ✅ 와인드업 | ❌ 없음 | ✅ 바닥 원형 | ⚠️ 임팩트 직전 스냅 회전 |
| Sweep | ✅ 와인드업 | ❌ 없음 | ✅ 바닥 부채꼴 | ⚠️ 65% 추적 회전 |
| Dash | ✅ 예비 모션 | ❌ 없음 | ❌ 돌진 방향 표시 없음 | ❌ 호밍 추적 |
| DashSmash | ✅ 예비 모션 | ❌ 없음 | ❌ 없음 | ❌ |
**문제**: 사운드 큐 전무. Dash/DashSmash에 시각적 전조 없음. Smash 임팩트 직전 스냅이 "분명 피했는데 맞았다" 느낌 유발 가능.
---
## 원칙 2: 패턴은 완전 랜덤이 아니라 규칙 안의 랜덤으로 만들어라
### 절대 이렇게 만들지 말 것
- 거리/상황 무관하게 5개 패턴 중 아무거나 고르는 순수 Random
- 연속 3회 이상 같은 패턴이 나오는 것
- 플레이어 행동이 아무 영향도 없는 AI
### 대신 이런 원칙으로 만들 것
- **거리 → 패턴군 필터링** (근접군, 중거리군, 원거리군)
- **플레이어 행동 → 가중치 보정** (정지·접근·도주·카이팅)
- **히스토리 → 연속 방지** (같은 패턴 2연속 시 가중치 95% 감소)
- 플레이어가 **"관찰 → 예측 → 대응"** 사이클을 돌릴 수 있어야 함
### 실제 구현 시 체크리스트
- [ ] SelectAndFire에서 모든 패턴의 가중치가 0인 경우에 대한 폴백이 있는가
- [ ] Phase별로 패턴 풀이 실제로 다른가 (현재: 동일 풀 + 수치만 변화)
- [ ] 카이팅 감지 → Dash 유도가 너무 빠르지는 않은가 (2.5초 적절?)
- [ ] 중거리 캠핑 감지가 실제로 데드존을 해소하는가
### 플레이어 납득 설계 포인트
> "운이 아니라 숙련으로 대응할 수 있다"
플레이어가 3~5회 패턴을 보면 "가까이 가면 찍기/쓸기, 멀면 던지기/돌진" 규칙을 학습해야 함.
그 규칙이 100%가 아니라 80% 정도여서 가끔 의외의 패턴이 섞이는 것이 이상적.
---
### 🔍 현재 노르시엘 진단
**잘 되어 있는 것:**
- ✅ closeFactor/farFactor/midFactor 거리 기반 가중치
- ✅ 적응형 AI (정지·접근·도주·카이팅 4종 감지)
- ✅ 히스토리 기반 연속 방지 (_samePatternCount)
- ✅ 카운터 시스템 연동 (BossCounterSystem)
**문제:**
- ❌ Phase별 패턴 풀이 동일 (Phase 1~3 모두 같은 5개 패턴)
- ⚠️ Phase1에서 DashSmash 기본 확률 10으로 Phase1 학습 구간에도 고난이도 패턴 등장
---
## 원칙 3: 카메라와 시야를 항상 우선해라
### 절대 이렇게 만들지 말 것
- 보스가 너무 커서 카메라가 벽에 끼이는 것
- 이펙트가 화면을 가려 판정을 못 읽게 만드는 것
- 보스가 화면 밖으로 나가는 대시를 하면서 공격 판정이 남아있는 것
### 대신 이런 원칙으로 만들 것
- **판독성 > 화려함**. 이펙트가 보여야 할 정보(판정 범위, 방향)를 가리면 안 됨
- 카메라 락온 상태에서 보스의 전체 실루엣이 항상 보여야 함
- 보스의 모든 공격은 **플레이어 화면 안에서 완결**되어야 함
### 실제 구현 시 체크리스트
- [ ] 보스 방 크기가 카메라 최대 줌아웃 시에도 벽이 카메라를 가리지 않는가
- [ ] Dash/DashSmash 중 보스가 카메라 밖으로 나가지 않는가
- [ ] 흡인(Suction) 효과 중 카메라가 보스 모델 안으로 들어가지 않는가
- [ ] attackIndicator(바닥 표시)가 바닥 텍스처와 구분되는가
### 플레이어 납득 설계 포인트
> "안 보여서 맞았다"는 느낌이 들면 안 된다
죽었을 때 "공격이 왔다는 건 봤는데 내가 못 피했어"라고 느끼면 정당함.
"뭐가 온 건지도 모르고 맞았어"라고 느끼면 카메라/시야 실패.
---
### 🔍 현재 노르시엘 진단
- ❌ 카메라 로직이 보스 AI에 없음 (별도 시스템 필요)
- ⚠️ Dash 호밍 추적으로 보스가 플레이어를 지나쳐 화면 밖으로 갈 가능성
- ⚠️ Smash 흡인 중 카메라 거리 보정 없음
- ❌ 보스 방 크기 vs 카메라 거리 검증 미확인
---
## 원칙 4: 기존 전투 시스템을 보스전에서도 활용하게 만들어라
### 절대 이렇게 만들지 말 것
- "보스에게는 회피가 안 통한다" (슈퍼아머만 있고 빈틈이 없는 경우)
- "보스에게는 패링이 안 통한다" (완전 무효화)
- 특정 빌드(원거리/근접)가 완전히 봉쇄되는 것
### 대신 이런 원칙으로 만들 것
- 보스전은 기존 시스템의 **응용 시험**이어야 함
- 강한 전략은 **완전 봉쇄가 아니라 효율 조정**으로 대응 (카이팅 → 대시로 추격, 근접 밀착 → Sweep 빈도 상승)
- 슈퍼아머라도 **스태거 게이지** 같은 우회 경로를 두어야 함
### 실제 구현 시 체크리스트
- [ ] 슈퍼아머 보스에게 "맞이 피격"(히트 반응)이 전혀 없는 것은 아닌가
- [ ] 원거리 플레이(카이팅)가 완전 불가능하지는 않은가
- [ ] 근접 플레이어에게 공격 타이밍(빈틈)이 확실히 주어지는가
- [ ] 회피(i-frame)가 보스 공격에 제대로 작동하는가
### 플레이어 납득 설계 포인트
> "내가 배운 걸 보스에게도 쓸 수 있다"
보스전이 기존 시스템을 **부정**하면 플레이어는 "그동안 배운 게 의미 없었나?" → 불쾌함.
보스전이 기존 시스템을 **시험**하면 "드디어 써먹을 곳이 있다" → 성취감.
---
### 🔍 현재 노르시엘 진단
- ✅ 적응형 AI로 카이팅/근접 모두 대응 가능 (완전 봉쇄 아님)
- ⚠️ **완전 슈퍼아머** — TakeDamage에서 StartHit() 미호출 → 보스에게 히트 리액션 전무
- ❌ 패링/블록/스태거 시스템 연동 없음
- ⚠️ Recover(경직) 시간이 Phase3에서 0.175초(0.5 × 0.35)까지 줄어 → 공격 틈이 거의 없음
---
## 원칙 5: HP만 높은 스펀지형 보스로 만들지 마라
### 절대 이렇게 만들지 말 것
- Phase 전환이 "같은 패턴 + 빨라지고 아프게" 뿐인 것
- 체력이 높아서 같은 전투를 10분 반복하는 것
- 전투가 길어질수록 새로운 요소 없이 반복 노동이 되는 것
### 대신 이런 원칙으로 만들 것
- **전투 시간 = Phase 수 × Phase당 고유 경험**
- 각 Phase는 최소 1가지 이상 **새로운 위협 요소**를 추가해야 함
- HP를 올리는 대신 Phase 수를 늘리고, 각 Phase의 HP 구간은 짧게
### 실제 구현 시 체크리스트
- [ ] Phase 2에서 Phase 1과 **패턴 동작이 다른** 공격이 최소 1개 있는가
- [ ] Phase 3에서만 등장하는 고유 패턴이 있는가
- [ ] 플레이어가 "Phase 바뀌었다"를 숫자가 아니라 **체감**으로 아는가
- [ ] 전투 전체 시간 중 "같은 걸 반복하는 느낌" 구간이 30% 이하인가
### 플레이어 납득 설계 포인트
> "전투가 길어질수록 경험이 변해야 한다"
Phase 1은 학습, Phase 2는 변형, Phase 3은 극한. 이 흐름이 없으면 아무리 HP가 적어도 지루함.
---
### 🔍 현재 노르시엘 진단 ← ⛔ 가장 심각한 문제
-**Phase 1/2/3의 패턴이 완전히 동일** (Throw, Smash, Sweep, Dash, DashSmash 5종 공유)
- ❌ Phase 차이는 오직 **숫자 배율** (간격 ×0.65, 데미지 ×1.4, 속도 ×1.3)
- ❌ Phase 전환은 **포효 1회** → 시각적 변화 없음, 필드 변화 없음
- ⚠️ 콤보 확률(0→35→55%)이 유일한 구조적 차이이나 체감 부족
**결론**: 현재 노르시엘은 원칙 5를 가장 심하게 위반하고 있음. 코드 수정 최우선 대상.
---
## 원칙 6: 피격 판정은 보이는 것과 일치하게 만들어라
### 절대 이렇게 만들지 말 것
- 이펙트 범위보다 판정이 넓은 것
- 애니메이션과 판정 타이밍이 안 맞는 것
- "분명 피했는데 맞았다"가 자주 일어나는 것
### 대신 이런 원칙으로 만들 것
- **판정 ≤ 시각 범위**. 시각적으로 보이는 것보다 판정이 작아야 관대하게 느껴짐
- 타이밍은 **애니메이션 이벤트 기반**이 원칙 (타이머 폴백은 어디까지나 보험)
- 잡기·광역·연속 판정은 **더 엄격하게** 검수
### 실제 구현 시 체크리스트
- [ ] Smash 임팩트 직전 `transform.rotation` 스냅이 판정을 부당하게 넓히지 않는가
- [ ] Sweep 추적 회전(65%)이 "분명 뒤에 있었는데 맞았다"를 유발하지 않는가
- [ ] Dash 충돌 판정(dashHitRange=1.8m)이 시각적 보스 크기와 맞는가
- [ ] Smash 흡인(Suction)이 회피 후에도 끌어당겨 판정에 넣지 않는가
### 플레이어 납득 설계 포인트
> "맞으면 맞은 이유를 바로 알아야 한다"
판정이 넓으면 "이게 왜 맞아?" → 신뢰 상실.
판정이 좁으면 "겨우 피했다!" → 스릴 + 성취감.
**항상 조금 좁게** 만들어라.
---
### 🔍 현재 노르시엘 진단
- ⚠️ **Smash 임팩트 직전 스냅 회전** — 70%까지 추적 후 **30% 구간에서 회전 멈춤, 그런데 임팩트 직전에 다시 스냅**. 이중 보정으로 플레이어가 옆으로 빠져도 거의 반드시 맞음
- ⚠️ Sweep 추적 회전이 임팩트 직전까지 65% 추적 + 최종 스냅 → Smash와 동일한 문제
- ✅ Dash 오버슈트 감지로 지나치면 즉시 정지 (양심적)
- ✅ OverlapSphere + 각도 체크 조합으로 Sweep 판정은 정밀
**핵심 수정 필요**: Smash/Sweep 임팩트 직전 스냅 회전 제거 or 완화
---
## 원칙 7: 플레이어가 실패 원인을 명확히 이해하게 만들어라
### 절대 이렇게 만들지 말 것
- 여러 공격이 동시에 겹쳐서 뭐에 맞았는지 모르는 것
- 전조와 공격 사이에 다른 패턴이 끼어들어 혼동을 주는 것
- 죽었을 때 "억울하다"는 느낌이 드는 것
### 대신 이런 원칙으로 만들 것
- **1패턴 1위협 원칙**: 한 번에 1개 공격에만 주의하면 되게 설계
- 패턴 사이에 **숨 돌릴 틈**(경직, Recover)이 있어야 학습 시간이 됨
- 사망 시 "저 공격의 저 타이밍에 회피를 못 했다" → 원인이 1문장으로 설명 가능
### 실제 구현 시 체크리스트
- [ ] 콤보 체인(연속 패턴) 사이에도 최소 0.2초 간격이 있는가
- [ ] Phase3 콤보 55% + 3연속까지 허용 → 사실상 연속 공격이 너무 길지 않은가
- [ ] Recover 시간이 Phase3에서도 플레이어가 1~2회 타격할 수 있을 만큼 남는가
- [ ] 피격 넉백 후 다음 공격까지 회복할 시간이 있는가
### 플레이어 납득 설계 포인트
> "실패가 억울함이 아니라 학습이어야 한다"
억울한 죽음 1회 = 재도전 의지 -30%. 납득 가능한 죽음 1회 = 재도전 의지 +10%.
실패를 학습으로 바꾸는 핵심은 **원인의 명확성**.
---
### 🔍 현재 노르시엘 진단
- ✅ 1패턴 1위협 원칙 준수 (동시 다중 공격 없음)
- ⚠️ Phase3 Recover가 0.175초까지 줄어 학습 타이밍 부족
- ⚠️ comboDelay(0.2초)가 Phase3 콤보 3연속과 결합 시 → 0.6초 안에 3패턴 → 과도할 수 있음
- ✅ BossRest(숨돌리기) 시스템 존재
---
## 원칙 8: 2페이즈는 단순 강화가 아니라 구조 변화로 만들어라
### 절대 이렇게 만들지 말 것
- 속도 ×1.3, 데미지 ×1.4로 끝나는 Phase 전환
- "같은 패턴이 빨라졌을 뿐" → 플레이어가 Phase를 인지하지 못함
- Phase 전환 연출이 포효 1회뿐인 것
### 대신 이런 원칙으로 만들 것
- Phase 2에서는 **기존 패턴의 동작이 물리적으로 변해야** 함 (충격파 추가, 왕복, 바운스 등)
- Phase 3에서는 **새 패턴이 등장**하거나 **기존 패턴이 극단적으로 변형**되어야 함
- Phase 전환 시 **시각·청각·필드·UI**가 동시에 변해야 "규칙이 바뀌었다"를 체감
### 실제 구현 시 체크리스트
- [ ] Phase 2에서 Smash가 Phase 1 Smash와 **동작이 다른가**
- [ ] Phase 3에서만 나오는 패턴이 최소 1개 있는가
- [ ] Phase 전환 시 보스 외형(이펙트, 글로우 등)이 변하는가
- [ ] Phase 전환 시 BGM이 변하는가
- [ ] Phase 전환 시 UI 체력바가 시각적으로 변하는가
### 플레이어 납득 설계 포인트
> "Phase 1에서 배운 것을 Phase 2에서 확장 적용해야 한다"
Phase 1의 Smash를 피하는 법을 배웠다면, Phase 2 Smash는 "같은 공격인데 추가 요소(충격파)가 있네?" → 기존 지식 + 새로운 학습.
이것이 없으면 Phase 2는 "같은 건데 빨라진 것" → 지루 + 짜증.
---
### 🔍 현재 노르시엘 진단 ← ⛔ 원칙 5와 함께 최심각
- ❌ Phase별 패턴 **동작 변형 전무**. 코드에 Phase 분기가 없음
- ❌ Phase 전환 연출 = 포효 애니 1개
- ❌ Phase별 전용 패턴 없음
- ❌ Phase별 UI/BGM/VFX 변화 없음
**코드 수정 최우선 대상**: Pattern_Smash, Pattern_Sweep에 Phase 분기 추가
---
## 원칙 9: 잡몹 소환을 난이도 때우기 용도로 남발하지 마라
### 절대 이렇게 만들지 말 것
- 보스가 HP 깎이면 잡몹 무한 소환으로 시간 끄는 것
- 잡몹이 시야를 가려 보스 패턴을 못 읽게 만드는 것
- "보스를 때리는 건지 잡몹을 때리는 건지 모르겠다"
### 대신 이런 원칙으로 만들 것
- 소환은 보스 정체성과 전투 구조에 **꼭 필요할 때만**
- 잡몹이 있어도 **중심은 항상 보스**에게
- 잡몹은 보스 패턴과 **연계**되어야 함 (독립적으로 움직이면 X)
### 🔍 현재 노르시엘 진단
-**해당 없음** — 현재 잡몹 소환 미구현. 이 원칙은 향후 추가 시 참고.
---
## 원칙 10: 연출은 전투 흐름을 살리는 선에서만 사용해라
### 절대 이렇게 만들지 말 것
- 컷신이 10초 이상 → 플레이어가 조작할 수 없는 시간이 긴 것
- Phase 전환마다 긴 무적 연출 → 모멘텀 끊김
- 보스가 쇠공 줍는 시간이 너무 길어 전투 리듬이 끊기는 것
### 대신 이런 원칙으로 만들 것
- 연출 중에도 플레이어가 **위치 조정**은 할 수 있어야 함
- Phase 전환 연출은 **3~5초** 이내
- 쇠공 회수(Retrieving) 시간은 **플레이어의 공격 기회**로 활용
### 실제 구현 시 체크리스트
- [ ] PhaseTransitionRoutine에서 보스가 무적인 시간이 5초를 넘지 않는가
- [ ] 쇠공 회수 시간이 지나치게 길지 않은가 (플레이어 대기 시간)
- [ ] 포효 연출 중 플레이어가 움직일 수 있는가
### 🔍 현재 노르시엘 진단
- ⚠️ PhaseTransitionRoutine에서 `SetState(Attacking)` → 포효 끝날 때까지 다른 행동 차단
- 포효 애니 길이에 따라 무적 시간이 달라짐 (최대 10초 대기)
- ⚠️ 쇠공 회수(Retrieving) 중 보스가 NavMesh로 걸어가서 주움 → 거리에 따라 10초+ 걸릴 수 있음
- ✅ 컷신 없음, 전투 중 연출 최소화
---
## 원칙 11: 난이도와 처벌 강도의 균형을 맞춰라
### 절대 이렇게 만들지 말 것
- Phase 3를 보려면 10분 플레이해야 하는데, 죽으면 Phase 1부터
- 실수 1번에 HP 70% 날아가는 것
- Phase 3 패턴을 연습할 방법이 없는 것
### 대신 이런 원칙으로 만들 것
- **체크포인트** 또는 **페이즈 스킵 연습 모드** 고려
- 최대 데미지 공격도 **HP의 25~35%** 이내로 제한 (1방에 안 죽게)
- 재도전까지의 로딩/이동 시간 최소화
### 실제 구현 시 체크리스트
- [ ] Phase3 DashSmash(데미지 ×1.8)가 플레이어 HP의 몇 %인지 계산했는가
- [ ] 보스방까지 재이동 시간이 30초를 넘지 않는가
- [ ] 전시회(PlayX4) 데모에서 죽으면 즉시 재도전 가능한가
### 🔍 현재 노르시엘 진단
- ⚠️ 데미지 밸런스 미확인 (Phase3 smashDamage 30 × 1.8 = 54 → 플레이어 HP 대비 비율 불명)
- ❌ 체크포인트/재도전 시스템 보스 AI에 없음 (별도 시스템)
- ⚠️ 디버그 모드에서 Phase 스킵은 가능하나 플레이어용 연습 모드 없음
---
## 원칙 12: 보스의 캐릭터성이 전투에서 드러나게 만들어라
### 절대 이렇게 만들지 말 것
- 아무 보스에나 같은 AI를 복붙하는 것
- 설정은 "쇠공을 든 괴물"인데 전투에서 쇠공이 중요하지 않은 것
- 보스 외형/설정과 공격 방식이 안 맞는 것
### 대신 이런 원칙으로 만들 것
- 보스의 **핵심 특징**(쇠공)이 전투의 **중심 메커니즘**이어야 함
- 공격·이동·위협 방식이 모두 **같은 정체성**을 향해야 함
- "이 보스만의 경험"이 있어야 함
### 실제 구현 시 체크리스트
- [ ] 쇠공이 Throw 외에도 패턴에 활용되는가 (쇠공 끌기, 쇠공 회전 등)
- [ ] 보스의 크기/무게감이 공격 모션과 이동에서 드러나는가
- [ ] Phase가 올라갈수록 "광폭화"가 시각적으로 체감되는가
### 🔍 현재 노르시엘 진단
- ✅ 쇠공이 Throw 패턴의 핵심 + 회수 메커니즘으로 전투 리듬 형성
- ⚠️ 쇠공이 Smash/Sweep/Dash에서는 활용 안 됨 (맨손 공격)
- ❌ Phase별 외형 변화 없음 (광폭화 시각 표현 전무)
---
## 종합 진단: 수정 우선순위
| 우선순위 | 항목 | 위반 원칙 | 심각도 |
|---------|------|----------|--------|
| 🔴 1 | Phase별 패턴 동작 변형 없음 | 원칙 5, 8 | ⛔ 최심각 |
| 🔴 2 | Smash/Sweep 임팩트 직전 스냅 회전 | 원칙 6 | ⚠️ 심각 |
| 🟡 3 | Phase 전환 시각/청각 연출 없음 | 원칙 8, 12 | ⚠️ 중간 |
| 🟡 4 | Phase3 Recover 시간 과도하게 짧음 | 원칙 7, 11 | ⚠️ 중간 |
| 🟢 5 | 사운드 큐 전무 | 원칙 1 | ⚠️ 보통 |
| 🟢 6 | 슈퍼아머 + 패링/스태거 미연동 | 원칙 4 | ⚠️ 보통 |
| 🟢 7 | 쇠공의 패턴 활용도 부족 | 원칙 12 | 💡 개선 |