본문 바로가기
디아블로2:레저렉션/공통 정보

[디아블로2:레저렉션] 아이템 드랍 프로세스/알고리즘/공식

by 환대고 2021. 10. 14.

 

 

▶ 본 글은 불펌을 금지합니다 ◀

본 내용을 공부하고 구독자분들이 편하게 보실 수 있도록 표현하기 위해 많은 정성이 들어갑니다.

양해 부탁드리겠습니다.

틀린 내용에 대한 지적은 언제나 감사하고 환영합니다.


TC 확인하기에 정말 좋은 사이트를 찾아서 추천드립니다.

가시성 높고 내용을 명확하고 편하게 보여주니 참고하면 많은 도움 되실겁니다.

https://d2.maxroll.gg/d2-drop-calculator

 

Diablo 2 Resurrected D2 Drop Calculator - Maxroll.gg

This is a Drop Calculator for Diablo 2 Resurrected. Calculate the drop chance of your desired items with ease using this tool!

d2.maxroll.gg


시작하며,

디아블로2의 드랍 프로세스의 이해에 있어 많은분들께서 TC라는 개념을 친숙하게 느끼시고 계실 겁니다.

하지만, 프로세스 자체가 단순하지 않다보니 TC와 지역레벨의 개념이 혼동되기 쉽고,

이때문에 지역레벨/TC 표를 잘못 이해할 수 있는 부분이 발생합니다.

저 또한, 구독자분께서 지적을 해주신 덕분에 제가 잘못알고 있던 개념을 다시 공부하여 재정립할 수 있었으며,

이에 대한 내용을 여러분들과 공유하고자 본 포스팅을 작성하게 되었습니다.

 

그럼, 시작해보도록 하겠습니다.

 


용어 및 개념 정의

Area level : 지역 레벨입니다. 각각의 사냥터에 할당됩니다.

mlvl, monster level : 몬스터 레벨입니다. 각각의 몬스터에 할당됩니다.

ilvl, item level : 아이템 레벨입니다. 흔히 숨렙(숨겨진 레벨)이라고 칭합니다.

 

일반 몬스터의 몬스터 레벨(mlvl)은 해당 몬스터의 출현지역의 지역레벨(Area level)과 같습니다.

일반 몬스터의 mlvl=Area level

챔피언 몬스터의 mlvl=Area level+2

유니크 몬스터의 mlvl=Area level+3

(슈퍼유니크몬스터는 각각의 고유한 mlvl 및 TC를 갖는 경우가 많습니다.)

 

아이템 레벨(ilvl)은 아이템을 드랍한 몬스터의 mlvl과 동일합니다.(노말 난이도 예외)
예시)

헬 트리스트럼(지역레벨:76)에서 챔피언몬스터를 잡고 먹은 아이템의 숨렙은 78입니다.

헬 트리스트럼에서 그리스월드(슈퍼유니크몬스터, mlvl=87)를 잡고 먹은 아이템의 숨렙은 87입니다.

 


1. TC의 이해

TC란 Treasure Class의 약자로써 디아블로2 개발자들이 정의해놓은 개념입니다.

 

본 내용의 공부를 마치는 시점에 "TC는 뭐다!"라고 말할 수 있기를 바랬는데,

공부를 마치고 보니 "TC는 TC다."라고 밖에 표현할 방법이 없네요.

 

TC는 우리가 몹을 잡은 순간 어떤 아이템이 드랍될지 계산하는 과정에 사용되는 매개변수라고 생각하시면 됩니다.

모든 몹과 아이템에는 TC가 부여되어 있으며, 지역에는 TC가 아닌 지역레벨(Area level)이 부여됩니다.

 

일반적으로 지역에 TC를 붙여 말하는 이유는 편의성 때문입니다.

헬 난이도의 구덩이(피트)를 예로 들면,

헬피트에 출현하는 몹들의 TC를 뜯어보니 최대 TC87 그룹의 아이템까지 드랍하더라, 그래서 헬피트는 TC87이다.

이런식이었던거죠.

