읽기 전에...
이 글은 100% 정확한 글이 아닙니다. 6개월이 넘도록 레이드 보스를 따라다니며 파악한 내용과, 인터넷 상에서 떠돌아다니는 자료(대부분 일본측...)를 토대로 쓰여진 글입니다. 이 글에 쓰여진 내용은 모두 현재 알려진 레이드 보스 시간표에 적용되어 있습니다.
그러면, 100% 정확한 공식은 어디있느냐...하면, 마비노기 서버에 있습니다. 데브캣만이 그 진실을 알고 있습니다.
이 글의 내용을 100% 이해하기 위해서는 수학적 지식이 필요합니다.
가급적 쉽게 쓰려고 했지만, 기술적(?)인 내용이기에, 만국 공통어인 수학을 통하는 것이 오해의 소지를 줄이기에 적합하다고 판단했기 때문입니다. 고등학교 수학1 과정을 마치면 이해할 수 있는 수준입니다.
이 글에서는 이리아 지역에서 등장하는 사막 드래곤, 이프리트, 평원 드래곤, 예티, 거대 악어, 거대 사자, 매머드, 샌드웜, 레드 드래곤을 레이드 보스로 정의합니다. 단, 샌드웜은 이 글의 방식으로 추적이 불가능 했기에, 가볍게 언급하는 수준에서 그칠 것입니다.
퍼가는 건 금지합니다. 이 글에 대한 참조가 필요하다면 [링크]를 거시기 바랍니다.
등장 시각 계산식.
레이드 보스가 등장하는 시각을 계산해내기 위한 식을 알아봅시다~
각종 변수를 통한 도출.
레이드 보스는 각 서버의 각 채널별로 계산이 이루어집니다. 즉, 특정 서버의 특정 채널이 문제가 되어서 재부팅을 하게 될 경우, 처음부터 다시 계산을 해야합니다. 앞으로는 특별한 언급이 없는 한 하나의 채널을 기준으로 이야기하고 있다고 보시면 되겠습니다.
주기 공식: 레이드 보스의 등장은 일정한 주기에 따라서 이루어지게 됩니다. 그러므로, 간단히 설명하자면 채널 기동 - 주기 - 1차 등장 - 주기 - 2차 등장 - 주기 - 3차 등장 - ...으로 이루어지게 됩니다. 그러므로 n차 등장 시각 t(n)은
t(n)= ts + n * T (n은 등장 차수로 1 이상인 자연수, ts는 채널 기동 시각, T는 주기)
가 됩니다. (주의: 이건 아직 완성된 식이 아닙니다)
n차 주기: 위 식이 맞는다면 참 속 편한 일입니다만... 아쉽게도 그렇게 간단하게 이루어지지 않습니다. 주기가 그대로 계산에 투입되는게 아니라, 등장 회수가 늘어갈수록 주기가 점차 줄어듭니다. 0.999배로 줄어들죠. 이로 인하여 n차에 대한 주기 T(n)은
T(n) = T * {0.999 ^ (n - 1)}
입니다. 그리하여 수정을 가하면...
t(n) = ts + ∑T(n)
이 됩니다. 1차 등장 시각 t(1)은 ts + T, 2차 등장 시각 t(2)는 ts + T + T * 0.999가 되는 것이지요.
최소 주기: 각 레이드 보스는 고유의 최소 주기값을 가집니다. 주기가 이 값보다 작다면, 강제적으로 이 값으로 고정됩니다. 여기에서는 Tm이라고 하죠. (상수입니다) 이로 인하여 n차 주기에 대한 공식에 약간의 변경이 있게 됩니다. 단, 이 값은 1차에는 적용되지 않습니다.
T(n) = T * {0.999 ^ (n - 1)} (단, T(n) < Tm, n >= 2 일 경우 T(n) = Tm)
잡는 시간: 하나의 변수가 또 있습니다. 잡는데 걸리는 시간이지요. 즉, 등장 시각 계산은 이전 등장 시각이 기준이 아니라, 잡힌 시각을 기준으로 이루어지게 됩니다. 1차 때 잡는데 10분이 걸렸다면, 2차 때는 위 식에서 10분 후에 등장하게 되는 것입니다. 잡는 시간을 tk(n)으로 놓겠습니다. (이는 매번 달라지는 변수이므로 특정한 식이 없습니다. 현 보스 시간표에서 3분으로 계산한다고 써 있는 것이 이 변수입니다)
t(n) = ts + ∑{T(n) + tk(n - 1)}
1차 주기 보정: 1차 등장시에는 정해진 주기보다 더 작은 값으로 등장하는 경우가 있습니다. 이는 주기 리셋(차후 설명) 시에 반전되는 boolean(참=1/거짓=0) 값입니다. 이 값이 '참'일 경우에는, 1차 주기가 최소 주기만큼 감소하게 됩니다. 이 변수를 c라고 놓게 되면, 드디어 레이드 보스 등장 시각 최종식이 나오게 됩니다.
t(n) = ts + ∑{T(n) + tk(n - 1)} - c * Tm
T(n) = T * {0.999 ^ (n - 1)} (단, T(n) < Tm, n >= 2 일 경우 T(n) = Tm)
가볍게 예시로 이해하기.
평원 드래곤을 예로 들겠습니다. 주기가 30시간(T = 30H), 1차 주기 보정을 받고 있다(c = 1)고 가정합니다. 평원 드래곤의 최소 주기는 24시간(Tm = 24H)입니다.
1차 등장: 서버가 1월 1일 10시에 켜졌다고 하면...
t(1) = (1월 1일 10시) + 30시간 - 1 * 24시간
이 되어, 1월 1일 16시(오후 4시)에 등장하게 됩니다.
2차 등장: 1차 등장 때 잡는데 10분(tk(1) = 10)이 걸렸다고 가정하죠. 그러면...
t(2) = {(1월 1일 10시) + 30시간 - 1 * 24시간} + 30시간 * 0.999 + 10분 = (1월 1일 16시) + 30시간 * 0.999 + 10분
이 되는 것이지요. 30시간 * 0.999는 29시간 58분 12초(...)이므로, 2차는 '1월 2일 21시 8분 12초'에 등장하게 됩니다.
이번엔 매머드를 살펴보죠. 주기가 30시간(T = 30H), 1차 주기 보정은 없다(c = 0)고 가정합시다. 매머드의 최소 주기는 36시간(Tm = 36H) 입니다.
1차 등장: 서버가 1월 1일 10시에 켜졌다고 하면...
t(1) = (1월 1일 10시) + 30시간 - 0 * 36시간
이 되어, 1월 2일 16시(오후 4시)에 등장하게 되지요.
2차 등장: 1차 등장 때 잡는데 2분(tk(1) = 2)이 걸렸다고 가정하면...
T(2) = 30시간 * 0.999가 되어야 하는데, 이는 Tm(36시간)보다 작으므로, T(2) = 36시간이 됩니다.
t(2) = {(1월 1일 10시) + 30시간 - 0 * 36시간} + 36시간 + 2분 = (1월 2일 16시) + 36시간 + 2분
이 되어, '1월 4일 4시 2분'에 등장하게 됩니다.
주기 변동.
점검이 이루어 질 때, 주기(T)와 1차 주기 보정(c)값이 바뀔 수가 있습니다. 여기에서는 이 값을 추적합니다.
주기 감소.
주기(T)는 각 채널이 켜질 때 (점검 때) 마다 서버 작동 시간 / 1000만큼 감소합니다.
즉, 서버가 월요일 9시에 켜져서 금요일 9시에 점검이 들어갔다면, 4일 * 0.001 = 5분 45.6초 만큼 주기가 감소하게 됩니다. (모든 서버/채널 공통)
Tnew = Told - tr / 1000 (tr은 서버 작동 시간)
주기 리셋.
위 주기 감소식에 의해서 주기(T)값이 1일(24시간/c=0인 경우), 혹은 최소 주기(Tm/c=1인 경우) 아래로 내려갈 경우에, 주기가 리셋됩니다. 이 경우, 1차 주기 보정(c)값이 반전됩니다.
리셋은 몇번 없어서 정확한 공식은 구할 수 없지만, 12시간~최소 주기(Tm) 사이에서 변하는 것으로 추측됩니다.
레이드 보스에 대한 마비노기 서버의 작동.
(주의: 이 정보는 여태까지 추이를 통한 추측으로 이루어진 부분으로, 진실은 데브캣만 알고 있습니다)
레이드 보스의 주기가 감소하는 모습을 살펴보면, 각 채널 서버와는 독립적으로 움직이는 모습을 볼 수 있습니다. 이를 위해 서버 구분을 가볍게 집고 넘어갑시다. (이 구분은 개념적으로 이루어 진 것으로, 물리적 서버와는 다릅니다)
채널 서버: 레이드 보스가 등장하는 각 채널의 서버입니다. 등장 시각 계산은 이 서버에서 이루어집니다.
(여기서의 채널 서버는 각 채널별로 이루어지는 지역 서버, 몹 서버, 유적 서버 등을 포함하는 개념입니다)
데이터 서버: 레이드 보스의 변수값이 저장되어 있는 서버입니다. 주기 변동 계산은 이 서버에서 이루어집니다.
(캐릭터 데이터 등, 채널과 관계 없이 공통적으로 적용되는 부분에 관여하는 서버 개념입니다)
작동 모습을 추측하면, 각 채널 서버가 켜질 때, 데이터 서버에서 레이드 보스 시간에 관련된 데이터(T, c)를 복제해서, 그 값을 기반으로 각 채널이 작동합니다. 데이터 서버는 켜져 있는 시간 동안 지속적으로 주기를 감소시킵니다. 즉, 점검 때 감소가 되는게 아니라, 지속적으로 감소가 이루어지고 있는 것으로 파악됩니다. 즉, 점검 후에는 각 채널 서버가 다시 켜지므로, 이전보다 감소된 값을 복제하여 다음 점검때까지 사용하게 됩니다.
실제 레이드 보스 등장 시각 구하기.
위에서 성립한 이론을 바탕으로, 이제 실제 레이드 보스 시각을 구해보겠습니다. 실전입니다!
주기(T) 구하기.
주기는 1차 때 잡은 시각과 2차 등장 시각과의 차이를 이용해서 구할 수 있습니다.
T = {t(2) - t(1) - tk(1)} / 0.999
채널 기동 시각(ts) 구하기.
채널 기동 시각은, 직접적으로 구할 방법이 없습니다. 점검 끝나는 시각과는 다릅니다. ... 그런고로, 마족 지령서나 등장 시각에 의존하여 역산을 해야 합니다. 주기가 25시간인 레이드 보스가 오늘 10시에 등장했다면, 채널을 켠 시각은 어제 9시가 되는 식입니다.
가장 먼저 뜨는 레이드 보스 등장 시각을 알아야 시간표가 업데이트 되는 것도 이런 이유입니다.
ts = t(1) - (T - c * Tm)
서버 소켓 접속을 통해서도 알아낼 수 있습니다. 다만 그 방법은 여기서 소개하진 않겠습니다.
1차 주기 보정(c) 구하기.
서버 기동 시각과 1차 등장 시각의 차이보다 1차 등장 시각과 2차 등장 시각의 차이가 길다면 참, 아니라면 거짓 입니다.
c = {t(1) - ts} < {t(2) - t(1)}
최소 주기(Tm) 값.
이 값은 고정 상수값입니다. 각 보스별 최소 주기값은 다음과 같습니다.
- 평원 드래곤, 예티, 거대 악어, 거대 사자 : 24시간
- 매머드 : 36시간
- 이프리트(지상) : 72시간 (3일)
- 이프리트(지하) : 96시간 (4일)
- 사막 드래곤, 레드 드래곤 : 168시간 (7일)
잡는 시간(tk(n))에 관하여.
잡는 시간은 직접 잡으면서 측정하는 수 밖에 없습니다. 여기서 언급하는건 사라지는 시간(통칭, 증발시간) 입니다. 등장한 레이드 보스는 일정 시간이 지나면 뿅~ 하고 사라지게 되어 있습니다. (물론 평원 드래곤, 악어는 도망갑니다...) 사라진 시각은 잡은 시각과 동일하게 취급합니다. 각 레이드 보스가 사라지는 시간은 다음과 같습니다.
- 매머드 : 5분
- 예티 : 10분
- 나머지 레이드 보스 : 30분
주기(T) 공유.
평원 드래곤, 예티, 거대 악어, 거대 사자는 동일한 주기값을 사용합니다. 사막 드래곤과 레드 드래곤도 같은 주기값을 가집니다.
그래서, 1차는 동시에 등장하게 됩니다. 2차부터는 잡는 시간이라는 변수가 추가로 들어가므로, 등장 시각이 다르게 됩니다.
채널 기동 보정.
완전히 의문에 쌓여있는 보정입니다. 1차 등장 시각이 채널 기동 시각 + 30분 이내인 경우에 발생하는 것으로 보이며, 0분~40분 정도 시간이 밀려나는 경향을 보입니다. 이로 인해서 가장 먼저 뜨는 레이드 보스가 점검 시간과 겹칠 정도가 될 경우, 가장 처음 뜨는 레이드 보스를 기준으로 한 시간 계산이 어긋나는 경우가 있습니다. 점검 후 두번째 보스 시각을 기준으로 재정렬 및 보정을 해야 합니다.
경험적 지식.
1채널은 시간표보다 일찍 뜨더라!
G8 패치 이후로는 6채널이 먼저 뜨는 채널로 바뀌었습니다.
다른 서버 상황은 모르겠지만, 하프는 1채널이 계산보다 일찍 뜨는 경우가 많습니다. 이는, 1채널의 서버 시동 시각(ts)이 다른 채널보다 빠르기 때문입니다. 1채널만 먼저 켜서 테스트를 하는지, 패치가 있을 때는 이 경향이 더욱 큽니다. 반면, 아무런 일 없이 재부팅...만 했을 경우에는 정상적으로 뜨는 모습을 보입니다. 서버 기동 시각은 각 서버, 각 채널별로 매 점검때마다 몇초씩 차이가 납니다. (3월 3일 5채널 평원 드래곤의 경우, 울프에서는 오후에, 하프에서는 밤에 뜨는 현상을 보여줬습니다)
1차 등장 위치는 모두 같다?
사막 드래곤, 예티, 매머드는 등장하는 위치가 여러 군데입니다. 1차의 경우는 모두 같다...고 하는데, 이는 사실이 아닙니다. 물론, 대부분의 경우 동일한 위치에서 등장하긴 하지만, 실제 등장 위치는 채널 기동 시각(ts)에 따라서 다릅니다. 이에 대해서는 두가지 정도 가설을 세우고 있습니다.
1. 데이터 서버에서 주기 감소가 일정 시간 간격으로 이루어지며, 이 때 위치도 같이 변경된다.
2. 위치를 결정하는 랜덤 시드가 '분 단위'를 사용한다.
즉, 채널 기동시에 몇몇 채널이 1.위치가 변경 된 후에 기동, 혹은 2. 분 단위가 바뀐 뒤에 기동 되면 이 채널들은 위치가 다르게 됩니다.
채널 기동 시각은... 1차 등장 이전까지 역산할 방법이 없으므로, 확실히 파악하려면 마족 지령서를 얻는 수 밖에 없습니다.
(보통은 같은 위치에서 뜹니다. 1채널은 일찍 기동하는 때가 많아서 다른 위치인 경우가 더 많습니다)
샌드웜, 그것이 궁금하다.
바로 위의 등장 위치와 관련이 있습니다. 채널 기동 시각(ts)에 따라서, 1차 등장 시각이 결정됩니다. 예티의 1차 위치가 모두 같은 경우에는 샌드웜 1차가 모두 같은 시각에 등장하고, 1차 위치가 어긋나는 채널은 어긋나는 채널끼리 묶여서 등장하게 됩니다. 그 이후에도 주기성은 있는 듯 하나, 추적이 어려워서 그 이상의 정보는 없습니다. 특히, 점검 때마다 약간씩 변경이 있는 듯 하여, 파악을 못했습니다. 샌드웜에 목숨을 걸 수 있는 누군가-가 있다면 언젠가는 계산식이 나오겠지요.
사막 드래곤 채널 순서!?
패치로 수요일 고정 등장이 됨에 따라 아래 내용은 무효가 되었습니다. 현재는 백엔드 서버에서 시간을 고정으로 가지고 있어서, 채널별 편차 없이 등장합니다. (장소는 다를 수 있음)
사막 드래곤이 전채널 동시 등장...이라고 되어 있긴 하지만, 모든 레이드 보스는 채널별로 따로 계산이 이루어집니다. 동시에 뜬다는건, 계산에 쓰이는 변수값이 같기 때문에 이루어지는 현상입니다. 사막 드래곤은 채널별로 주기(T)값이 다르기 때문에 실제 등장 시각도 조금씩 차이가 나게 됩니다.
가장 먼저 뜨는 5채널을 기준으로, 대략
2채널 : +5초
1채널 : +2분 30초
8채널 : +4분
10채널 : +5분 20초
9채널 : +8분
4채널 : +8분 30초
정도로 파악하고 있습니다. (나머지 채널은 조사를 안했습니다-)
이로 인해서, 얼마 후(약 두달 후-)에 이루어질 사막 드래곤 주기 리셋시에 채널별로 다른 등장시각을 가지게 될 가능성이 있습니다...
(물론, 데브가 따로 보정을 할 가능성도 있습니다)
마족 지령서는 언제, 어디서 나오나!
해당 레이드 몹이 잡힌 시각부터, 그 지역의 모든 몹에게서 나올 확률이 존재하는 것으로 보입니다. 등장 위치도 잡힌 시점에서 결정되어 지는 것으로 보입니다. 1차 지령서에 대해서는 서버 켜지자 마자 나옵니다.
실제로 이루어진 주기 리셋.
여태까지 시간 계산 들어간 이후로 이루어진 주기 리셋시 주기가 보정된 값입니다.
10채널 평원 드래곤 : 24시간 약간 안됨.
6채널 평원 드래곤 : 12~14시간. (정확한 값을 기록하지 못했습니다)
10채널 매머드 : 36시간.
4채널 평원 드래곤 : 23시간 40분.
4채널 매머드 : 36시간.
위 결과 값에서 보다시피, 주기가 리셋 될 경우 정확한 시각을 얻어내기가 어렵습니다. 앞으로 사막 드래곤은 어찌 될지...
그러므로 주기가 리셋 되었을 경우에는... 밤 새서 뜨는걸 기다리거나, 지령서를 어떻게든 뽑아내야 새 시각을 알 수 있지요.
현재 레이드 보스 변수 값.
아래는 2008년 3월 3일 현재 레이드 보스 시간표 제작에 쓰인 주기값 정보입니다. 단위는 초 입니다.
mabinogi=> SELECT * FROM boss_data ORDER BY interval;
name | ch | interval | initial | adj | p_adj
---------------+----+----------+---------+-----+-------
desertdragon | 0 | 5212 | f | 0 | 0
efreet_ground | 0 | 91576 | f | 0 | 0
mammoth | 5 | 91647 | f | 120 | 0
yeti | 5 | 91703 | t | 0 | 1020
yeti | 8 | 95669 | t | 0 | 0
yeti | 9 | 99530 | t | 0 | 0
yeti | 2 | 99828 | t | 0 | 0
yeti | 3 | 112096 | f | 0 | 0
mammoth | 9 | 115207 | f | 0 | 0
mammoth | 3 | 121945 | f | 0 | 0
yeti | 6 | 125083 | f | 0 | 0
yeti | 1 | 126651 | t | 0 | 0
yeti | 7 | 127211 | t | 0 | 0
mammoth | 1 | 136939 | f | 0 | 0
mammoth | 6 | 158223 | t | 0 | 0
yeti | 10 | 160204 | f | 0 | 0
yeti | 4 | 170654 | f | 0 | 0
mammoth | 8 | 171551 | t | 0 | 0
mammoth | 2 | 174793 | t | 0 | 0
mammoth | 7 | 176427 | t | 0 | 0
efreet_under | 0 | 177976 | f | 0 | 0
mammoth | 10 | 207849 | t | 0 | 0
mammoth | 4 | 215691 | t | 0 | 0
(23건 있음)
뒷담화.
자기 스스로 만들지는 못하고, 남의 컨텐츠를 재가공하는 모 사이트의 어이없는 행위 때문에 이 글을 쓸까 말까 상당히 고민했습니다만, 그냥 편히 생각하기로 했습니다. 양심이 있는 프로그래머라면, 남의 컨텐츠를 베껴다가 자기 것인냥 하지는 않겠지요.
이 자료를 기반으로 다른 시간표를 제작하겠다- 라고 하면 환영합니다. 매 점검 때마다 지령서 작업 하는것도 힘든 일이거든요. 제발 대체 상품(?) 좀 만들어주세요-
다시 한 번 쓰지만, 펌 금지입니다. 공개된 컨텐츠를 다른 곳에 가져가서 게제하는 행위가 어디서 튀어나온건지 모르겠습니다만, 원본 문서가 바뀔 가능성이 있다면 절대 해서는 안되는 일입니다. (이 글이 바뀔 가능성은 적긴 합니다만...) 원본에 오류가 있어서 수정을 할 경우, 복사된 문서에는 그 수정 사항이 반영되지 않게 됩니다. 잘못된 지식을 전파하게 되는 일이지요. (이전의 드랍템 정리 글 같은 경우, 꽤 수정한 부분 많습니다?)
그리고, 저작권은 글이 출판(공개)되는 순간 성립하게 됩니다. 원작자의 허가를 받지 않은 펌질은 모두 저작권 침해라는걸 명심하시면 좋겠네요. 덧글에 [퍼가요~]라고 쓰는 것은 원작자의 허가를 얻은 것이 아닙니다. 원작자가 [퍼가도 되요~]라고 말하지 않았다면 당신은 불법을 저지른 것입니다.
(개인적으로 저장해서 보는건 상관 없습니다. 공개된 장소에 올린다면 문제가 된다는 것이지요)
기타 레이드 보스 시각에 대해서 궁금한 점이 있으면 덧글로 달아주세요. 모르는건 패-스 하고, 아는건 글에 추가하겠습니다.
수정
2008.12.31. G8 패치후 1채널 대신 6채널, 사막드래곤 고정화 코멘트 추가. 주기 감소 공식 수정. |