← 자료실/designsLOW

Affix Pool - Sprint 04 선행 실수치 README

designs/affix_pool_README.md

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.md v1.0 APPROVED §4 등급 6단계 리매핑 - designs/prestige_items.tsv 30항목 (프레스티지 stat_key 중복 검증) - designs/prestige_system_spec.md v1.0 APPROVED §3.2 방치 드립 / §5.3 200F 역산 38배 - 원본 Datasheets/OptionInfo.xml OptionItemRandom 시트 211행 (구조 참고, 수치 복제 금지) - graphify GRAPH_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건):

불포함 (Sprint 05+ 이월):

1.3 1인 파트타임 현실


2. 등급 6단계 × 슬롯 확장 정책

transcendent_drop_table_README.md §4 리매핑과 transcendent_affix_pool.tsv 스켈레톤을 본 시트 affix_slot_rules.tsv 에 실수치로 확장:

등급슬롯Pref:Suf롤 범위 %tier재롤 PP재롤 Gold고정 어픽스전용 풀
Common00:0-tier_1----
Magic21:160-100tier_21500--
Rare42:270-110tier_335,000--
Epic63:380-120tier_4825,000-희귀 (bossDmg, magicFind 접근)
Legendary63:390-130tier_520100,0001개-
Mythic74:3100-140tier_650500,0002개Sprint 05+ 이월

2.1 확장 근거

2.2 prefix vs suffix 구분 (원본 계승)

원본 OptionItemRandom 는 Prefix/Suffix 구분을 명시적으로 하지 않고 OptionDivision + OptionRank 조합으로 분류됐다. 본 시트는 디아블로 식으로 단순화:

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 타겟

4.2 affix_stack_matrix.tsv 10빌드 결과

buildPP어픽스 등급프레스티지×어픽스 배수타겟 2.5배 대비평가
B01 신규100F0Rare1.25x0.50미달 (의도 — 신규 유저 벽)
B02 초기방치1주200Rare1.70x0.68미달 (Epic 드롭 요구 구간)
B03 중기700PP균형700Epic3.48x1.39OK — 하한 달성
B04 표준900PP균형900Epic4.26x1.70OK — 최적 여유 1.7배
B05 보스특화900Epic4.02x1.61OK
B06 치명올인900Epic5.13x2.05warning_edge (치피 편중)
B07 Legendary4슬롯900Legendary5.20x2.08warning_edge
B08 Mythic풀빌드900Mythic6.39x2.56overflow_alert
B09 Mythic+1200PP1200Mythic7.46x2.98overflow_critical
B10 경제특화900Epic2.73x1.09OK (경제 특화 DPS 낮음)

4.3 해석

4.4 Mythic 출현율 가드


5. Open Questions (PD 대상)

Q1. Mythic 재롤 PP 50 — 너무 비싼가? / 적정한가?

프레스티지 소프트캡 Lv5 = 5 PP 기준, Mythic 재롤 1회 = 소프트캡 10단계 분량. "재롤 한 번 하면 프레스티지 성장 일시중단" 을 의도했는데 너무 가혹할 수 있음. 대안:

권장: (a) 유지. Mythic 자체가 희귀 → 재롤 절제가 올바른 디자인.

Q2. Legendary 고정 어픽스 1개 — 어떤 스탯으로 결정?

Legendary 6슬롯 중 1번 슬롯 고정. 예를 들어 flatAttack 고정 vs bossDmg 고정 vs 장비 종류별 다르게 (무기=critDmg 고정 / 방어구=damageReduction 고정 / 액세서리=magicFind 고정). 대안:

권장: (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%". 대안:

권장: (b). Sprint 04는 어픽스·리롤만으로도 충분한 폭. 셋은 시즌 차별화 레버리지로 아껴둠.

Q5. B08~B09 Mythic 폭주 (overflow 2.5~3.0x) — 허용 vs 제약?

본 시트 §4.3에서 "의도된 과성장" 으로 판정했으나, 시즌 랭킹·PvP 없는 싱글 방치형에서 과성장이 오히려 "재미 소모 가속" 일 수 있음. 대안:

권장: (a). 단 Sprint 05+ 시즌 도입 시 실측 후 (b)(c) 재검토.

6. Sprint 04 code-lead 인계용 체크리스트

Importer 구현 시 다음 6개 필수:

  1. TSV 파서 tier_1~tier_6 범위 문자열 파싱 — "10-15" 또는 "0.3-0.6" 형식. Range<float> 구조체로 변환. Min/Max 역전(15-10) 감지 시 Editor Error.
  2. stack_policy enum 4종 처리 — additive_crossAxis / additive_hardcap / exclusive_onlyOne / additive. Calculator 확장 메서드 분기 (§3.3 수식). Unknown policy 는 Fail-loud.
  3. prestige_overlap 컬럼 매핑 — prestige:AttackPowerPct 형식. Importer 가 prestige_items.tsv 의 stat_key 와 일치하는지 교차검증. 불일치 시 Editor Error (prestige/affix 싱크 깨짐 방지).
  4. required_item_class 필터 — weapon,accessory / armor,accessory / armor / weapon 콤마 구분. 슬롯 롤링 시 해당 클래스 아이템에만 등장. 파서 trim 필수.
  5. slot_weight 가중치 추첨 — 30개 어픽스의 weight 합을 구한 뒤 Random.Range(0, totalWeight) 로 누적 선택. 원본 OptionItemRandom.OptionRate 10000분율 방식 재활용 (Sprint 01 W1 README §2.2 참조).
  6. affix_stack_matrix 자기검증 테스트 — Tests.Editor 에 10빌드 수치를 하드코딩하여 Calculator 결과와 ±5% 이내 일치 확인. 벗어나면 Red. Sprint 04 종료 Definition of Done 조건.

7. Sprint 05+ 이월 예약

Sprint 04 범위 외, 장기 계획:


8. 산출물 목록

파일행수역할
affix_pool.tsv31 (헤더 1 + 30)어픽스 30개 × 6 tier 실수치
affix_slot_rules.tsv7 (헤더 1 + 6)등급별 슬롯/재롤/비율
affix_stack_matrix.tsv11 (헤더 1 + 10)10빌드 × 프레스티지·어픽스 스택 시뮬
affix_pool_README.md본 문서설명·검증·인계·Q

모든 TSV: UTF-8 no-BOM, 탭 구분자, 헤더 1행. Sprint 01 W1 규약 동일.


(끝)