악사게시판에 올렸던 글인데요.
일단은 아주 특별히 단순한 경우에 대해서만 계산 가능하지만, 일단 한 번 이렇게 계산해내기 시작하면 조금 더 복잡한 경우, 조금 더 더 복잡한 경우로 확장해 나가는건 시간만 충분하면 가능합니다.
악게에 이걸 올렸던 이유는 투검 때문입니다. 투검의 딜 사이클에는 두 가지 특징이 있어서 dps 계산을 아주아주 쉽게 만들어 줍니다.
조건 1. 고통스택 쌓이는 속도가 일정하다.
조건 2. 사이클의 시작점이 완전히 랜덤한 변수에 따라 결정된다.
예를 들면 원소의 회동을 쓰면서 지금 어떤 회동이 돌고 있느냐에 따라 딜량이 결정되는 딜 사이클은 2를 만족하는겁니다. 생각보다 흔하죠?
투검 말고도 1,2의 특징을 가지는 빌드를 찾아보라면 수류악사가 있겠네요.
다발악사도 되죠? 증오 수급까지 고려해서 딜 사이클 짜면, 아마 다발 공속 증가는 고통스택 쌓는 속도에 영향 안 준다고 알고 있으니까요?
집속습격악사도 딜 사이클 잘 짜면 되나요? 이 빌드는 잘 몰라서.
일천 수도사는 안 되죠. 비룡이란게 있던데 이게 무한유지가 가능하다면 됩니다. 근데 만약 이게 끊어졌다 다시 됬다가 하는거라면 1번 조건을 어기죠. 고통보석 쌓이는 속도가 일정하지 않네요.
일천의 dps 계산을 위해서는 조금 더 복잡한 경우로의 확장이 필요한겁니다.
아무튼 서론은 이 정도로 하고 딜 계산을 해 보겠습니다.
일단 1,2의 특징을 가지면 고통스택의 효과를 일단 배제하고 딜을 계산한 다음에, 사이클 내 평균 고통스택을 곱하는, 매우 easy 한 방식으로 딜 계산이 가능하다는 사실을 증명할 겁니다.
이 사실이 직관적으로 의심의 여지 없이 딱 느껴지시는 분, 이미 이 사실을 알고 계셨던 분들은 점선 안쪽을 읽으실 필요가 없습니다.
-------------------------------------------------------------------------------
문제를 단순화 하기 위해 초당 공속은 1.
각 회동마다 4발씩 공격을 하고, 발당 데미지는 100, 고통 보석의 스택당 데미지 상승량은 a라고 하겠습니다.
우선 첫 발을 때릴 때 회동 타이밍이 돌아오는 딜 사이클의 16초간 딜량을 S (1) 라고 하겠습니다. 이 때,
S(1) = 300 + (300+3a) + (300+6a) + (300 + 9a) + (100 + 4a) + (100+ 5a) +(중간 생략) + (100+15a) = 2400 + 132a
이제 두 번째 공격을 때릴 때 회동 타이밍이 돌아오는 딜 사이클의 16초간 딜량을 S (2) 라고 해서,
S(2) = 100 + (300 + 3a) + (300+6a)+(300+9a) + (300+12a) + (100+5a) +(중간 생략) + (100+15a) = 2400 + 140a
일반적으로 n이 1부터 13까지의 정수일 때, S(n) = 2400+(124+8n)a
그 다음 S(14) 는 열네번째 때릴때 회동이 도는거니까 첫 공격에도 회동이 있었겠죠?
S(14) = 300 + (100+a) + (100 + 2a) +(중간 생략) + (300+39a)+ (300+42a) + (300+45a) = 2400 + 204a
S(15) = (생략) = 2400+ 180a
S(16)= 2400 + 156a
후.
그래서 여기서 특성 2를 사용할 겁니다. (2. 사이클의 시작점이 완전히 랜덤한 변수에 따라 결정된다.)
그러니까 우리가 실제로 보스가 팝업이 됬을 때, 몇 번째 공격을 할 때 회동타이밍이 올 것인지.
즉 S(1) ~ S(16) 중에 어떤 상태를 취하게 될 지 모르기 때문에
16초간평균 누적 dmg = Avg {S(1), S(2), .... , S(16)} = 2400 + 180a 라고 당당하게 말할 수 있다. 이거죠.
그런데, 여기 보면 중요한 특징이 있죠. 16초간 사이클의 평균 고통 스택은 7.5 스택입니다.
만약 그냥 처음 계산할 때 모든 공격이 7.5 만큼의 고통 스택을 가졌다고 가정하면 어떻게 될까요?
2400 * ( 100+ 7.5a)/100 = 2400 + 180a (우연의 일치가 아님)
우연의 일치가 아닙니다. Avg {S(1), S(2), .... , S(16)} 를 취하는 과정에서 일어난 현상인데 딜 사이클 상의 모든 위치의 고통스택까지도 평균이 취해지면서 결국 (고통 증뎀을 배제한 기본 딜) * (평균 고통스택에 의한 증뎀량) 과 같은 결과가 된 것 입니다. 예시를 위해 초당 공속을 1로 잡았지만, 초당 공속이 몇이던 상관 없습니다. 심지어 소수여도 Avg 계산이 빡세지기만 할 뿐 결국 똑같은 결과만 얻습니다.
-------------------------------------------------------------------------------
만약 악사의 늑대 버프같은게 끼어든다면 어떨 것 같나요?
2번 가정만 지킨다면 상관없습니다. 만약 늑대쿨이 17초라서 매 사이클 같은 위치에서 버프를 켤 수 없다면 16초짜리 회동사이클에서 2번 가정을 어기게 됩니다.
이러면 16과 17의 최소공배수인 272초짜리 사이클을 계산해야 되는데 개소리죠? 하지만 늑대 쿨이 16초 이하라서 매 회동이 오기 6초전에 늑대를 켜는 사이클을 무한 유지할 경우 2번 가정을 만족합니다. 그러면 상관없다는 겁니다. 방법은
-고통 스택을 완전히 무시한 채로 늑대가 고려된 사이클 딜량을 계산한 후
-거기에 사이클이 가지는 평균 고통스택의 증뎀 비율을 그냥 곱한다.
-이-지.
어떤 버프더라도, 주어진 딜 사이클 내에서 어떤 시기에 버프를 사용할 것 인지를 명확히 표현해서 사이클 딜량을 계산해낼 수 있다면..~ 됩니다. 되요.
참.. 적다보니까 내용이 별로 없네요. 위의 내용에서 나온 값 중에 쓸모가 많은 값 하나 짚고 마치도록 하겠습니다.
바로 (고통 증뎀을 배제한 기본 딜) 또는 (고통 스택을 완전히 무시한 채로~ 사이클 딜량) 입니다.
제가 말로 풀어쓰느라 말이 다른데 결국 같은 말이죠. 고통 스택을 무시한 딜량, 배제한 딜량.. 결국은 고통보석이 없다고 가정하고 계산한 사이클의 딜량입니다. 이걸 한 사이클에 걸리는 시간으로 나누면 특별한 의미가 있는 dps로 바뀌죠.
이하 내용에서 이 값을 일단은 기본디피 이라고 부르겠습니다.
어떤 빌드의 딜 사이클이 조건 1,2를 만족하고, 고통스택이 쌓이는 속도를 알고, 기본디피를 알면
이 빌드의 시간에 따른 dps(t) 가 어떻게 변하는지를 10초만에 정성적인 방법으로 알 수 있습니다.
dps (t) = 기본디피 * (100 + t* 고통스택 쌓이는 속도 * 고통 스택 당 증뎀)/100
다시 정리하면,
dps (t) = 기본디피 + t* 기본디피 * 고통스택 쌓이는 속도 * 고통 스택 당 증뎀/100
그렇습니다. 정성적인 방법으로 구해진 dps 죠.
회동 타임에 따라 실제 dps 는 요동치지만, 아까처럼 모든 S(1)~S(16) 에 의해 계산된 평균 dps 는 아무 요동없이 선형으로 단조증가한다는 사실을 알려줍니다. 심지어 그 기울기까지요.
사실 위 식은 딜 사이클의 요동이 없다면 너무나도 당연해서 많은 분들이 아실만한 식입니다. 그런데 중요한 건 딜 사이클의 요동이 있더라도, 그 요동치는 방식이 조건2를 만족하면, 여전히 이 식을 써먹을 수 있다는겁니다.
많은 분들이 단수가 높아질 수록 공속이 높은쪽이 무조건 쎄다 라고 말씀하시는데요, 이는 정확한 표현은 아닙니다.
고통 스택당 증뎀이 상수라고 놓으면 dps(t) 의 기울기는 (기본디피 * 고통스택 쌓이는 속도) 에 비례한다는걸 알 수 있죠.
기본디피 자체가 공속에 비례하기 때문에 dps(t) 의 기울기는 공속의 제곱에 비례합니다. 공속이 중요한것은 맞다는 말입니다. 그러나 절대적인것은 아닙니다.
원래는 공속이 아니라 초당 쌓는 고통스택을 가지고 계산을 해야하는데 .
예시에서는 편의상 공속이라고 하겠습니다. 둘은 거의 비례하지만 약간 다르죠.
빌드 A 의 기본디피는 100, 공속은 5
빌드 B의 기본디피는 200, 공속은 2.6
빌드 C의 기본디피는 200, 공속은 2.4
A 빌드는 B 빌드의 딜을 영원히 따라잡을 수 없습니다.
(기본디피 * 공속) 이 A는 500, B는 520. 그래서 dps 상승속도가 B가 더 빠르죠.
공속은 A가 1.92배 정도 빠르지만 기본디피가 딸려서 못 따라가요. 시간 지날수록 오히려 차이가 벌어지죠.
하지만 C빌드는 따라갈 수 있습니다.
(기본디피 * 공속) 이 A는 500, C는 480. 이렇게 되면 언젠가는 A 빌드의 dps 가 C 빌드의 dps를 따라잡겠죠.
언제 따라잡는지도 계산 가능합니다.
즉 A 빌드는 C 빌드보다 정성적으로 강하다고 표현해도 되겠죠. 정량적으로 누가 강한지는 시간 t가 주어져야 알 수 있겠군요.
요약을 원하셔서 요약 추가합니다.
요약1. 맨 위에 적힌 조건 1,2를 만족하면
딜사이클의 총 딜량 = (고통스택을 무시하고 계산한 딜량) * (100 + 사이클의 평균 고통 스택 * 고통 스택 당 증뎀)/100
요약2. 고통보석으로 인한 dps 상승속도는 (기본디피 * 공속) 에 비례.
기본디피 = 고통보석의 효과를 무시하고 계산한 dps 에 임의로 붙인 이름.