다수의 아군에게 최대 체력/마나 상승 버프를 부여해 파티의 생존력을 올려주는 함성 스킬과,
범위 안에 있는 모든 적들에게 강력한 원소 데미지를 가하는 노바류 스킬들은
그 뛰어난 성능 덕에 명실상부 디아블로2의 주력 기술 위치를 차지하고 있는데요.

이번 글에서는 이 스킬들이 게임 안에서 어떻게 구현되어 동작하는 지에 관해
제가 개인적으로 조사한 내용들을 공유드리고자 합니다.


◆ 겉보기와는 다른 스킬 구현 방식

함성이나 번개 파장 스킬은 겉으로 봤을 때, 캐릭터의 중심에서 원형의 호가 뻗어나가면서
호에 닿는 적에게 피격 판정을 내리는 식으로 작동을 하는 것처럼 보이는데요.

이건 사실 그래픽만 그렇게 보이도록 처리를 한 거고, 실제 게임 시스템 안에서는
직선으로 뻗어나가는 스킬 투사체 여러 개를 360도 전방위로 동시에 발사하는 식으로 구현이 됩니다.



정확하게는 총 64개의 투사체를 전방위로 발사하도록 짜여져 있는데요.
그래서 내부 데이터 값을 바꿔서, 서릿발 스킬의 투사체를 변경해보면 다음과 같은 상황이 연출됩니다.




그렇다면 저 많은 투사체들이 과연 어느 방향으로 발사가 되는걸까요?
제가 생각했던 건, 스킬 종류와 무관하게 투사체들이 발사되는 방향은 항상 일정할 거라 예상했고,
실제로 검증을 해보니 아래처럼 지정된 목표 지점들을 향해 발사가 되는 것을 확인했습니다.





◆ 스킬의 판정 범위

이런 구현 방식 때문에 함성/노바류 스킬들이 갖게되는 두 가지 특징이 있는데요.
첫번째는, 투사체가 날아가는 거리가 곧 스킬의 반경이 된다는 것이며
두번째는, 중심에서 멀어질수록 스킬이 닿지 않는 사각지대가 발생한다는 것입니다.

투사체가 날아가는 거리는 "(투사체의 속력) x (투사체가 유지되는 시간[프레임])"으로 결정이 되고,
여기에 가끔 투사체의 종류에 따라 가속/감속 가중치가 추가로 반영돼 계산되는 방식인데요.
이 속력의 단위는 레거시 화면에 기반한 가로 n픽셀/1프레임 단위로 수치가 정해져 있고,
30 픽셀이 대략 1 대각 서브타일 길이(2√2/3 = ~0.94m)로 전환이 됩니다. (1초 = 25프레임)

그래서 투사체의 비거리를 계산해 스킬의 반경을 유추해볼 수 있는데,
예시로 맹독 확산의 경우 비거리는 12픽셀/1프레임 x 30프레임 = 360픽셀 = 11.3미터가 되고,
이 값을 스킬의 실제 판정 범위랑 대조해보면 서로 일치하는 것을 볼 수 있습니다.




그리고 위 그림에 보이듯이, 중심에서 멀어질수록 투사체 간의 간격이 점점 벌어지면서
그 사이 공간에 스킬이 닿지 않는 사각지대가 생기는 것도 확인하실 수 있습니다.


야만용사의 버프계 함성들은 스킬 설명란에 반경 값이 12.6미터라고 적혀있는데요.
사실 함성 투사체가 실제로 지나가는 경로는 이보단 조금 짧고 중간에 사각지대도 많습니다.

다만, 적이 위치한 서브타일을 정확히 지나가야 타격 판정이 뜨는 공격 스킬과는 다르게,
버프 스킬은 아군 위치에서 상하좌우 1서브타일까지 닿아도 판정이 뜨기 때문에
실질적으로 버프가 들어가는 스킬 반경은 12.6미터가 맞습니다.





마지막으로 원소술사의 번개 파장과 서릿발 스킬은, 투사체의 비거리가 상대적으로 짧다보니
사각지대가 발생하지는 않고 아래 그림과 같이 각각 7.6, 7.9미터 반경의 스킬 범위를 갖습니다.





[글을 마치며...]

제가 소개드릴 내용은 여기까지입니다.
아무래도 게임 구조/설계 쪽에 치우친 글이라, 실제 플레이에 크게 도움이 될만한 내용은 없지만...
눈요깃거리로라도 재밌게 읽어주시면 감사하겠습니다 :)