9.1 KiB
02. 특성 시스템
1. 목적
이 시스템이 풀고자 하는 플레이어 문제 "죽어도 완전히 제로로 돌아가지 않는다는 안도감, 그리고 많이 플레이할수록 내 캐릭터가 근본적으로 달라진다는 성장 체감"을 제공한다. PD 코어 룰 9(특성 사망·레벨 초기화 유지)는 런 간 영속 성장의 구조적 근거다.
제공하는 경험
- 카드 전손(축 A)의 낙차를 "이번 런도 쌓였다"는 누적 감각으로 완충
- 런을 반복할수록 퇴마사가 점진적으로 변화하는 정체성 강화
- 특성 조합에 따라 다음 런의 빌드 방향이 달라지는 장기적 선택 재미
2. 코어 루프
조건 충족 이벤트 발생 (보스 처치 / 누적 도전 / 런 중 이벤트)
↓
특성 후보 UI 표시 — 플레이어가 선택 or 자동 획득
↓
특성 저장소(persistentDataPath JSON)에 즉시 기록
↓
다음 런 시작 시 자동 적용
↓
특성 효과가 카드·아이템·전투 수식자로 작동
3. 규칙
규칙 1. 특성 3축 구조
| 축 | 명칭 | 효과 방향 | 특징 |
|---|---|---|---|
| A축 | 능력치 특성 | 기본 수치 상향 (공격력·이동 속도·i-frame 등) | 항상 가시적 효과, 단순 |
| B축 | 해금 특성 | 새 메카닉·카드 티어·조건 해제 | 플레이 폭 확장, 강한 체감 |
| C축 | 선택지 특성 | 픽 알고리즘 변형 or 빌드 방향 편향 | 전략 방향 결정, 조합 시 시너지 |
각 획득 조건에서 세 축 중 하나의 특성이 제공된다. 한 번의 조건 충족에서 복수 축이 동시 제공되지 않는다.
규칙 2. 획득 조건 3종
- 보스 처치 보상 — 보스 클리어 직후 특성 후보 K장 중 1장 선택. K 수치는 balance-designer.
- 누적 도전 과제 — 런 수·처치 수·사망 횟수 등 메타 누적값이 임계치 도달 시 자동 획득 (선택 없음).
- 런 중 이벤트 — 스테이지 내 특수 조건(미탐색 구역 달성 등) 충족 시 즉시 획득. 선택형 or 자동형은 content-designer·balance-designer 결정.
규칙 3. 상호 배타(Exclusive) 쌍 체계
특성 중 일부는 배타 쌍으로 설계된다. 배타 쌍의 특성 A를 보유 중이면 특성 B가 획득 후보에서 제거된다.
- 배타 쌍은 B축(해금) 및 C축(선택지) 특성에 한정 적용한다.
- A축(능력치) 특성은 배타 없음 — 중복 획득 시 효과 누적.
- 배타 쌍 목록은 content-designer가 정의. 시스템은 보유 목록과 배타 맵을 조회해 후보 필터링만 수행.
규칙 4. 특성 슬롯 — 무제한
특성 보유 상한을 두지 않는다. 런을 반복할수록 특성이 누적되어 캐릭터가 변화하는 것이 본 시스템의 핵심 경험이다.
- 수치 특성 상한: A축 특성이 동일 수치 항목에 누적되는 경우, 합산 상한 캡(cap)을 적용한다. 수치는 balance-designer 영역.
- 무제한 획득이 밸런스를 붕괴시키지 않도록 각 특성의 효과 강도를 balance-designer가 캡 기반으로 설계해야 한다.
규칙 5. 데이터 모델 (persistentDataPath JSON 초안)
개발팀 03에서 확정한 persistentDataPath 저장 방식을 따른다. 구조 초안:
{
"traits": [
{
"id": "trait_001",
"axis": "B",
"acquired_at": "2026-01-01T00:00:00",
"exclusive_group": "exg_001"
}
],
"trait_version": 1
}
id: 특성 고유 식별자 (content-designer 명명)axis: A/B/C 축 분류acquired_at: 획득 시각 (디버그·통계용)exclusive_group: 배타 쌍 그룹 ID. null이면 배타 없음trait_version: 데이터 스키마 버전 (향후 특성 추가·삭제 대응용 마이그레이션 플래그)
규칙 6. 리셋 조건 — 절대 리셋 없음 (기본)
특성은 어떤 이유로도 초기화되지 않는다 (PD 코어 룰 9). 이것이 축 C(영속 성장)의 본질이다.
- 예외 조건: PD님 명시 지시로 "초기화 옵션(재도전 콘텐츠용 리셋)"을 Phase 3-C BM 설계 시 재검토 가능. 현재 파일럿 스코프에서는 리셋 없음.
4. 상태와 전이
| 상태 | 설명 | 전이 조건 |
|---|---|---|
| 미획득 | 특성 풀에 존재하나 플레이어 미보유 | 획득 조건 충족 + 플레이어 선택 or 자동 획득 → 보유 |
| 보유 | persistentDataPath에 기록, 효과 발동 | 절대 전이 없음 (리셋 없음 원칙) |
| 잠금(Locked) | 배타 쌍에 의해 획득 불가 상태 | 배타 특성 보유 → 잠금. 해제 조건 없음 |
5. 인풋 / 아웃풋
입력
- 보스 클리어 이벤트 (스테이지 시스템)
- 누적 도전 과제 임계치 도달 (메타 진행 데이터 감시)
- 런 중 이벤트 트리거
시스템 반응
- 특성 후보 UI 표시 (선택형) or 즉시 적용 알림 (자동형)
- JSON Write (persistentDataPath)
- 다음 런 시작 시 특성 효과 자동 로드
필요한 피드백 종류 (ux-designer 연계)
- 특성 획득 시 강조 연출 (영속 획득임을 체감하게)
- 현재 보유 특성 목록 UI (어떤 특성이 쌓였는지 확인 가능)
- 배타 특성 잠금 상태 시각화
6. 타 시스템 연동
| 연동 시스템 | 연동 방식 |
|---|---|
| 카드 시스템 (01_카드_시스템) | B축 특성이 픽 알고리즘 가중치 수정 or T2/T3 해제 조건 완화 |
| 전투 시스템 (04_전투_기본_스펙) | A축 특성이 공격·이동·i-frame 수치에 수식자 적용 |
| 스테이지 구조 (05_스테이지_구조_초안) | 보스 처치 이벤트 발화 → 특성 획득 트리거 |
| 개발팀 persistentDataPath (개발팀 03) | JSON 저장·로드 구현 책임 (개발팀 영역) |
7. 엣지 케이스
- 배타 쌍 전부 잠김으로 후보 소진: 후보 풀에서 배타 필터 적용 후 0장이 되는 경우 → 배타 없는 A축 특성으로 강제 대체. content-designer가 A축 여분을 충분히 설계해야 한다.
- 동일 특성 중복 획득 시도: 이미 보유한 특성 ID가 후보에 나타나지 않도록 보유 목록 필터를 항상 먼저 적용.
- trait_version 불일치 (마이그레이션): 게임 업데이트로 특성 ID 변경·삭제 시 version 필드로 감지 → 구버전 ID는 무효 처리(손실 없이) + 마이그레이션 로직은 개발팀 책임.
- 첫 런 (특성 0개): 특성 없이도 게임이 정상 작동해야 한다. 모든 특성 효과는 "있을 경우 추가 적용"이며, 기본 게임플레이는 특성 독립적으로 설계한다.
8. 기각안
-
런 내 임시 특성(런 종료 시 소멸) — 기각. 카드 시스템(축 A)과 역할 충돌. 03_진행_시스템_초안 §7 기각안 3번 계승. 런 내 임시 효과는 카드로 담당.
-
특성 슬롯 N개 상한 — 기각. 슬롯 상한은 "어떤 특성을 버릴까"라는 별도 결정 레이어를 요구하고, 영속 성장 경험을 "희소성 관리"로 왜곡한다. 축 C의 본질(도전 지속성 제공)이 무력화된다. 수치 캡(규칙 4)으로 밸런스를 제어하는 방향이 구조 단순성·경험 우위.
-
특성 구매형(메타 재화 소모) — 기각. BM 미확정 상태에서 런 간 재화 루프와 특성 획득을 결합하면 범위 초과. 획득 조건을 재화 종속으로 만들면 BM 방향에 따라 시스템 구조 전면 변경 필요. Phase 3-C BM 설계 이후 재검토 안건으로 보관.
-
특성 선택 없이 전량 자동 획득 — 기각. 자동 획득은 선택의 즐거움을 제거한다. 보스 처치 후 K장 선택 구조(규칙 2-1번)는 "이 특성을 선택하는 것이 내 빌드 방향에 맞는가"라는 소규모 전략 결정 지점을 제공한다. 단, 도전 과제 기반 자동 획득(규칙 2-2번)은 리워드 성격이므로 예외 허용.
9. 열린 이슈 (balance·content·ux·개발팀 이관)
- [content] 특성 종류·ID·효과 텍스트 전체 리스트 — 3축 분류 + 조선 퇴마 세계관 반영 명칭.
- [content] 배타 쌍 맵 정의 — 어떤 특성들이 배타 관계인가.
- [balance] A축 특성 수치 캡 설정 — 어느 수준에서 성장을 막을 것인가.
- [balance] 보스 처치 후 특성 후보 K장 수치.
- [content] 누적 도전 과제 항목 및 임계값 설계.
- [ux] 특성 획득 연출·보유 목록 UI·배타 잠금 시각화.
- [개발팀] persistentDataPath JSON 스키마 최종 확정 + 마이그레이션 로직 구현.
10. 변경 이력
| 일시 | 변경 | 사유 | 기안 |
|---|---|---|---|
| 2026-04-22 | v0.1 시스템 설계 초안 | BT6-Plan Phase 3-B PD 지시 | system-designer |