이 글은 오버레이, 치트엔진 등 메모리 읽기, 패키지 추출 등,
게임 내에서 정상적인 수단으로 얻을 수 없는 정보를 다루고 있습니다.
그러한 정보를 원하지 않는다면 바로 돌아가주세요.
저번 글에서 삘(?) 받아서 숙제(?)를 처리했습니다.
무슨 숙제인가 하면, 몬스터의 스탯은 기준값 * 배율 로 구성되기 때문에 소숫점이 나올 수 있습니다.
그런데 플레이어 캐릭터가 주는 피해량이나 상태이상값은 전부 정수 처리를 해서 넘기죠.
그래서 남은 꼬다리가 실질적으로 어떻게 되는가가 월드 때부터 궁금했었는데,
단편적으로 몇 가지 알아두었던 건 있지만 제대로 살펴보진 못했습니다.
사실 다른 여러가지 상황에서 소숫점 아래 값이 형성될 수 있습니다.
제일 대표적인게 상태이상 축적값이 시간에 따라 감쇠하는데 틱이 아닌 실시간 감쇠이다보니 소숫점 아래 값이 형성되구요.
몬스터가 빈사 상태가 되서 잘 때도 실시간으로 체력이 회복해서 소숫점 아래 값이 생깁니다.
그리고 플레이어 캐릭터의 체력 또한 기본적으로는 정수값이지만,
치유주 등을 통해 체력 회복량 UP 스킬을 통해 1.1 ~ 1.3 배 회복하게 되거나,
커스텀강화 회복을 통해 준 피해량에 비례해서 회복하는 경우 소숫점 아래 값이 형성될 수 있습니다.
그래서, 플레이어 캐릭터의 체력, 대형 몬스터의 체력, 대형 몬스터의 부위 내구도, 대형 몬스터의 상태이상 내성,
이렇게 네 값에 소숫점 이하의 값이 있을 수 있는데요. 흥미롭게도, 혹은 복잡하게도, 따로 놉니다(...).
1. 플레이어 캐릭터의 체력의 소숫점은 "실질적으로" 올린 것과 같습니다.
2. 대형 몬스터의 체력의 소숫점은 "실질적으로" 내린 것과 같습니다.
3. 대형 몬스터의 부위 내구도, 상태이상 내성값은 소숫점 그대로 따지기에, "실질적으로" 올린 것과 비슷합니다.
3-1. 독, 마비, 수면, 기절, 기력감소의 경우 감쇠가 있다보니 소숫점 차이가 체감됩니다.
3-2. 그 외의 상태이상이나 내구도의 경우 "실질적으로" 올린 것과 같습니다.
1. 플레이어 캐릭터의 체력
우선 플레이어 캐릭터의 체력은 최소 보정으로 1의 값을 가집니다.
그래서 죽지 않는 조건에서 큰 피해를 받으면(ex. 근성) 1로 보정되며 더 깎이지도 않습니다(ex. 더위 피해).
즉, 플레이어 캐릭터의 체력은 0이면 사망이고, 살아서 가질 수 있는 최솟값은 1입니다.
그리고 소숫점 이하가 있는 체력 값을 가진 상태에서 이를 넘지 않는 피해를 받은 경우에도,
예를 들어 16.4의 체력에서 16의 피해를 받는 경우, 0.4가 남는게 아니라 1이 남습니다.
그래서 적어도 피해를 받을 때 있어서 소숫점 이하의 값은 실질적으로 1과 같은 효과를 냅니다.
2. 대형 몬스터의 체력
대형 몬스터의 체력 역시 0이면 사망이고, 살아서 가질 수 있는 최솟값은 1로 보정됩니다.
그래서 아이루의 공격, 다른 몬스터의 공격(일부 예외 있음), 상태이상 독의 효과 등 몬스터를 죽일 수 없는 경우,
몬스터의 현재 체력보다 더 큰 피해가 발생해도 체력이 1 남고 죽지 않습니다.
그런데 그렇지 않은 공격인 경우, 플레이어 캐릭터의 공격은 당연히 그렇지 않은 공격인데,
1.6의 체력이 남은 상태에서 발광이끼를 던져서 1점의 피해를 줄 경우,
몬스터의 체력은 0.6이 남거나 최소체력 보정을 해서 1이 남는게 아니라, 그냥 그대로 죽습니다.
그래서 대형 몬스터의 소숫점 이하의 체력값은 피해를 받는데 있어서 없는 것과 마찬가지입니다.
3. 대형 몬스터의 부위 내구도와 상태이상 내성
부위 내구도와 상태이상 축적값의 경우 체력과 같은 보정이 적용되지 않습니다.
그래서 소숫점 이하의 값이 남으면 다 깎거나(내구도) 채운(상태이상) 것으로 치지 않습니다.
(1.5가 남는 내구도에 1점 피해를 주면 0.5가 남아서 경직이 발생하지 않고,
94.5의 폭파 내성에 47씩 2번 축적하면 94/94.5 로 폭파가 발생하지 않습니다.)
그래서 1이라도 더 줘야 효과가 터집니다. 따라서 실질적으로 올린 것과 같습니다.
다만 축적값 감쇠가 있는 독, 마비 같은 상태이상의 경우 감쇠분을 덜 고려해도 되니까 체감이 됩니다.
가령 6점으로 12점을 채우려면 감쇠 때문에 (동시에 쏘는게 아니면) 2방으론 힘들겠지만,
11.5점을 채우는 것이라면 연달아 넣는 2방으로 될 가능성이 있을 겁니다.
---
참고로, 헬로월드의 오버레이든 스마트헌터든 디폴트 세팅으로는 소숫점 아래 값을 보여주지 않으며, 반올림 처리하는 것 같습니다.
(헬로월드의 것은 세팅을 손보면 소숫점 아래까지 볼 수 있고, 스마트헌터는 아직 모르겠습니다.)
ps. 다 쓰고 보니 소숫점 처리가 가장 중요한 분야는 대미지 계산인데 그 얘기를 당연하다는 듯이 생략했네요(...).
다들 아시겠지만, 월드의 캐릭터 대미지 계산은 반올림입니다. 몬스터 대미지 계산의 경우는 (캐릭터가 받는 피해로 볼 떄 버림이니) 올림이구요.
ps2. 덧글로 나눈 얘기의 연장선으로, 내구도나 상태이상이 터져야 하는데 다른 상태이상이나 강제이동 등으로 상태이상 발동이 안되고,
터지기 직전의 값으로 강제 보정되는 경우가 있는데, 소숫점 셋째자리까지 볼 때 (적어도 탑승의 경우) 29.900/30.000으로 보정되는 걸 확인했습니다.
오고 가는 값이 정수 단위임을 감안하면 29로 보정되나 29.9로 보정되나 똑같기 때문에, 제목대로 알아도 아예 쓸 곳 없는 지식입니다(...).
(IP보기클릭)58.150.***.***
(IP보기클릭)58.150.***.***
(IP보기클릭)222.116.***.***
(IP보기클릭)125.133.***.***
그냥 하나로 통일하는게 좋지 않나요? 제일 쓸모있는 지식은 이런게 아니라 대미지 계산인데, 몬헌 월드는 거기선 또 다 반올림입니다... | 20.03.10 18:02 | |
(IP보기클릭)121.130.***.***
(IP보기클릭)125.133.***.***
1. 한참 내려갈 수 있습니다. 제가 찍은 건 아니고, 예전에 인벤에 회복 커강 테스트를 위해 다른 분이 찍은 건데, 체력 값입니다. ( http://www.inven.co.kr/board/mhf/3749/5585?name=subject&keyword=%ED%9A%8C%EB%B3%B5 ) 2. 상태이상만 그런 건 아니고, 내구도 등도 그런 현상이 있는데, 소숫점을 펼친 상태로 살펴본 적은 없고, 정수 처리된 값으로는 1 적게 나와서 99/100 처럼 나옵니다. 내구도는 1/100 처럼 나왔던 것 같구요. | 20.03.10 18:00 | |
(IP보기클릭)121.130.***.***
으음? 그런 현상이 있다는 내구도는 특수경직을 유발하는 내구도를 말씀하시는건가요? 오도아종 머리 강폭화해제나 바젤꼬리 폭린해제 같은 특수내구도말이에요. 일반적인 부위 내구도는 초과하면 그냥 리셋되지 않나요? 예외로 꼬짤이나 두갑각 파괴는 그 어떤 모션도 씹어버리고 발동하는 걸로 알고 있습니다. | 20.03.10 18:08 | |
(IP보기클릭)125.133.***.***
두서 없이 썼네요. 죄송합니다. 일반적으로는 리셋되는게 맞습니다. 다만 몹의 특수 맵 이동, 그러니까 동굴을 지나가거나, 땅굴을 파거나 할 때처럼 몹의 행동이 다른 요인으로 강제된 경우 내구도가 터져야 할 피해에도 터지거나 리셋되지 않고 버티기도 합니다. ... 관련해서 뭔가 패치가 있었던 것 같은데 기억이 안나네요. | 20.03.10 18:27 | |
(IP보기클릭)121.130.***.***
아~ 그런 경우도 있군요. 여태 처음 알았네요. 감사합니다 ㅎㅎ | 20.03.10 18:41 | |