이렇게 많은 사람들이 편하게 TC를 표현하다보니 생략된 부분에 의해서 많은 오해들이 생기지 않았나 싶습니다.

 


2. 드랍 프로세스 예시

몬스터를 잡으면, 게임은 몬스터에게서 아이템이 떨어질지 안떨어질지,

떨어진다면 어떤 아이템이 떨어질지 계산합니다.

디아블로2에서 이러한 계산에 들어가는 소스들이 data.mpq에 기술되어 있습니다.

mpq파일을 뜯어보면 수많은 txt파일들이 포함되어 있는데,

아이템 드랍에 직접적으로 관여하는 가장 주요한 파일이 바로 TreasureClassEx.txt입니다.

우리가 사용하는 TC라는 명칭이 여기서 유래했습니다.

 

본 포스팅에서는 TC가 어떤 형태로 아이템드랍을 결정하는지에 대한 흐름을 파악하고자 합니다.

 

▶ 드랍 프로세스에 대한 내용은 Diablo Wiki의 내용을 따라갔으며,

▶ 직접 디아블로2 1.11버젼의 mpq파일을 WinMPQ v1.62를 사용하여 뜯은 후 내용을 교차검증하였습니다.

▶ https://diablo2.diablowiki.net/Item_Generation_Tutorial

 

몬스터를 잡고 드랍되는 과정을 예시로 들면서 드랍 프로세스를 이해하는 방식으로 진행하겠습니다.

 

헬 난이도의 구덩이(피트)에서 일반 몹 Devilkin(악마피붙이)를 죽였다고 가정합니다.

 

몹이 죽었을 때 게임은 [MonStats]에서 죽은 몹의 TC를 찾습니다.

따라서 [MonStats]에서 Devilkin의 TC를 찾습니다.

그림1. MonStats.txt에서 구덩이(피트/Pit) 1층에 출현하는 몹들의 데이터 중 필요한 열만 추린 데이터입니다.

[MonStats]에서 Devilkin가 노말 몬스터일때의 TC를 찾습니다.(TC1=노말, TC2=챔피언, TC3=유니크)

노말 Devilkin은 mlvl=85, TC=Act1(H)H2H B인 것을 확인할 수 있습니다.

([MonStats]의 Level 열에 적힌 숫자는 몬스터의 레벨(mlvl)입니다.)

 

Devilkin의 TC가 Act1(H)H2H B인 것을 확인했으니 다음은 [TreasureClassEx]에서 TC=Act1(H)H2H B를 찾습니다.

그림2. TreasureClassEx.txt에서 Devilkin에 해당하는 TC 데이터 중 필요한 열만 추린 데이터입니다.

[TreasureClassEx]에서 Act1(H)H2H B를 찾아보니 Act1(H)H2H B는 group=7, TC lvl=66인 것이 확인됩니다.

([TreasureClassEx]의 Level 열에 적힌 숫자는 해당 TC의 레벨입니다.)

 

Devilkin은 mlvl=85, TC lvl=66 이라는 말인데,

 

이와같이 mlvl>TC lvl인 경우 TC의 업그레이드가 발생합니다.

 

TC 업그레이드 프로세스는 다음과 같습니다.

▶ mlvl>TC lvl인 경우, 같은 group내에서 TC를 단계적으로 상승시킨다.

이 말은 TC lvl이 mlvl 이상이 되는 순간까지 TC의 업그레이드가 지속해서 발생한다는 말입니다.

 

돌아와서, 본 TC 업그레이드 프로세스를 헬피트의 Devilkin에게 적용하면,

TC lvl=85인 Act5(H)H2H C에서 업그레이드가 종료되는 것을 확인할 수 있습니다.

이 과정을 거쳐 최종적으로 헬피트 Devilkin의 TC는 Act5(H)H2H C로 결정됩니다.

 

드랍이 될 TC가 결정됐으니 이제 본격적인 드랍 계산이 시작됩니다.

 

Act5(H)H2H C의 picks값은 1로 확인이 되는데, 여기서 picks는 주사위를 던지는 횟수입니다.

