Affix Pool - Sprint 04 선행 실수치 README
작성: 2026-04-21 (game-designer) · Sprint 00 버퍼 기간 레일 부설 마지막 건 버전: v1.0 APPROVED (PD 승인 2026-04-21) ## PD 승인 결정표 (2026-04-21) | Q | 결정 | 코멘트 | |---|------|--------| | Q1 Mythic 재롤 PP 50 | (a) 50 PP 유지 | Mythic 희귀성 본질 보존. 재롤 1회 = 프레스티지 소프트캡 10단계 분량 → "재롤 한 번 = 성장 일시중단" 디자인 원칙 유지 | | Q2 Legendary 고정 어픽스 | Sprint 04 = (c) 랜덤 롤 / Sprint 05+ = (b) 장비종류별 차등 결정 | Sprint 04 범위 최소화. 디아블로 "Legendary Power" 감성은 시즌 레버리지로 아껴둠 | | Q3 원본OptionItemRandom재활용 | (b) 한글명만 이식 (Sprint 06 localization 단계) | 수치는 본 시트가 authoritative. 211행 재활용은 어휘·분위기 한정 | | Q4 셋 효과 도입 | (b) Sprint 05+ 시즌 콘텐츠 이월 | Sprint 04는 어픽스·리롤만으로 충분한 빌드 다양성 확보. 셋은 5~8종 시즌 차별화로 보류 | | Q5 Mythic 폭주 (overflow 2.5~3.0x) | (a) 허용 — 의도된 장기 목표 | Sprint 05+ 시즌 도입 시 실측 후 (b) 중복 슬롯 금지 / (c) Mythic 동시 장착 상한 재검토 가능 | Sprint 04 스코프 확정: 어픽스 30개 + 슬롯 규칙 6등급 + 재롤 시스템 (PP 비용) + 원본 211행 한글명 이식(Sprint 06) + 셋 효과 / Legendary 고정 Power / Mythic 제약 = Sprint 05+ 이월. 참조: -designs/transcendent_affix_pool.tsv(Sprint 01 W1 스켈레톤 6행, 본 문서 §2 슬롯 규칙 계승) -designs/transcendent_drop_table_README.mdv1.0 APPROVED §4 등급 6단계 리매핑 -designs/prestige_items.tsv30항목 (프레스티지 stat_key 중복 검증) -designs/prestige_system_spec.mdv1.0 APPROVED §3.2 방치 드립 / §5.3 200F 역산 38배 - 원본Datasheets/OptionInfo.xmlOptionItemRandom시트 211행 (구조 참고, 수치 복제 금지) - graphifyGRAPH_REPORT.md§Surprising Connections —SetItemRandomOption()/EodPlayerDataGenerator.cs가 레거시 어픽스 적용 엔트리
1. 목적 & Sprint 04 스코프
1.1 목적
Sprint 04 (2026-07-13~ 예정) 어픽스 시스템 실구현 착수 전, 어픽스 30개 실수치 마스터 시트와 프레스티지-어픽스 스택 폭주 방지 규약을 확정한다. Sprint 01 W1 에서 뼈대(6등급 × 슬롯 수)만 잡아뒀고, Sprint 02 W1/W2 에서 프레스티지 30항목 곱연산 전제가 APPROVED 된 상태 — 이제 어픽스가 프레스티지와 결합 시 5배 이상 폭주하지 않는지 시뮬까지 끝내두는 게 본 문서의 핵심 산출.
1.2 스코프 경계
포함 (본 문서 4건):
- 어픽스 30개 실수치 (
affix_pool.tsv) - 등급 6단계 × 슬롯/재롤 규칙 (
affix_slot_rules.tsv) - 10빌드 × 프레스티지·어픽스 스택 시뮬 (
affix_stack_matrix.tsv) - 본 설명 문서 (
affix_pool_README.md)
불포함 (Sprint 05+ 이월):
- Legendary 전용 고정 어픽스 실제 이름·수치 (슬롯 구조만 확보)
- Mythic 전용 풀 (mythic_exclusive_pool=true 어픽스)
- 셋 효과 (Set Item Bonus)
- 크래프팅·리롤 토큰 경제
- 4~6번째 주요 스킬과 연동되는 어픽스 (스킬 피해 +N% 류)
1.3 1인 파트타임 현실
- 어픽스 총 30개로 한정. 원본
OptionItemRandom211행 대비 -86%. 이유: 2016년 원본은 4직업 × 장비슬롯별 분기 × 세부 보정이 누적된 결과. 2026년 싱글 방치형은 단일 클래스(Berserker 기준)·단일 전투 루프이므로 압축해도 부족 없음. - 카테고리 4종 (Offensive / Defensive / Utility / Economy 통합): Offensive 13 + Defensive 9 + Utility 8 = 30개.
- 등급별 tier 컬럼 6개로 동일 어픽스의 Common~Mythic 롤 범위를 한 행에 전개 → Importer 는
tier_N컬럼 런타임 선택 가능.
2. 등급 6단계 × 슬롯 확장 정책
transcendent_drop_table_README.md §4 리매핑과 transcendent_affix_pool.tsv 스켈레톤을 본 시트 affix_slot_rules.tsv 에 실수치로 확장:
| 등급 | 슬롯 | Pref:Suf | 롤 범위 % | tier | 재롤 PP | 재롤 Gold | 고정 어픽스 | 전용 풀 |
|---|---|---|---|---|---|---|---|---|
| Common | 0 | 0:0 | - | tier_1 | - | - | - | - |
| Magic | 2 | 1:1 | 60-100 | tier_2 | 1 | 500 | - | - |
| Rare | 4 | 2:2 | 70-110 | tier_3 | 3 | 5,000 | - | - |
| Epic | 6 | 3:3 | 80-120 | tier_4 | 8 | 25,000 | - | 희귀 (bossDmg, magicFind 접근) |
| Legendary | 6 | 3:3 | 90-130 | tier_5 | 20 | 100,000 | 1개 | - |
| Mythic | 7 | 4:3 | 100-140 | tier_6 | 50 | 500,000 | 2개 | Sprint 05+ 이월 |
2.1 확장 근거
- Sprint 01 W1 스켈레톤이 Magic=2 / Rare=4 / Epic=6 / Legendary=6 / Mythic=7 슬롯으로 확정 → 그대로 유지.
- 재롤 비용 2축 (PP + Gold): Gold 는 경제 루프 소비, PP 는 프레스티지 축 소비. Mythic 재롤은 PP 50 = 프레스티지 소프트캡(Lv5) 10단계 분량 → "재롤 = 성장 기회비용" 체감 유도.
- 롤 범위 %: Magic=60-100 (하한) / Mythic=100-140 (상한) — 동일 어픽스 tier_6 수치에 0.6~1.4 곱연산. 즉 Mythic "잘 뽑은" 어픽스 = Epic "못 뽑은" 어픽스의 1.75배.
2.2 prefix vs suffix 구분 (원본 계승)
원본 OptionItemRandom 는 Prefix/Suffix 구분을 명시적으로 하지 않고 OptionDivision + OptionRank 조합으로 분류됐다. 본 시트는 디아블로 식으로 단순화:
- Prefix (접두): 기본 스탯 증가 — flatAttack, flatHp, attackPct, hpPct, defensePct, bossDmg, packDmg, guardianAtk 등 13개
- Suffix (접미): 파생·특수 효과 — critRate, critDmg, attackSpeed, cooldown, dodge, dropRate, goldGain, lifeSteal 등 17개
Importer 는 affix_type 컬럼(Prefix/Suffix)을 읽어 슬롯 배치 시 prefix 슬롯에는 Prefix 어픽스만 롤하도록 필터. Mythic 의 4:3 비대칭은 Prefix 1개 추가.
3. 프레스티지 stat_key 중복 / 스택 규약
3.1 문제 제기
prestige_items.tsv 30항목 중 19개가 affix_pool.tsv 와 stat_key 동일 (예: AttackPct, CritRatePct, MaxHpPct, DropRatePct, IdleYieldPct, GuardianAtkPct 등). 두 축 모두 곱연산 전제라면 폭주:
naive_mult = (1 + prestige) × (1 + affix)
예: AttackPct 프레스티지 Lv50 +11% × 어픽스 Epic 9슬롯 평균 합 +24%
= 1.11 × 1.24 = 1.376 → 문제없음
그러나 IdleYieldPct:
프레스티지 Lv50 +13% × 어픽스 tier_6 평균 +19% = 1.13 × 1.19 = 1.345
+ 여기에 MagicFind 곱연산 + DropRate 곱연산 + GoldGain 곱연산
= 1.3 × 1.3 × 1.4 × 1.4 ≈ 3.31x 방치 보상
→ 방치 드립이 초기 의도(§3.2) 대비 3배 폭주
3.2 스택 정책 3종 (affix_pool.tsv stack_policy 컬럼)
| policy | 동작 | 적용 stat 예 |
|---|---|---|
| additive_crossAxis | 프레스티지%와 어픽스% 덧셈 합산 후 최종 1회 곱 | AttackPct, CritDmgPct, BossDmgPct, MaxHpPct 등 14개 |
| additive_hardcap | 덧셈 합산 + 하드캡 적용 (critRate 100%, dodge 40%, cooldown 80%, damageReduction 60%, attackSpeed +100%, moveSpeed 30%, lifeSteal 15%) | CritRatePct, DodgeRatePct, AttackSpeedPct, CooldownReductionPct, DamageReductionPct, MoveSpeedPct, LifeStealPct 7개 |
| exclusive_onlyOne | 프레스티지와 어픽스 중 더 큰 쪽 하나만 적용 | DropRatePct, GoldGainPct, ExpGainPct, IdleYieldPct, PpGainPct, EquipOptionAmp 6개 |
| additive | 단독 스탯 (프레스티지 미중복) — 덧셈 합 후 1회 곱 | flatAttack, flatHp, flatDefense 3개 |
3.3 수식 (Calculator 인터페이스용)
finalMult(stat) =
if stack_policy == exclusive_onlyOne:
1 + max(prestige[stat], Σ affix[stat])
elif stack_policy == additive_hardcap:
1 + min(hardcap[stat], prestige[stat] + Σ affix[stat])
else: # additive_crossAxis or additive
1 + prestige[stat] + Σ affix[stat]
finalDps = baseDps × Π finalMult(stat) for each stat axis
핵심: 같은 stat 내부는 덧셈, 서로 다른 stat 축만 곱연산. prestige_system_spec.md §5.2의 1.18 × 1.11 × 1.36 × 1.16 ≈ 2.05× 와 정합 (각 축은 프레스티지+어픽스 덧셈 합산 결과).
3.4 Sprint 02 Calculator 시그니처 호환
Sprint 02 W2 APPROVED 결정에서 Calculator 시그니처 불변 선언됨 (project_sprint02_w2_prestige_tech_sketch.md). 어픽스 합산은 기존 Calculator 의 입력 딕셔너리에 affixSum[stat] 을 추가하는 방식으로만 구현 — 시그니처 변경 아님.
// 기존
public float CalcMultiplier(StatKey key, int prestigeLv);
// 확장 (시그니처 유지하고 오버로드)
public float CalcMultiplier(StatKey key, int prestigeLv, float affixSumPct);
4. 검증 — 200F 격파 역산 재확인
4.1 타겟
- 200F 보스 HP 114억 / 5분 클리어 → 필요 DPS = 38M
- 100F 평균 DPS 기준 1M → 필요 배수 = 38배
- 기여 분해: 장비 베이스 15배 × 프레스티지 × 어픽스
4.2 affix_stack_matrix.tsv 10빌드 결과
| build | PP | 어픽스 등급 | 프레스티지×어픽스 배수 | 타겟 2.5배 대비 | 평가 |
|---|---|---|---|---|---|
| B01 신규100F | 0 | Rare | 1.25x | 0.50 | 미달 (의도 — 신규 유저 벽) |
| B02 초기방치1주 | 200 | Rare | 1.70x | 0.68 | 미달 (Epic 드롭 요구 구간) |
| B03 중기700PP균형 | 700 | Epic | 3.48x | 1.39 | OK — 하한 달성 |
| B04 표준900PP균형 | 900 | Epic | 4.26x | 1.70 | OK — 최적 여유 1.7배 |
| B05 보스특화 | 900 | Epic | 4.02x | 1.61 | OK |
| B06 치명올인 | 900 | Epic | 5.13x | 2.05 | warning_edge (치피 편중) |
| B07 Legendary4슬롯 | 900 | Legendary | 5.20x | 2.08 | warning_edge |
| B08 Mythic풀빌드 | 900 | Mythic | 6.39x | 2.56 | overflow_alert |
| B09 Mythic+1200PP | 1200 | Mythic | 7.46x | 2.98 | overflow_critical |
| B10 경제특화 | 900 | Epic | 2.73x | 1.09 | OK (경제 특화 DPS 낮음) |
4.3 해석
- B03~B05 (7~10일 방치 + Epic) 이 200F 격파 정상 구간. 타겟 2.5배 대비 1.39~1.70배 여유 → 과하지도 부족하지도 않음.
- B08~B09 Mythic 풀빌드는 2.5~3.0배 (overflow). 이건 의도된 과성장 — Mythic 은 Sprint 05+ 시즌 장기 목표이며 200F를 1분에 쓸어버리는 체감이 보상으로 작동해야 함. 단 Sprint 04 스프린트 범위에선 Mythic 풀 자체가 미도입이므로 현 시점 리스크 아님.
- B10 경제특화가 200F 1.09배로 "겨우 통과"인 것도 의도. 경제 특화 빌드는 드롭·골드·방치 배수에 PP를 투자한 만큼 전투 DPS 희생 — 리롤·장비 깎아 재파밍으로 벽 돌파하는 풀.
4.4 Mythic 출현율 가드
- 어픽스 풀 설계는 "어떤 등급 아이템이 드롭됐을 때 그 안의 어픽스 풀"만 정의. Mythic 아이템 자체 드롭률은
transcendent_drop_table.tsv181~200F 구간 3% 선으로 이미 설정됨. - 본 시트 tier_6 수치는 Mythic 아이템 내부의 어픽스 범위만 담당. Mythic 자체가 희귀 → Mythic 어픽스 접근성은 자연스럽게 제한됨. 별도 출현율 캡 불필요.
- 단
mythic_exclusive_pool(Mythic 전용 신규 어픽스) 은 Sprint 05+ 이월 — 현 30개 어픽스 풀은 모든 등급이 같은 풀에서 tier 만 다르게 굴리는 구조.
5. Open Questions (PD 대상)
Q1. Mythic 재롤 PP 50 — 너무 비싼가? / 적정한가?
프레스티지 소프트캡 Lv5 = 5 PP 기준, Mythic 재롤 1회 = 소프트캡 10단계 분량. "재롤 한 번 하면 프레스티지 성장 일시중단" 을 의도했는데 너무 가혹할 수 있음. 대안:
- (a) 그대로 50 PP 유지
- (b) 30 PP 로 완화 (소프트캡 6단계)
- (c) PP 대신 Mythic 전용 재화 (MythicEssence) 신설 → Sprint 05+ 이월
권장: (a) 유지. Mythic 자체가 희귀 → 재롤 절제가 올바른 디자인.
Q2. Legendary 고정 어픽스 1개 — 어떤 스탯으로 결정?
Legendary 6슬롯 중 1번 슬롯 고정. 예를 들어 flatAttack 고정 vs bossDmg 고정 vs 장비 종류별 다르게 (무기=critDmg 고정 / 방어구=damageReduction 고정 / 액세서리=magicFind 고정). 대안:
- (a) 단일 스탯 고정 (운영 단순)
- (b) 장비 종류별 차등 고정
- (c) Sprint 05+ 이월, 현재는 랜덤 롤
권장: (b). 디아블로 레전더리 "Power" 감성 계승. 단 Sprint 04 범위는 (c) → Sprint 05+ 에 결정.
Q3. 원본 OptionItemRandom 211행 재활용 범위?
(a) 완전 폐기 (현 30개만 사용, 권장) (b) 원본 Description 한글명만 재활용 (어픽스 현지화 노동 절감) (c) 원본 OptionValueMin/Max 수치를 tier_2~tier_3 벤치마크로 사용
권장: (b). 수치는 본 시트가 권위. 한글명은 원본에서 뽑아 localization.csv 에 이식 (Sprint 06 로컬라이즈 단계).
Q4. 셋 효과 (Set Item Bonus) 도입 시점?
디아블로 클래식 감성. 예: "Berserker Set 4장 착용 시 attackPct +50%". 대안:
- (a) Sprint 04 범위 내 간단한 2셋/4셋 (2종 셋만)
- (b) Sprint 05+ 시즌 콘텐츠로 이월 (5~8종 셋)
- (c) 미도입, 어픽스만으로 충분
권장: (b). Sprint 04는 어픽스·리롤만으로도 충분한 폭. 셋은 시즌 차별화 레버리지로 아껴둠.
Q5. B08~B09 Mythic 폭주 (overflow 2.5~3.0x) — 허용 vs 제약?
본 시트 §4.3에서 "의도된 과성장" 으로 판정했으나, 시즌 랭킹·PvP 없는 싱글 방치형에서 과성장이 오히려 "재미 소모 가속" 일 수 있음. 대안:
- (a) 허용 (의도된 장기 목표 달성감)
- (b) Mythic 어픽스 자체에 "중복 슬롯 금지" (예: AttackPct 어픽스는 장비 1종에만) 추가 규칙
- (c) Mythic 아이템 동시 장착 상한 (예: 최대 2개)
권장: (a). 단 Sprint 05+ 시즌 도입 시 실측 후 (b)(c) 재검토.
6. Sprint 04 code-lead 인계용 체크리스트
Importer 구현 시 다음 6개 필수:
- TSV 파서 tier_1~tier_6 범위 문자열 파싱 —
"10-15"또는"0.3-0.6"형식.Range<float>구조체로 변환. Min/Max 역전(15-10) 감지 시 Editor Error. - stack_policy enum 4종 처리 —
additive_crossAxis/additive_hardcap/exclusive_onlyOne/additive. Calculator 확장 메서드 분기 (§3.3 수식). Unknown policy 는 Fail-loud. - prestige_overlap 컬럼 매핑 —
prestige:AttackPowerPct형식. Importer 가prestige_items.tsv의 stat_key 와 일치하는지 교차검증. 불일치 시 Editor Error (prestige/affix 싱크 깨짐 방지). - required_item_class 필터 —
weapon,accessory/armor,accessory/armor/weapon콤마 구분. 슬롯 롤링 시 해당 클래스 아이템에만 등장. 파서 trim 필수. - slot_weight 가중치 추첨 — 30개 어픽스의 weight 합을 구한 뒤
Random.Range(0, totalWeight)로 누적 선택. 원본OptionItemRandom.OptionRate10000분율 방식 재활용 (Sprint 01 W1 README §2.2 참조). - affix_stack_matrix 자기검증 테스트 —
Tests.Editor에 10빌드 수치를 하드코딩하여 Calculator 결과와 ±5% 이내 일치 확인. 벗어나면 Red. Sprint 04 종료 Definition of Done 조건.
7. Sprint 05+ 이월 예약
Sprint 04 범위 외, 장기 계획:
- 셋 효과 (Set Item Bonus) — 2셋/4셋/6셋 보너스. 3~5종 셋 아이템군 도입 (§5 Q4)
- Legendary 전용 고정 어픽스 — 장비 종류별 차등 고정 (§5 Q2)
- Mythic 전용 풀 (
mythic_exclusive_pool=true) — Mythic 아이템에서만 등장하는 신규 어픽스 5~8종. 예: "처치 시 50% 확률로 폭발", "보스 HP 10% 이하 즉사" 류 - 리롤 토큰 경제 — Gold/PP 외 전용 토큰. 이벤트·광고·일일 퀘스트 보상
- 크래프팅 — 기존 어픽스 2개 합쳐 상위 tier 로 승격 (원본
RandomOptionChange시트 재활용 여지) - 스킬 연동 어픽스 — "Whirlwind 스킬 피해 +N%" 류. 주요 스킬 4~6개 확정 후 Sprint 06+
- 원소 시스템 어픽스 연동 —
elementalDmgPct가 실제 원소 상성과 결합 (현재는 단일 원소 단축스탯)
8. 산출물 목록
| 파일 | 행수 | 역할 |
|---|---|---|
affix_pool.tsv | 31 (헤더 1 + 30) | 어픽스 30개 × 6 tier 실수치 |
affix_slot_rules.tsv | 7 (헤더 1 + 6) | 등급별 슬롯/재롤/비율 |
affix_stack_matrix.tsv | 11 (헤더 1 + 10) | 10빌드 × 프레스티지·어픽스 스택 시뮬 |
affix_pool_README.md | 본 문서 | 설명·검증·인계·Q |
모든 TSV: UTF-8 no-BOM, 탭 구분자, 헤더 1행. Sprint 01 W1 규약 동일.
(끝)