- ToonPostProcess.shader: 횃불 고딕 스타일 후처리 쉐이더 (Built-in RP) - ToonCameraEffect.cs: 카메라 자동 부착 후처리 스크립트 - 중복 UI 스크립트 제거 (MenuIntroController, ToggleCustom) - 씬, 프리팹, 애니메이션 등 전체 업데이트 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
20 KiB
보스전 설계 지침서 — 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 | 💡 개선 |