BurningTimesAi/공유/기획/GodDem/2026-08-22_원작장비_재추출_원본_v1.md

18 KiB
Raw Permalink Blame History

원작 Wild Survival heroequipment 장비 트랙 재추출 원본 SOT v1

작성: 개발팀장 2026-08-22 · 근거: 원작 APK(com.and.wild.sur.victory v862) heroequipment·heroequipmentupgrade·heroequipmentforging·heroequipmentreforging 재복호화 실측 트리거: B2 장비강화 설계 v1(balance-designer)이 heroequipment M수열을 재추출하지 않고 형태(가속 2차)만 재사용·절대치 목표 역산. PD 방향 "우선 원작처럼 맞춰 전체 밸런싱 동일성"(2026-08-22) 정합 위해 원작 장비 절대치 확보. PD 지시: "우선 원작처럼 맞춰 전체 밸런싱 동일성 확인 후 추후 변경할 부분을 지시"(2026-08-22) 관계: 2026-08-20_원작밸런스_해독_매핑_v1.md(이하 매핑v1) §2-3 heroequipment 절의 원본 재확정 + ⚠️🟢 승격. 본 문서가 장비 트랙에 한해 매핑v1보다 상위 SOT. 2026-08-22_원작배율_재추출_원본_v1.md(배율 트랙)와 동일 패턴·동일 파이프라인.


0. 결론 요약 (장비 트랙)

매핑v1 §2-3 ⚠️ 주장 재추출 판정 원본값
레벨 배수 M(16단) = [1,2,4,8,12,20,28,40,52,68,84,104,124,148,172,200] 계단식 2차 🟢 정확 일치 heroequipment itemlvl 1~16 attack/hp가 정확히 base×M. 12조합(6등급×2슬롯) 전부 동일
등급 배수 = 1/5/10/20/40/80 (q1→q2 ×5, 이후 ×2) 🟢 정확 일치 itemlvl1 attack q1~q6 = 5/25/50/100/200/400 = ×1/5/10/20/40/80. hp도 10/50/100/200/400/800 동일
비용 분해 = Base(quality)+V(level) 완전 가산 🟢 정확 일치 Base q3=16,000·q4=42,000·q5=86,000·q6=326,000. V(level) 8조합 전부 동일
수확체감 없음 (효율 2,375→2,500 평탄) 🟢 정확 일치 골드/ΔM = new_level6 19000/8=2375, new_level16 70000/28=2500. 평탄
슬롯 종속 subtype1 attack_speed=attack/2, subtype2 defense=hp/4 🟢 정확 일치 spd=atk/2 96/96행·def=hp/4 96/96행(저값 반올림 2건 포함)
forging(등급도박) rate 0.4/0.3/0.2/0.1, 비용 ×2 🟢 일치 + 미세 정정 rate 0.4/0.3/0.2/0.1 · 골드 4000/8000/16000/32000(×2) · 단 전이는 q2→3→4→5→6 (q1→2 아님, §4)
reforging(옵션리롤) 잠금 비용 2^N 🟢 정확 일치 + 보강 dj_6003 = 1/2/4/8/16 = 2^N · 추가로 dj_6004 = 잠금수 선형(0/1/2/3/4)
옵션 슬롯 max(1, quality-1) 🟢 정확 일치 q1~q6 skill_num = 1/1/2/3/4/5 = max(1,q-1)

총평: 매핑v1 §2-3의 heroequipment 주장은 재추출 결과 전부 정확했다(⚠️ 절 중 이례적으로 오류 0건). forging 전이 범위(q2 시작)와 reforging 2재화 구조만 세부 보강. B2 v1이 "형태만 재사용·절대치 재산정"한 전제는 유효하며, 본 재추출은 그 형태(계단식 2차 M·Base+V)를 원본 절대치로 확증해 balance-designer의 재산정 근거를 확정한다.


1. 재복호화 결과 (재현 성공)