picks값이 2 이상인 경우, 해당 횟수만큼 아래의 프로세스를 반복합니다.

 

[TreasureClassEx]의 각 항은 의미는 다음과 같습니다.

▶ NoDrop=아무것도 드랍되지 않음

▶ Item1~10=드랍되는 아이템의 코드 혹은 아이템 그룹의 TC 명칭

▶ prob1~10=Item1~10이 선택되는 비율(경우의수라고 이해하셔도 좋습니다)

 

드랍 확률은 공식은 다음과 같습니다.

▶ 드랍확률=(해당하는 Item의 Prob값)/(전체 경우의 수)

쉽게 생각하면, 전체 경우의 수는 주사위 면의 갯수이고, Prob값은 해당하는 Item이 쓰여진 면의 갯수입니다.

 

이때, NoDrop의 경우의 수는 파티의 인원수와 상태에 따라 NewNoDrop값으로 재계산되어 적용됩니다.

NewNoDrop 계산 공식
▶ NewNoDrop=int( ProbSum/(1/((NoDrop/(NoDrop+ProbSum))^N)-1) )

N은 파티플레이를 진행했을 때 계산되는 상수로써, 계산공식은 다음과 같습니다.
▶ N=int (1+AdditionalPlayers/2+ClosePartiedPlayers/2)

본 예에서는 싱글플레이를 예로 들 것이기 때문에 N=1로 적용합니다.

 

돌아와서, 드랍 공식을 본 예에 적용시켜보겠습니다.

 

먼저 드랍되지 않은 경우의 수인 NewNoDrop를 계산합니다.

NoDrop=100

ProbSum=21(gld)+16(Act5(H)EquipC)+21(Act1(H)Junk)+2(Act5(H)Good)=60

∴ NewNoDrop=36

 

각각의 경우의 수는 다음과 같습니다.

NewNoDrop=36

gld=21

Act5(H)EquipC=16

Act1(H)Junk=21

Act5(H)Good=2

 

경우의 수의 합은

36+21+16+21+2=96입니다.

 

이에 따라 다음과 같이 확률이 계산됩니다.

NewNoDrop : 아무것도 드랍되지 않을 확률 36/96

gld : 골드가 드랍될 확률 21/96

Act5(H)EquipC : Act5(H)EquipC에 할당된 아이템 그룹 내의 아이템이 드랍될 확률 16/96

Act1(H)Junk : Act1(H)Junk 그룹 내의 아이템이 드랍될 확률 21/96

Act5(H)Good : Act5(H)Good 그룹 내의 아이템이 드랍될 확률 2/96

 

자, 여기서 Act5(H)EquipC가 드랍될 확률에 당첨됐다고 하면,

그림3. TreasureClassEx.txt에서 Act5(H)H2HC의 TC 데이터 중 필요한 열만 추린 데이터입니다.

 

또다시 같은 방식으로 Act5(H)EquipC의 Item 그룹 내에서 주사위를 던집니다.

(Act5(H)EquipC의 드랍이 결정된 상태이므로 NoDrop값은 이제 없습니다.)

 

따라서 위와 같은 방식으로 계산된 확률은 다음과 같습니다.

weap81 그룹 내에서 드랍될 확률 2/1565
armo81 그룹 내에서 드랍될 확률 1/1565
weap84 그룹 내에서 드랍될 확률 6/1565
armo84 그룹 내에서 드랍될 확률 3/1565
weap87 그룹 내에서 드랍될 확률 15/1565
armo87 그룹 내에서 드랍될 확률 8/1565

Act5(H)Equip B 그룹 내에서 드랍될 확률 1530/1565

(Act5(H)Equip B가 당첨되면, TC가 다운그레이드되어 다시 주사위를 돌린다고 생각하시면 됩니다.)

 

