149 lines
6.9 KiB (Stored with Git LFS)
Markdown
149 lines
6.9 KiB (Stored with Git LFS)
Markdown
# BossRaid - Boss Battle Broadcast Content
|
|
|
|
## Concept
|
|
고전 포켓몬스터 스타일의 2D 연출을 3D로 구현한 보스 토벌 방송 콘텐츠.
|
|
모션캡쳐로 아바타가 공격하면 보스가 피격 리액션을 하고, 체력이 깎이며, 처치 시 승리 연출이 나온다.
|
|
|
|
## Core Flow
|
|
```
|
|
[IDLE] → 보스 등장 연출
|
|
→ [BATTLE] 아바타 공격 → 피격 판정 → 데미지 표시 → HP 감소
|
|
→ [PHASE] HP 일정 이하 → 페이즈 전환 (분노 모드 등)
|
|
→ [DEFEAT] HP 0 → 보스 사망 연출 → 승리 화면
|
|
→ [RESULT] 결과 / 보상 연출
|
|
```
|
|
|
|
## Visual Style - "허접한 고전게임 3D"
|
|
- 보스 모델: **3D 모델** 사용 (별도 전달받음), 단 연출은 고전 2D RPG처럼 단순하고 과장되게
|
|
- 모델 배치/활용은 판때기처럼 정면 위주로 심플하게 운용
|
|
- 피격 시 모델 전체가 **흰색 플래시** (포켓몬 피격 느낌)
|
|
- 데미지 숫자가 **팝업**으로 튀어나옴 (크리티컬은 크게, 빨간색)
|
|
- HP바: 화면 상단 고전 RPG 스타일 (도트 폰트, 보스 이름 표시)
|
|
- 공격 시 화면 **흔들림** (Screen Shake)
|
|
- 포켓몬처럼 공격 순간 **화면 번쩍** (흰색 플래시 오버레이)
|
|
|
|
## Features
|
|
|
|
### 1. Boss System
|
|
- **BossData**: ScriptableObject (이름, 최대HP, 페이즈 수, 모델 프리팹)
|
|
- **BossController**: HP 관리, 상태 머신 (Idle/Hit/Rage/Death)
|
|
- **BossVisual**: 피격 플래시, 흔들림, 사망 연출
|
|
|
|
### 2. Hit Detection (듀얼 모드)
|
|
두 가지 방식을 모두 지원하여 라이브 방송에서 안정성 확보:
|
|
|
|
**Mode A: 물리 충돌 (Physics)**
|
|
- 아바타 손/발에 트리거 콜라이더 부착
|
|
- 보스 히트박스와 충돌 시 데미지 발생
|
|
- 자연스럽지만 모캡 떨림/오차로 오발 가능
|
|
|
|
**Mode B: 수동 이벤트 호출 (Manual/Failsafe)**
|
|
- `BossController.TakeDamage(amount)` 직접 호출
|
|
- Stream Deck 버튼, 키보드 단축키, 또는 EventController에서 트리거
|
|
- 물리 판정이 안 먹힐 때 즉시 대응 가능 (라이브 방송 안전장치)
|
|
|
|
**방송 방어 로직 (Live Safety)**
|
|
- **오발 방지**: 쿨타임 시스템 (최소 히트 간격 설정, 너무 빨리 때리면 무시)
|
|
- **데미지 캡**: 1회당 최대 데미지 제한 (모캡 버그로 연타 시 보스 즉사 방지)
|
|
- **일시정지**: Stream Deck/단축키로 전투 Pause → 방송 사고 시 즉시 멈춤
|
|
- **HP 잠금**: 특정 HP 이하로 안 내려가게 잠금 (연출 타이밍 조절용)
|
|
- **되돌리기**: HP를 특정 %로 즉시 복구 (잘못 진행됐을 때)
|
|
- **강제 페이즈**: 페이즈 강제 전환 (연출 순서 보장)
|
|
- **강제 처치**: 즉시 사망 연출 트리거 (시간 부족할 때)
|
|
- 히트 판정 시 **히트스톱** (0.05초 일시정지) → 타격감
|
|
|
|
### 3. Damage & HP
|
|
- **DamageCalculator**: 기본 데미지 + 랜덤 범위
|
|
- **크리티컬 시스템**: 일정 확률로 2배 데미지 (연출 강화)
|
|
- **HP Bar UI**: DOTween으로 부드럽게 감소, 색상 변화 (초록→노랑→빨강)
|
|
- **데미지 팝업**: WorldSpace Canvas에 숫자 튀어나옴
|
|
|
|
### 4. Phase System
|
|
- Phase 1: 일반 (100%~50%)
|
|
- Phase 2: 분노 모드 (50%~20%) → 보스 색상 변화, BGM 변경, 화면 어두워짐
|
|
- Phase 3: 최후의 발악 (20%~0%) → 보스 떨림, 이펙트 강화
|
|
- 각 페이즈 전환 시 **컷인 연출** (화면 분할 + 보스 클로즈업)
|
|
|
|
### 5. Effects & Particles
|
|
- **피격 파티클**: 별/스파크 튀는 이펙트
|
|
- **크리티컬 파티클**: 더 크고 화려한 이펙트 + 화면 흔들림 강화
|
|
- **사망 파티클**: 폭발 + 연기 + 별 흩뿌림
|
|
- **승리 파티클**: 꽃가루/폭죽
|
|
- **페이즈 전환**: 보스 주변 오라/불꽃 이펙트
|
|
|
|
### 6. Sound Effects
|
|
- `sfx_hit_normal`: 일반 피격
|
|
- `sfx_hit_critical`: 크리티컬 피격 (더 강한 타격음)
|
|
- `sfx_hit_miss`: 빗나감 / 쿨타임 중
|
|
- `sfx_boss_rage`: 페이즈 전환 포효
|
|
- `sfx_boss_death`: 사망 (폭발음 + 비명?)
|
|
- `sfx_victory`: 승리 팡파레
|
|
- `sfx_damage_popup`: 숫자 팝업 시 효과음
|
|
- `bgm_battle_normal`: 전투 BGM
|
|
- `bgm_battle_rage`: 분노 페이즈 BGM (템포 빠르게)
|
|
- `bgm_victory`: 승리 BGM
|
|
|
|
### 7. UI Elements
|
|
- **Boss HP Bar**: 화면 상단, 고전 RPG 스타일
|
|
- **Boss Name Plate**: 도트 폰트로 이름 표시
|
|
- **Damage Numbers**: 3D 팝업 (중력 적용, 바운스)
|
|
- **Phase Indicator**: "Phase 2!" 텍스트 연출
|
|
- **Victory Screen**: "YOU WIN!" + 결과 표시
|
|
- **Combo Counter** (선택): 연속 타격 횟수 표시
|
|
|
|
### 8. Broadcasting Enhancements (방송 특화)
|
|
- **시청자 연동 (미래)**: 채팅으로 보스 강화/약화, 아이템 지급
|
|
- **도네이션 연동 (미래)**: 도네이션 시 필살기 게이지 충전
|
|
- **보스 등장 연출**: 경고 사이렌 + "WARNING" 텍스트 + 보스 슬라이드 인
|
|
- **결과 화면**: 소요 시간, 총 데미지, 크리티컬 횟수, 최대 콤보 등 스탯 표시
|
|
- **Stream Deck 연동**: 보스 소환, HP 리셋, 페이즈 강제 전환 버튼
|
|
|
|
## Script Structure
|
|
```
|
|
Assets/Scripts/Contents/BossRaid/
|
|
├── README.md
|
|
├── Resources/
|
|
│ └── Audio/ # 효과음/BGM 리소스 (파일명 규칙으로 자동 매핑)
|
|
├── Data/
|
|
│ └── BossData.cs # ScriptableObject: 보스 스탯
|
|
├── Core/
|
|
│ ├── BossRaidManager.cs # 전체 플로우 관리 (상태 머신)
|
|
│ ├── BossController.cs # 보스 HP, 상태, 페이즈, 수동 TakeDamage API
|
|
│ ├── HitDetector.cs # 모캡 손/발 → 보스 히트박스 충돌 (Mode A)
|
|
│ └── BossRaidSafety.cs # 방송 방어 로직 (쿨타임, 캡, 일시정지, HP잠금, 되돌리기)
|
|
├── Visual/
|
|
│ ├── BossVisualEffect.cs # 피격 플래시, 흔들림, 사망
|
|
│ ├── DamagePopup.cs # 데미지 숫자 팝업
|
|
│ ├── ScreenEffect.cs # 화면 흔들림, 플래시, 히트스톱
|
|
│ └── PhaseTransition.cs # 페이즈 전환 컷인 연출
|
|
├── UI/
|
|
│ ├── BossHPBar.cs # HP바 UI
|
|
│ ├── ComboCounter.cs # 콤보 카운터
|
|
│ └── VictoryScreen.cs # 승리 결과 화면
|
|
├── Audio/
|
|
│ └── BossRaidAudio.cs # 효과음/BGM 관리
|
|
└── Editor/
|
|
└── BossRaidEditor.cs # 인스펙터 커스텀 에디터
|
|
```
|
|
|
|
## Namespace
|
|
`Streamingle.Contents.BossRaid`
|
|
|
|
## Dependencies
|
|
- DOTween or Unity Animation (UI 트윈)
|
|
- TextMeshPro (데미지 숫자, UI 텍스트)
|
|
- Cinemachine (카메라 흔들림 impulse)
|
|
- Existing: OptiTrack/모캡 시스템 (HitDetector 연동)
|
|
|
|
## Priority (구현 순서)
|
|
1. BossData + BossController (HP, 상태)
|
|
2. HitDetector (모캡 충돌 판정)
|
|
3. BossHPBar UI
|
|
4. BossVisualEffect (피격 플래시)
|
|
5. DamagePopup
|
|
6. ScreenEffect (화면 흔들림/플래시)
|
|
7. Audio 시스템
|
|
8. Phase 시스템
|
|
9. 승리 연출
|
|
10. 방송 특화 기능 (Stream Deck 등)
|