공격력 업그레이드 추가치 계산 공식 : 울트라리스크는 왜 +9?

스타크래프트 2의 공격 유닛들은 공격력 업그레이드에 의해 공격력이 오르는 방식은 대체적으로 그 유닛의 초기 공격력을 10으로 나눠서 반올림한 값입니다. 예를 들어서 바퀴의 공격력은 16이기때문에 10으로 나눈 값은 1.6이고, 이를 반올림하면 2입니다. 실제로도 바퀴는 공업당 공격력이 2씩 증가합니다. 10으로 나누어서 정수부가 1이 안되면 업그레이드당 추가치는 1입니다.

이 확장모드도 동일한 계산방법으로 유닛의 공격력 업그레이드를 적용하고 있습니다. 그렇지만 이따금 예외는 늘상 존재하는 법인데, 울트라리스크가 대표적인 예시라고 할 수 있습니다. 울트라리스크의 공격력은 유닛 상대로 40이고 구조물 상대로 125입니다. 그러면 업그레이드 공식에 따르면 업그레이드당 +4 +13이어야할텐데 실제로는 +9 +28씩 적용됩니다. 왜일까요? 이것은 래더와는 다르게 공업이 공격 주기 감소도 포함하기 때문입니다. 일부 유닛들은 공격력 업그레이드에 의해 공격 주기가 감소하지 않는 것에 대한 보상으로 DPS를 반영한 증가분을 갖습니다. 여기서는 그것을 설명하고자합니다.

먼저 알아야할 사항은, 스타크래프트2의 유닛들의 공격력은 반드시 정수값, 양의 정수값으로 나타난다는 점입니다(비록 실제 계산은 유리수에 의합니다만, 겉으로 나오는 수치들은 항상 자연수입니다) 이 글에서 임의의 유닛의 공격력은 미지수 x로 놓겠습니다. 방어력유형에 의한 추가 공격력은 y로 놓습니다. 이 값은 유일합니다. 왜냐하면 섬멸전 표준에 한정해서 한 무기가 방어력 유형 3개에 따른 추가 공격력을 가지는 경우는 존재하지 않기 때문이고, 그것은 이 확장모드에서도 마찬가지이기때문입니다.

두 번째로 이 확장모드는 공격력 업그레이드당 공격 주기를 1.05로 나눕니다. 대략 4.76%감소합니다. 소개란에는 5%라고 되어있어서 1.05로 나누는 것인지 0.95로 곱하는 것인지 애매모호한 측면이 있습니다만, 굳이 밝힐 필요는 없었다고 생각합니다.

세 번째로 업그레이드 단계가 10까지 존재하고, 공격력 업그레이드는 매번 고정된 수치의 공격력을 더합니다. 즉 업그레이드 단계에 따라서 추가치가 증가하거나 감소하지도 않는 상수함수적 형태를 띕니다(데카르트 평면에 x축을 업그레이드 단계, y축을 공격력 추가치로 놓으면요)

이 규칙에 의해서 공격 주기가 감소하지 않는 유닛들에 대해서 공격력 추가치를 결정해왔습니다. 가장 중요한 것은 최종 단계(10단계 업그레이드)에서의 이론적 DPS가 얼마나 되는가? 입니다. 공격 주기가 감소하지 않은 상태로 매 업그레이드마다 고정된 값의 공격력을 얼만큼을 더해야 10단계에서 이론적 DPS에 근접한 정수값의 공격력을 만들 수 있겠는가?의 문제입니다.

이것을 수식화하는 것은 아주 쉽습니다. 함수 upg(x)를 다음과 같이 정의합니다.

upg(x)=n s.t n-1<x/10≤n+1/2 where n is a natural number

x는 위에서 정의한대로 "양의 정수"인 공격력값입니다. 이 단순한 수식은 공격력 업그레이드에 의해 증가할 공격력 값을 정합니다. 예를 들어 해병의 공격력인 6을 들자면 6/10=0.6이기때문에 1-1=0<0.6≤1+0.5=1.5를 만족합니다. 그러므로 해병은 공격력 업그레이드에 의해 공격력이 1씩 증가해야합니다.