weapXX, armoXX로 표기되어있는 TC는 각각 무기와 갑옷의 그룹입니다.
모든 무기는 weap03~87 내에 포함되어 있으며, 모든 방어구는 armo03~87 내에 포함되어 있습니다.
weapXX, armoXX를 그룹이라고 칭한 이유는 실제로 해당 TC가 아이템의 그룹으로 이루어져 있기 때문입니다.
예를들어 armo03는 Cap, Quilted Armor, Leather Armor, Buckler, Gloves, Boots and Sash로 구성되어 있습니다.
이 아이템 그룹은 03으로 시작하여 87까지 3단위로 구분되며(armo03, armo06, armo09, ... ,armo87),
숫자가 커질수록 더 높은 단계의 아이템을 포함합니다.

일반적으로 TCXX로 표현하는 것이 이 부분을 칭한다고 보시면 됩니다.
weapXX와 armoXX는 서로 짝지어진 형태로 붙어다니기 때문에
(예를 들어 weap87은 armo87과 같이 붙어다니기 때문에 TC87이라고 표현해도 무방함)
weapXX와 armoXX를 따로 구분지어 명칭하지 않고, TCXX의 형태로 한꺼번에 표현합니다.

 

자 여기서 주사위를 또 던져서 armo87이 당첨됬다고 가정합니다.

그림4. armo87 내의 아이템 리스트

같은 방식으로 armo87 내에서 확률이 계산되며, 최종적으로 드랍될 아이템의 [종류]의 계산이 완료됩니다.

ProbSum=3+3+3+3+3+3+1+1+1+1=22

Diadem이 드랍될 확률 3/22
Corona이 드랍될 확률 3/22
Sacred Armor이 드랍될 확률 3/22
Orge Gauntlets이 드랍될 확률 3/22
Myrmidon Greaves이 드랍될 확률 3/22  
Colossus Girdle이 드랍될 확률 3/22
Dream Spirit이 드랍될 확률 1/22
Guardian Crown이 드랍될 확률 1/22
Vortex Shield이 드랍될 확률 1/22
Bloodlord Skull이 드랍될 확률 1/22

 

자, 드디어 어떤 종류의 아이템이 드랍될지의 계산이 완료되었으며,

이제서야 해당 종류의 아이템이 흰색으로 드랍될지 아니면,

색깔이 붙은 (매직/레어/세트/유니크)가 드랍될지 계산됩니다.

 

아직 매직의 종류와 접두접미의 계산에 대한 프로세스가 남아있기는 하지만,

본 과정까지만 따라오셨다면, 아이템의 드랍되는 알고리즘에 대해 대략적인 이해를 마치셨을 것입니다.

과정을 생략하고 말씀 드리면,

일반 아이템과 마찬가지로 세트/유니크 아이템도 TC 그룹으로 묶을 수 있으며,

해당 지역의 TC를 통해 어떤 아이템이 드랍될 수 있는지 판단할 수 있게 됩니다.

 

그림6. TC 그룹의 예시(C87의 아이템 그룹)

 

아이템의 TC는 다음의 링크를 통하여 확인하실 수 있습니다.

 

Treasure Classes - Diablo Wiki

 

diablo2.diablowiki.net

 

매직의 종류(매직/레어/세트/유니크)와 접두접미의 계산방식에 대해서는 다음 포스팅에서 진행하겠습니다.

 

추가사항

+아이템의 qlvl이 고려되지 않은 것을 확인하였습니다. 이에 대한 내용을 반영하여 글을 수정할 에정입니다.


Reference

1. https://diablo2.diablowiki.net/Area_Level

2. https://diablo2.diablowiki.net/Item_Generation_Tutorial

3. https://forums.d2jsp.org/topic.php?t=73705937&f=57 
4. https://diablo2.io/forums/a-guide-to-basic-terms-of-item-generation-t8350.html

5. https://diablo-archive.fandom.com/wiki/Items_(Diablo_II)#Item_Quality 

6. https://www.chaoscube.co.kr/community/board/contents.asp?seq=-4727&page=1&t_name=cmt_info&keyfield=content&keyvalue=qlv&calcu_page=2&bestchk= 

7. https://www.purediablo.com/forums/threads/guide-regular-special-and-sparkly-chests.380/

8. https://www.purediablo.com/strategy/magic-find-guide-v1-11-diablo-2-resurrected/

 

 

반응형

댓글