???
그런데 너굴 냥즈가 공격을 맞고 넉백이 되어 버립니다!
(중간에 영어는 "너굴냥즈가 맞았는데 히트백이 안된거다"라고 생각하시는 분들에게: 너굴냥즈에겐 피격(먼지)효과가 없었습니다.)
움짤로 다시 봅시다. 여기서 보면 먼저 너굴 냥즈가 늘보보의 공격을 맞고 히트백 됬는데, 그 다음 다시 늘보보에게 접근한 이후로는, 늘보보의 공격에서 안전할 수 있었습니다. 분명 너굴냥즈의 사거리는 늘보보보다 긴데, 왜 이런 현상이 일어나느냐?
사거리와 이동속도가 엇갈렸기 때문입니다.
그러면 여기서부터 본격적으로 약간 어려운 개념들이 나오게 되는데, 냥코가 아니라 게임 자체에 대해서 조금 깊은 지식이 필요합니다. 최대한 쉽게 설명해보겠지만, 어려울 수도 있으니, 만약 여기서 더 나가고 싶지 않은 분이라면
"유닛이 무조건 최대 사거리에서 공격하는 건 아니다"
정도로 알아두시면 편할 것 같네요.
-------------------------------------------------------------------------------------------------------------------------------------------------
[상세설명]
게임에서의 이동이란, 텔레포트에 가깝습니다. 스타 유즈맵이나, RPG만들기 툴 등으로 게임을 만들어 보신 분들은 아시겠지만, 게임에서 이동이란 개념은 각각의 프레임동안, 조금씩 조금씩 캐릭터의 위치를 바꿔 가면서, 마치 유연하게 이동하는 것처럼 보이는 것이죠.
마치 a에서 n초 후에 b로 이동하고, 또 n초후에 c로 이동하고...식으로 보면 될 것 같습니다..
그러면 여기서 냥코 대전쟁의 캐릭터가 행동하는 알고리즘을 설명해 보겠습니다.
1) "이동" 한다. -> 인식 사거리 "내"에 적이 있으면 2)로, 없으면 계속 이동.
2) 멈춘다. 공격 모션을 실행한다.
3) 공격 판정이 적용된다. -> 아직 적이 인식 사거리 "내"에 적이 있으면 2)로, 없으면 1)로
여기서 문제는, "이동"의 거리는 캐릭터마다 다른 점입니다. 냥코는 프레임 단위로 움직이는 게임이라 1프레임, 즉 1/30초마다 움직이는 건 동일하지만 a만큼 움직이나, b만큼 움직이냐의 차이가 존재할 수 있다는 것입니다.
아시다시피 냥코에는 움직이는지 의심이 갈정도인 가 있고, 반대로 날아다니는 도 있습니다. 여기서 스X카넷이나 위키 등을 참조해 보신 분들은 아시겠지만, 각자 이동속에는 고유한 값이 있죠. 는 1, 는 75 등등등. 냥코 대전쟁은 1초에 30프레임으로 돌아가는 게임이고, 각자의 이동 수치는 한번의 프레임에 얼마나 많은 거리를 이동하냐를 나타냅니다. 다시 자료 화면을 보시죠.
보시다시피, 움직임이 끊기는 구간이 있는데, 속도가 월등히 빠른 그리폰이, 움직임이 끊길 때마다 더 많이 이동하는 걸 볼 수 있습니다. 그리폰이 더 많은 속도값을 지니고 있으니, 한번에 더 많이 움직이는 것이라고 생각할 수 있죠.
문제는 이게 사거리와 엮여졌을 때 벌어지는데, "x초에 y만큼 이동한다"의 이동 방식이 사거리 문제와 꼬일 수 있다는 겁니다. 이는 프레임마다의 이동 거리가, 인식 사거리보다 우선권을 가지고 있기(이동 후 인식 사거리를 재본다) 때문인데요다시 너굴 냥즈와 늘보보로 돌아봐 봅시다.
지금은 너굴냥즈가 늘보보에게 접근하고 있는 상황입니다.
파란색 선은 너굴냥즈와 늘보보의 거리, 빨간색은 너굴냥즈의 사거리, 초록색은 늘보보의 사정거리로 보시면 됩니다.
현재 늘보보와 너굴냥즈의 거리는 493unit 이고, 너굴냥즈는 프레임 마다 24unit만큼 움직인다고 합시다.
늘보보는 현재 메탈 고양이가 사거리 내에 있어 움직일 수 없고, 아직 너굴<->늘보의 거리는 사정거리보다 아직 길어서, 너굴냥즈는 여전히 프레임마다 24unit만큼 움직이고 있습니다.
여기서 1 프레임이 지났습니다.
늘보보는 여전하며, 1 프레임 동안 너굴냥즈가 24unit만큼 움직였습니다.
현재 남은 거리는 493-24= 469 unit. 아직 너굴냥즈의 인식 사거리(460unit) 내에 적이 없으므로 너굴냥즈는 움직입니다.
다시 1 프레임이 지났습니다.
너굴냥즈가 다시 이동을 했으므로, 현재 둘간의 거리는 469-24 = 445unit 입니다.
460unit 내의 사거리 안에 늘보보가 있으므로, 이제서야 이동을 그만둡니다. (=다음 프레임에서 움직이지 않습니다)
하지만 445unit의 거리는 늘보보의 사정거리(450unit)에도 들어갑니다. 여기서 늘보보가 공격을 하면, 맞는단 소리죠.
그러면 공격을 맞고 난 뒤의 상황을 봅시다.
예를 들어 밀려나간 거리가 795고, 다시 너굴냥즈가 접근을 시작합니다.
아까 말했듯이 너굴냥즈가 795unit의 거리에서 1 프레임마다 다시 움직이기 시작합니다.
1 프레임 후에 795-24 = 771,
또 1 프레임 후에 771-24 = 747...
이런 식으로 10프레임을 움직이면, 795 - (24*10)으로, 555unit의 거리가 남게 됩니다. 아직 늘보보와의 거리 > 사거리니 너굴냥즈는 이동을 속행하게 됩니다.
계속 프레임마다 이동을 해서
555-24 = 531
531-24 = 507
507-24 = 483
483 -24 = 459
이렇게 460unit 이라는 사거리 이하의 거리를 만들기 위해, 460unit이하의 숫자가 될 때까지 현재의 거리에서 프레임마다 24를 빼게 됩니다. 인식 사거리는 유닛이 정확히 멈추는 거리가 아니라, 인식 사거리에 안에 들어가면 공격을 실행하게 만드는 기준에 불과하단 것이죠. 아무튼 460보다 짧은 거리 안에 있으므로 너굴냥즈는 이동을 멈추고, 공격을 하게 됩니다. 459는 늘보보의 사거리보다 기므로, 이번에는 너굴 냥즈가 공격을 받지 않는 것이죠.
이제 너굴냥즈가 왜 늘보보의 공격을 맞았는지 조금은 이해가 가시나요?
다른 예시를 가져 왔습니다.
빠옹의 사거리(400unit)가 피치스타즈의 사거리(405unit)보다 길지만, 피치의 속도 때문에 사거리보다 앞서 이동하는 상황이 발생했고,
때문에 빠옹의 공격에 맞게 되었다고 가정할 수 있습니다. 운이 좋게도, 히트백 이후로는 운이 좋게 405~401의 거리중에 멈춰서 빠옹의 공격을 피할 수도 있다고도 볼 수 있겠네요.
이 현상은 굳이 빠른 유닛이 아니더라도 볼 수 있습니다.
예를 들어 저 에일리언 캥거루는 199unit의 사거리를 가지고 있지만, 쿨의 사거리(200unit)보다는 짧습니다.
하지만 프레임당 9씩 이동해서 정확한 200unit의 사거리를 만들기는 어렵기 때문에 (9의 배수를 생각해 보시면 이해가 쉬울 겁니다), 사거리가 김에도 불구하고 당해버리는군요. 다만 유닛의 이동 속도가 빠르고, 사거리가 길수록 이 차이가 크게 벌어 질 수 도 있습니다.
이를 찬찬히 뜯어 보면, 10나 5로 나누어지지 않는 애매한 사거리의 캐릭터, (예:
, 199 사거리
, 551 사거리)
아니면 30을 넘어가는 속도라던가 (
이상의 속도)등,
사거리와 이동속도의 최소공배수가 높아질 수 있는 요소가 많을수록 정확한 사거리를 지키지 않는 일이 발생할 수 있습니다.
-------------------------------------------------------------------------------------------------------------------------------------------------
[마치며]
지금까지의 비원범 캐릭터는, 항상 최대 사거리에서 적을 맞추려는 행동 때문에, 항상 정확하게 최대 사거리에서 적을 공격하는 줄 알았는데, 게임을 조금 더 파고 내려가니까 이게 아니라는 걸 깨달았습니다. 때문에 1~5단위의 사거리는 역전될 수 있다는 점 정도를 유의해 주시면 되고, 너굴냥즈는 여기서 또 1패를 적립하는군요. 뭐 코스모마냥 사거리가 짱장하게 길거나, 아예 야옹마처럼 이동 속도가 적당히 느리면 되지만요.
아마 "자살" 개념을 가지고 있는 분이시라면 이해가 조금 더 쉬울 것이라고 생각합니다. 다만 여기서는 사거리 차이가 아슬아슬하면, 이 자살이 적 히트백시 파고들지 않더라도 일어날 수 있다는 것 정도려나요?
아무튼 영상주분의 협력으로 이 글을 완성할 수 있었습니다. 다시한번 감사하다고 전해드리며, 괜시리 어렵게 설명한 글을 읽어 주신 여러분들에게도 감사드립니다. 그러면 모두 즐거운 냥코 라이프가 되시길!
등록순 최신순 댓글순