항목
원작 APK C:\Users\sw\Downloads\Wild+Survival+-+Idle+Defense_862_APKPure\UnityDataAssetPack.apk (236MB)
config 번들 assets/yoo/DefaultPackage/60f4b8a79e0efed6b5ada257fb5d9ea8.bundle (config TextAsset 203종, 전체 2938 번들 중)
암호 방식 TextAsset 내용에 22바이트 반복 XOR (자산마다 위치 0 리셋)
키 유도 known-plaintext: 전 자산 선두 22바이트가 공통(199/203) = 정확히 키 1주기. 공개 JSON 헤더 평문 {\r\n "data": [\r\n {\r(22B)과 암호문 XOR로 결정적 유도. 🚫 키 평문 미보존(scratchpad 한정·작업 후 정리)
평문 CRLF pretty-print JSON {\r\n "data":[…], "ext1", "ext2", "ver", "code", "updtime", "excelsign"}
검증 heroequipment 192행·heroequipmentupgrade 104행·heroequipmentskill 1430행 = 매핑v1 행수와 정확 일치(강력 검증)

재현 방법(요약, 키 비공개): ① zipfile로 UnityDataAssetPack.apk에서 config 번들 추출 → UnityPy(1.25.3) 로드 ② TextAsset 203종 raw bytes 획득 ③ 선두 22B 공통성 확인 → known-plaintext 헤더로 키 1주기 유도 ④ 전 자산 XOR 복호 → JSON 파싱 → CSV. libil2cpp 네이티브 리버싱 불요(배율 트랙 재추출과 동일 경로).


2. heroequipment 구조 (192행 = 2슬롯 × 6등급 × 16레벨)

스키마: id, code, next_code, next_level, name, icon, maintype(6), subtype(1/2), quality(1~6), itemlvl(1~16), hero_level, random_pro, hp, attack, defense, attack_speed, skills0, skills1, skills, skill_num, decomposed_props — 21열.

  • maintype = 6 단일. subtype 1 = 공격형(attack·attack_speed), subtype 2 = 방어형(hp·defense).
  • 192 = 2(subtype) × 6(quality) × 16(itemlvl) — 모든 조합이 개별 아이템(고유 code·hero_level 요구).

2-1. 레벨 배수 M수열 (itemlvl 축) — 🟢 원본 확정

M(itemlvl 1~16) = [1, 2, 4, 8, 12, 20, 28, 40, 52, 68, 84, 104, 124, 148, 172, 200]
  • subtype1 q1 attack 실측: 5,10,20,40,60,100,140,200,260,340,420,520,620,740,860,1000 = 5 × M (정확).
  • 1차 차분 = 1,2,4,4,8,8,12,12,16,16,20,20,24,24,28 → 2레벨마다 +4 증가하는 계단식 2차(지수 아님). 매핑v1 "2차차분 2레벨마다 +4" 정확.
  • 12조합(subtype 2 × quality 6) 전부 동일 M수열 — 실측 True. 즉 등급·슬롯 무관 단일 레벨 곡선.

2-2. 등급 배수 (quality 축) — 🟢 원본 확정

등급배수(q1~q6) = 1 / 5 / 10 / 20 / 40 / 80   (q1→q2 ×5, 이후 전부 ×2 등비)
  • itemlvl1 기준 실측: subtype1 attack = 5/25/50/100/200/400, subtype2 hp = 10/50/100/200/400/800. 양 슬롯 동일 배수.
  • 최종 스탯 = base_slot × 등급배수(q) × M(itemlvl). 예: subtype1 q6 itemlvl16 attack = 5 × 80 × (200/1) … 실측 = 400 × 200 = 80,000 상당(원작 스케일).

2-3. 슬롯 종속 2차 스탯 — 🟢 원본 확정

슬롯 주스탯 2차 스탯 관계 실측
subtype1 (공격형) attack attack_speed = attack / 2 96/96행 정확
subtype2 (방어형) hp defense = hp / 4 96/96행(저값 3=round(10/4) 등 반올림 포함)

주의(B2 §4-2와 정합): 이 "÷2·÷4"는 원작 내부에서 정액(flat) 스탯이다. GodDem attack_speed_add는 비율(ratio) 소비이므로 직접 이식 시 차원 불일치(+700% 공속). B2 v1이 이를 근거로 형태만 재사용·값 독립 재설계한 판단은 재추출로 재확인해도 유효.

2-4. 옵션 슬롯 = max(1, quality-1) — 🟢 원본 확정

quality q1 q2 q3 q4 q5 q6
skill_num(옵션 슬롯 수) 1 1 2 3 4 5
max(1, q-1) 1 1 2 3 4 5

정확 일치. 옵션 슬롯은 heroequipmentskill(1430행) 가중추첨 풀에서 채워짐(매핑v1 §2-5, 배율재추출v1 §3 참조).

2-5. 두 성장 축 분리 (next_code vs next_level) — 신규 규명

  • next_code (예: xw_11003 → xw_11004): quality up 축 (q3→q4, 같은 itemlvl) = forging(등급 도박) 경로.
  • next_level (예: xw_14003 → xw_15003): itemlvl up 축 (itemlvl4→5, 같은 quality) = 강화(확정 레벨업) 경로.
  • next_level은 itemlvl 1~3에서 공란, itemlvl 4부터 채워짐 → 강화는 itemlvl 4부터 개시. 이것이 heroequipmentupgrade가 level 4에서 시작하는 이유(§3).

3. heroequipmentupgrade 비용 (104행 = 8조합 × 13전이) — 🟢 원본 확정

스키마: id, subtype(1/2), quality(3~6), old_level, new_level, cost. cost = dj_6013_N;dj_6002_N;dj_6001_G; (dj_6001 = 골드, dj_6002·dj_6013 = 재료). 스탯 델타 컬럼 없음 — 레벨 스탯은 §2-1 M수열이 담당, 본 테이블은 비용만 정의.

  • 강화 대상 = quality 3~6만 (q1·q2는 upgrade 행 없음 = 강화 불가, 최하 소모 티어).
  • subtype 1·2 비용 완전 동일 (슬롯 무관).
  • level 축 = itemlvl 축과 동일(§2-5 next_level 링크로 확증: old_level4→new_level5 = xw_14003→xw_15003). 표기상 old_level 4~16 / new_level 5~17.

3-1. Base(quality) + V(level) 완전 가산 분해

Cost(quality, level) = Base(quality) + V(level)      [골드, dj_6001]
quality Base (= new_level5 골드) 검증
q3 16,000 quality간 차이가 전 레벨 상수(q4q3=26000, q5q4=44000, q6q5=240000 전 13행 일치) → Base+V 가산 확정
q4 42,000
q5 86,000
q6 326,000

V(level) 공통 곡선 (Base 제외분, V(new_level5)=0 기준, 8조합 전부 동일):

new_level 5 6 7 8 9 10 11 12 13 14 15 16 17
V(골드) 0 3,000 6,000 12,000 12,000 21,000 18,000 30,000 26,000 42,000 34,000 54,000 42,000

V는 비단조(지그재그) — 홀/짝 new_level이 교차하는 2계열 구조로, 깔끔한 다항식(예: B2의 20L²+100L)이 아니다. B2의 V식은 근사이며 원작 V는 이 실측 수열이다.

3-2. 수확체감 없음 — 🟢 원본 확정

효율 = 골드 / ΔM(단위 레벨배수 증가분)
  new_level6:  19,000 / 8  = 2,375
  new_level16: 70,000 / 28 = 2,500      ← 매핑v1 "2375→2500 평탄" 정확 재현
  • 스탯(M)은 ×200으로 가속하는데 단위-M당 골드는 ~2,400 평탄 → 레벨이 오를수록 골드/실스탯 효율은 오히려 개선(체증). 수확체감 없음.
  • q3 12스텝(level 4→16): 스텝당 골드 16,000→70,000 = ×4.38, 스탯 M[4]→M[16] = 8→200 = ×25. 매핑v1 수치 정확.
  • ⚠️ 매판 리셋 부적합(B2 §2-2·매핑v1 §4(d) 재확인): 이 평탄·체증 곡선은 영구 강화 전제. 매판 리셋 로그라이크에 그대로 쓰면 "모든 축 골고루"가 항상 최적이 되어 선택이 사라진다. 비용은 지수·증가량은 선형으로 재설계 권고 유지.

4. heroequipmentforging (등급 도박, 8행) — 🟢 일치 + 미세 정정

스키마: id, subtype(1/2), old_quality, new_quality, rate, cost.

전이 rate 골드(dj_6001) 재료(dj_6002) 기대 시도(1/rate) 실질 비용 배율
q2 → q3 0.400 4,000 10 2.5회
q3 → q4 0.300 8,000 20 3.33회 ×2 골드
q4 → q5 0.200 16,000 40 5.0회 ×2 골드
q5 → q6 0.100 32,000 80 10.0회 ×2 골드
  • rate = 0.4/0.3/0.2/0.1 (등차 0.1) 매핑v1 정확.
  • 비용 = 4000/8000/16000/32000 (×2 등비) · 재료도 10/20/40/80 (×2).
  • 정정: 전이는 q2→3→4→5→6 (4단계). 매핑v1/B2 §8 "등급 1→2→3→4→5 시도"는 부정확 — q1→q2 forging 없음(q1→q2는 다른 경로/무료 추정). forging 도박 구간은 q2 시작.
  • subtype 1·2 완전 동일.

5. heroequipmentreforging (옵션 리롤 잠금, 5행) — 🟢 정확 일치 + 보강

스키마: id, lock_data(0~4), cost1, cost2. subtype 무관 단일.

id lock_data(잠금수) cost1 주재화(dj_6003) cost1 보조(dj_6004)
1 0 1
2 1 2 1
3 2 4 2
4 3 8 3
5 4 16 4
  • dj_6003 = 1/2/4/8/16 = 2^(lock_data) 매핑v1 "2^N" 정확.
  • 보강: 추가로 dj_6004 = lock_data 선형(0/1/2/3/4). 즉 잠금 리롤은 주재화 지수 + 보조재화 선형 2재화 구조.
  • 보조 테이블 heroequipmentreforgingslot(6행): id 1~6 → slot 0~5 (옵션 슬롯 인덱스, §2-4 max(1,q-1) 정합).

6. B2 v1 역산치와 원작의 괴리 (balance-designer 인계 핵심)

B2 v1은 원작 절대치를 의도적으로 폐기하고 형태만 재사용(B2 §2-2, B1 선례 계승). 재추출로 확보한 원작 절대치와 B2 역산치의 괴리는 다음과 같다 — 모두 스케일 불일치에서 오는 의도된 괴리:

항목 원작 절대치 (재추출 확정) B2 v1 역산치 괴리 성격
레벨 성장 종점 M수열 ×200 (itemlvl16/1) ×3.0 (L16, 1+(L²+8L)/192) 원작 12진영×150레벨 스케일 vs 1캐릭·리셋 스케일. 형태(가속 2차)만 공유, 배수 66배 축소
레벨 곡선 형태 계단식 2차 (1차차분 2레벨마다 +4) 연속 2차 (L²+8L)/192 B2는 원작 계단식을 매끄러운 2차로 근사. 초반 체감 확보 위해 선형항 8L 추가
등급 배수 6등급 ×1/5/10/20/40/80 Grade 1~2 (×1 base) B2는 2등급 체계(원작 6등급 미이식). 괴리는 컨텐츠 규모 차
비용 Base q3~q6 = 16k/42k/86k/326k ItemBase = PowerScore×50 (300~2000) 원작 골드 규모(수만~수십만) vs GodDem 골드 규모. 원작 Base비율 1/2.63/5.38/20.4 참고만
비용 V(level) 실측 지그재그 수열 (0~54,000) 20L²+100L (0~6,720) 매끄러운 다항 B2는 clean 근사. 원작 V는 비단조 실측 수열
2차 스탯 spd=atk/2(0.5)·def=hp/4(0.25) 정액 0.015×Grade×(L²+8L)/192 (만렙 3%/6%) B2가 원작 정액 직접이식 기각(차원 불일치)한 판단 재확인 유효
forging rate 0.4/0.3/0.2/0.1 (q2~q6) 미채택(골격만) B2 §8 skeleton — 원본값 확정 완료(§4), 실채택 시 그대로 사용 가능
reforging 2^N + 선형 보조재화 미채택(N/A, 옵션슬롯 B3 선행) 원본값 확정 완료(§5)

7. balance-designer B2 재산정 인계 노트

  1. B2 착수 차단 해제 유지: 재추출 결과 매핑v1 §2-3 heroequipment 주장이 전부 정확했으므로, B2 §0 "재추출 없이 착수" 판단의 사실 전제(원작값이 우리 스케일에 부적합)는 확증됐다. B2 v1 설계는 원작 정합 관점에서 재작업 불요 — 단 아래 2택은 PD 결정 영역.

  2. ⚠️ PD "원작처럼 맞춰" 해석 2택 (PD 결정 필요):

    • (A) 형태 이식(B2 현행): 계단식 2차 M·Base+V·2재화 구조 등 형태·구조를 원작대로, 절대치는 GodDem 스케일 재산정. B1·공격력2층·배율트랙이 모두 채택한 노선. B2 v1이 이미 이 노선.
    • (B) 절대치 이식: 원작 M(×200)·Base(16k~326k)·6등급을 수치까지 그대로. 단 1캐릭·20레벨·매판 리셋 스케일에서 5레벨 만에 자릿수 폭발(매핑v1 §0 경고) — 리셋 게임엔 구조적 부적합.
    • 배율 트랙 재추출v1이 "현 GodDem 0.05~0.30 = 원작 그대로"를 확인했듯, 장비도 어느 층위까지 '동일'인지는 PD 판단. 개발팀장 소견: 장비 레벨 곡선은 (A)가 유일 실용안(리셋 게임 자릿수 제약). 배율 트랙처럼 절대치가 이미 맞는 경우와 달리, 장비 M(×200)은 절대 이식 불가.
  3. 원본값 확정분 (B2 재산정 시 참조):

    • M수열 계단식 굴곡: [1,2,4,8,12,20,28,40,52,68,84,104,124,148,172,200] (B2 §4-1 형태 검증용 — B2의 연속 2차가 이 계단을 근사하는지 대조).
    • 등급 배수 1/5/10/20/40/80 (B2가 2등급→다등급 확장 시 원작 비율 참고).
    • Base 비율 16k:42k:86k:326k = 1:2.63:5.38:20.4 (B2 §4-4 ItemBase 비율 근거 — B2가 이미 인용).
    • forging rate 0.4/0.3/0.2/0.1 · 비용 ×2 (B2 §8 실채택 시 확정값).
    • reforging 2^N + 선형 보조 (옵션슬롯 B3 도입 후 확정값).
  4. 수확체감 재경고(불변): 원작 강화는 단위-M당 골드 평탄(2375~2500) = 영구 강화 전제. B2 §2-2·매핑v1 §4(d)의 "매판 리셋엔 지수 비용+선형 증가 재설계" 결론 재추출로 재확인. B2 v1의 비용식(ItemBase+V(L))이 지수형이 아닌 점은 B2 §6-4가 이미 미해결 과제로 이관 — 원작 재추출은 이 우려를 강화하지 완화하지 않는다.


8. 저작권·키 취급 (PD 방침 준수)

  • 원작 데이터는 참고 수치만 본 문서에 기재. 아트·텍스트·원본 파일·복호화본 레포 미커밋. .gitignore scratchpad/·wild/·*.apk 등재 확인 완료(라인 116~119).
  • 22바이트 XOR 키는 **작업용 임시 유도(known-plaintext)**만 — 본 문서·조직 기록에 평문 미기재. scratchpad 복호화본·CSV·키 유도 스크립트는 작업 완료 후 정리 완료.
  • 재해독 필요 시 원작 APK에서 §1 방법으로 재추출(공개 JSON 헤더 known-plaintext로 키 재유도 결정적·재현 가능).

9. 실측 검증 요약 (C5·C23·C44 — 정직 보고)

검증 항목 결과 근거
config 번들 복호화 🟢 성공 헤더 {\r\n "data":[{"id":"6011... 정상 JSON, 행수 매핑v1 일치
M수열 16단 🟢 정확 일치 heroequipment attack/hp ÷base 실측, 12조합 동일 True
등급 배수 1/5/10/20/40/80 🟢 정확 일치 itemlvl1 quality별 실측
Base+V 가산 분해 🟢 정확 일치 quality간 골드 차이 전 레벨 상수
슬롯 종속 spd=atk/2·def=hp/4 🟢 정확 일치 96/96·96/96행
forging rate·비용 🟢 일치(전이 범위 정정) 8행 실측, q2~q6
reforging 2^N 🟢 정확 일치(2재화 보강) 5행 실측
옵션슬롯 max(1,q-1) 🟢 정확 일치 skill_num 6등급 실측
재추출 실패·부분 확정 없음 장비 트랙 8종 전부 완전 복호·파싱 성공

미해결/한계(정직 고지): upgrade new_level 최대 17 vs heroequipment itemlvl 최대 16의 1단 초과분(new_level17 = itemlvl16→17)은 heroequipment 스탯 테이블에 대응 itemlvl17이 없어 강화 상한의 캡 처리 방식은 미규명(코드 il2cpp 난독화 차단). 강화 스탯 증분이 M수열을 재사용한다는 것은 효율식 정합(2375→2500)으로 강하게 지지되나 코드 직접 확증은 아님(매핑v1과 동일 한계). B2 재산정에 영향 없음(형태·비용 확정분으로 충분).