다른 유닛도 들어볼까요? 바퀴의 공격력은 16이기때문에 16/10=1.6입니다. 따라서 2-1=1<1.6≤2+0.5=2.5를 만족합니다. 그러므로 공격력 업그레이드당 2씩 증가합니다.

공성 모드의 공성 전차는 35(+25중장갑)이기때문에 35/10=3.5, 25/10=2.5입니다. 따라서 4-1=3<3.5≤4+0.5=4.5, 3-1=2<2.5≤3+0.5=3.5입니다. 그래서 공격력 업그레이드당 공격력 증가 수치가 +4+3중장갑입니다.

추가 공격력을 가지는 유형의 공격력의 경우, 업그레이드에 의한 추가 공격력의 추가치는 원래 공격력에서 합산하지 않고 그 자체를 별개로 놓습니다. 즉 공성 전차 (공성 상태)의 중장갑 상대 공격력이 60이라고 해서 +4+2중장갑으로 하는 것이 아닙니다.

이론적 DPS를 구하는 방법은 그러면 다음과 같아집니다. 공격력 x에 대해서 공격 주기를 d라고 하면

(x+10*upg(x))/(d/1.05^10) = ((x+10*upg(x))*1.05^10)/d

이제 다 구했습니다. 여기서 1.05^10≒1.6289가 제일 중요하게 작용합니다. 원래 공격력에서 고정 추가 공격력값을 10번 곱해서 더한 값에 이 값을 곱해서 나온 값에 x를 뺀 후 10으로 나누어 얻는 정수가 새로운 upg'(x)를 결정하는 근거가 됩니다.

이를 수식화하면

[((x+10*upg(x))*1.05^10-a)*0.1]≒[0.06289*x+1.6289*upg(x)] 입니다. 여기서 []는 최대 정수 함수 (흔히 가우스 함수로 알려진)입니다.

울트라리스크의 공격력은 40이기때문에 upg(40)=4입니다. 그러므로 [0.06289*40+1.6289*4]=[9.0312]=9가 upg'(40)입니다. 이렇게 하면 이론적 DPS값과 대조해볼 때 151.38과 비교해볼 때 151.02로 별로 차이도 나지 않습니다.

이런 방식으로 증가하는 공격력은 DPS증가비율이 갈수록 감소한다는 것은 문제입니다만, 그럼에도 불구하고 초기 증가폭이 아주 크고 알파 데미지가 강하다는 것이 장점입니다. 다만, 이런 특징때문에 아무 유닛에나 막 적용할 수는 없습니다. 특히 거신은 화염 광선의 피해 전달 구조를 고려한다면 이 적용이 가장 필요하겠으나, 프로토스는 전반적으로 큰 문제 없이 강한 종족이기때문에 굳이 구조를 변경할 필요는 없다고 봅니다.

또 일부 유닛들은 알파 데미지가 높은 쪽이 유리한 경우(추적자, 뮤탈리스크같은)라고해서 무작정 적용해주면 혼란이 생길 수 밖에 없습니다. 어느 유닛은 공속이 감소하는데 어느 유닛은 공격력만 크게 오르고.. 예외는 기억할 수 있는 수준에서 한 두손가락만 꼽으면 될 수 있는 수준으로 하면 충분합니다. 그래서 일부 유닛들은 최대 효율을 낼 수 있는 기회를 잃는 대신, 게임 전체로서 보면 일관성을 획득할 수 있게 되기때문에 그리 손해보는 장사는 아닐 것입니다.

 주문 피해도 본래라면 이런 관점에서 적용하는 것이 옳으나, 이런 능력을 가지는 여러 유닛들(전투순양함, 유령, 고위 기사 등등)은 그 자체로도 너무 강하고 범위 피해를 준다거나 빠르게 난사할 수 있다거나 아주 먼 거리에서 저격할 수 있는 등 부가적인 요소, 그리고 방어력을 무시하는 주문 피해의 본질적 속성등을 고려했습니다.

댓글