|
▶ 여기저기서 자료를 모아봤습니다.
의문점이나 틀린부분은 라그나게이트 도둑게시판에 문제제기 해주셔서
같이 고민할 수 있었으면 합니다.
1. - 太陰電池님의 "공속 계산에 관한 지극히 이론적인 가설."입니다.
일단 들어가기에 앞서..
이 글의 내용은 제목에서 보시듯이 주로 시중(?)의 공속공식과 공속 계산기를 분석하여
약간의 실험을 거친, 지극히 이론적인 계산입니다.
제 생각이 잘못되었을 수도 있고하니.. 그 점 염두에 두시길 바랍니다..
그럼 본론으로 들어가서..
먼저 공속을 언급하기에 앞서, 공격딜레이(이하 ADLY)의 개념을 소개하고자 합니다.
ADLY는 말그대로 한 번의 공격을 하는데 소요되는 시간을 나타내는 것입니다.
마법이 캐스팅 딜레이가 있고 그것이 DEX에 의해 줄어들듯이,
물리 공격에도 공격 딜레이가 있고 그것이 AGI과 DEX에 의해 줄어드는 개념입니다.
보통 캐릭터가 얼마나 빨리 공격할 수 있는가..를 알기위해 정확한 공속(공격스피드, 이하 ASPD)을 계산하고자 애를 쓰시지만,
저는 그보다는 공격딜레이(이하 ADLY)가 더 정확한 계산이며, 프로그램 내부적으로 쓰이고 있다고 생각합니다.
(밑에서 언급하겠지만, ADLY로 ASPD를 계산할 수 있기 때문에 결국은 같은 것일지도 모르겠습니다만..)
일단 결론부터 얘기해서, ADLY를 계산하는 식은 다음과 같습니다.
ADLY = K - ([K x AGI x 4 / 1000] + [K x DEX / 1000])
(K는 기본 딜레이 상수.)
K는 공격시의 기본 딜레이, 즉 기본 공속으로서 직업과 무기에 의해 미리 정의되어 있습니다.
헌터의 활의 경우 K는 600이지요.
그리고 AGI과 DEX에 의해 그 수치가 줄어드는데, AGI 1당 0.4%가, DEX 1당 0.1%가 줄어듭니다.
헌터 활의 경우에는 AGI 1당 2.4가, DEX 1당 0.6이 줄어드는 것이지요..
이때 라그나로크가 의레 그렇듯이 소수점은 버려지는데, 여기서 AGI과 DEX는 협동하지 않습니다.
예를 들어 AGI이 4, DEX가 6라면 각각 9.6, 3.6이 되어 합하여 계산하면 13.2, 여기서 소수점을 버린 13이 주는 것이 아니라,
각각의 소수점을 버린 9, 3이 합쳐진 12만이 줄어들게 됩니다.
공속포션의 적용은 다음과 같이 됩니다.
ADLY = ADLY - [ADLY * P]
(P는 공속포션의 딜레이 감소 상수.)
집중, 각성, 버서크는 각각 10%, 15%, 20%의 딜레이를 줄여주기 때문에, P는 각각 0.1, 0.15, 0.2가 됩니다.
각성포션을 마시는 경우는 ADLY - [ADLY * 0.15]가 되겠죠.
소수점 버림 때문에, [ADLY * 0.85]와는 값이 다르기 때문에 주의.
실제로 한 번의 공격에 소요되는 시간은 (ADLY x 2)ms로 추정됩니다.
ADLY가 500이라면 1000ms, 즉 한 번의 공격에 1초가 걸리는 것이죠.
ASPD는 다음과 같이 계산됩니다.
ASPD = [200 - (ADLY / 10)]
이때 ASPD로 변환하는 과정에서 ADLY의 1의 자리 수를 잃어버리게 됩니다.
ADLY -> ASPD로의 변환은 문제가 없지만, ASPD -> ADLY로의 변환은 정확한 ADLY를 도출할 수가 없죠.
보통 공속의 소수점이 적용되느냐?에 대한 물음에 대한 답으로서,
공속의 계산에 ADLY가 사용된다면 공속의 소수점 첫째자리까지는 적용될 여지가 있다고 할 수 있겠죠.
물론 이 ADLY설(?)을 지지하는 입장에서 필자는 그렇게 적용될 거라고 믿기는 합니다만..
ADLY 1의 차이는 2ms의 미세한 차이인데다 기계의 정밀도와 렉 문제를 생각하면 증명하기 어렵죠.
그런 의미에서는 이론적으로 ADLY를 써도 현실적으로 그런 정도의 정밀도를 낼 수 있느냐하는 문제가 있지만..
그렇더라도 내부적으로 ADLY가 사용된다면 ASPD의 1자리를 맞추기 위해서 애쓸 필요는 없는 것이죠.
마지막으로 왜 프로그램 내부적으로 ADLY가 사용된다고 생각하는가에 대한 근거를 이야기 해보자면..
우선 프로그램적인 측면에서 보자면, 캐릭터의 공격을 처리하려면 거기에 얼마의 시간이 걸리는지가 필요하겠죠.
그것이 ADLY가 되며, ADLY가 ASPD보다 먼저 계산할 수 있기 때문에
ADLY로 ASPD를 계산한 다음, 다시 ADLY를 계산할 살집을 할 이유가 없겠죠.
둘째로는 그라비티가 밝힌 공식적인 문서의 내용입니다.
2-1차 전직이 막 도입될 무렵, 그라비티는 어세신의 이도류를 설명하면서 그 공속이 어떻게 계산되는가를
수치를 사용하여 제시한적이 있었죠..
하지만 거기에 사용된 수치는 익숙한 ASPD가 아니라, 단검 500, 한손검 550과 같은 알 수 없는 숫자였습니다.
이때 사용된 숫자가 ADLY로써, 내부적으로는 ADLY가 사용되고 있다고 생각 할 수 있습니다.
또한 공속포션의 경우에 있어서 공격속도를 올려준다고 되어 있습니다만 엄밀히는 ADLY를 감소시키는 것이죠.
ADLY가 줄어듬으로써 결과적으로 ASPD가 증가하는 것이므로..
유저들 사이에 알려진 공속포션 사용시의 ASPD를 구하는 공식은 ADLY로 환산하여 계산한 후,
다시 ASPD로 돌리는 것임을 알 수 있죠.
마지막으로 제가 Familiar for RO를 개발하면서 메모리를 들여다 본 경험에 따르면,
메모리에는 ASPD가 아닌 ADLY 수치가 저장되어 있다는 것입니다.
앞서 말했듯이 ASPD는 완벽하게 ADLY로 변환할 수 없기에..
내부적으로 ADLY를 사용하고 스탯창에는 ASPD를 계산해서 보여주고 있는 것으로 보여집니다.
결론적으로 ASPD는 속도 수치가 높을수록 빠르다라는 개념에 맞추기 위한 간판용 수치일 뿐이고,
실제로는 ADLY를 이용해서 처리하고 있을 것이다라고 생각하고 있습니다.
처음의 목표였던 ASPD의 계산도, ADLY에서의 이런저런 소수점 버림에 의해 ASPD만의 계산으로는 한계가 있죠.
물론 약식으로 간단히 실제에 근접하게 계산할 수 있는 장점이 있습니다만..
워낙 스탯 1에 목숨거는 사람이 많기 때문에...-_-a
이런이런.. 또 논문하나 써버린게로군요=ㅅ=
Special thanks 라그나게이트 雜念님.
- 太陰電池
2. 로키화이트님의 " 진정한 공속 공식"입니다.
기자단에 공속과 관련해서 긴글을 올려주신분이 계신데, 노가다와
3. 찬란한햇살™님의 자료입니다. (로키화이트님의 글에 대한 리플입니다.)
다들 아시겠지만 '[]'기호는 가우스 기호입니다. 단순한 계산 과정의 우선순위를 정하는 대괄호 개념이 아니구요. 아랫글에서 'dex-1'의 개념이 들어간 것은 가우스 기호를 적용하는 시점의 차이입니다. 지금 많이들 쓰시고 있는 공속계산기프로그램이나 스텟 시뮬프로그램의 공속이 라그 스텟 창에 표시되는 공속과 같은 이유는 같은 공식을 쓰기 때문입니다.
4. 신밧드™님의 공속에 관한 리플들입니다.
신밧드™ (2005-08-15 16:14:41) 원래 공속은 "딜레이"라는 개념과 관련이 있는데요... 딜레이란 "1번 유효한 공격이 들어가는데 필요한 시간" 이고요 흠... 예을 들어 버서크포션의 효과를 계산해볼께요. 그리고, 님이 보신 공식은 이런 중간 과정을 생략하고 결과만 적은 거에요. 참고로 기본공속은 해당 캐릭터와 무기에 따라 정해져 있는 상수값이 있고요
실험이 꽤 많이 있었지만, 궁게의 실험을 빼고는, 따라서 적어도 밀리캐릭의 실험결과는 그리고, 무기와 직업에 관계없이 어질은 0.2씩 댁스는 0.05씩 공속을 증가시킵니다. 어질수치당 몇의 공속이 증가하는지 여부가 무기와 공속포션에 따라 다르다는 이야기는... 육성&가이드 게시판에도 공속 1 증가시키는데 필요한 어질이 4, 4, 5 다 아니다 4, 5, 4, 5 다 뭐다 이야기가 있던데...
▶ 사족을 달자면 여러가지 자료를 본결과 궁계에서 실험하신 분의 "공속은 소숫점이 적용되지 않는다"는 것은 다른 여러분의 실험을 통해 소숫점이 적용된다. 로 결론이 난 상태라고 보시면 되겠습니다.
6. 공속당 타격횟수: 초당 50/(200-공속)
|