안녕하세요. 딜사이클 관련으로 실험 중에 알아낸 것들이 있어 공유하고자 합니다.

맨 아래에 결론과 결론도 읽기 귀찮으신 분들을 위한 요약이 있습니다.

1. 평캔이란 무엇인가?

우리는 "평캔"에 대해 피상적인 이해를 가지고 있습니다 - 평타 뒤에 스킬을 누르면 평타 후딜이 캔슬되고 스킬이 나간다.

평캔은 실제로 이렇게 작동하는 것이 맞습니다만, ms단위로 딜레이를 컨트롤하는 환경에서는 구조에 대한 좀 더 정확한 이해가 필요합니다.

이 게임의 평타, 스킬 모두는 '선딜레이+후딜레이' 구조로 이루어져 있습니다.

입력 판정이 들어가면, 선딜레이를 지나고(스킬마다 다름) -> 투사체 혹은 즉발기라면 데미지 이펙트가 나가고 -> 그 후 후딜레이가 있습니다.
평타를 제외한 모든 스킬은 딜레이 중 입력을 무시하지만(스킬예약 off 기준. 스킬예약 on의 경우 딜레이 중 들어온 입력을 예약에 걸어두는 식입니다), 평타는 "후딜레이" 중 스킬 입력이 들어오면 후딜레이를 무시하고 스킬을 사용합니다(다음 스킬의 선딜레이 진입). 
당연하지만, 평타로 평타 후딜레이를 캔슬할 수는 없습니다. 이건 다들 아시겠죠.

예시를 들겠습니다.

치유성 평타의 경우, 선딜레이 30~70ms(서버 핑, 프레임 경계, 연계기 종류에 따라 다릅니다)+후딜레이 약 250~300ms정도로 구성되어 있습니다.
t=0ms 시점에 입력이 들어갔다고 가정하겠습니다. t=0ms ~ t=50ms 구간 정도가 선딜레이 구간이고, t=50ms~t=300ms정도가 후딜레이 구간입니다(예시일 뿐입니다 - 실제 수치는 전투속도 및 환경에 따라 다를 수 있음)

이 구간 중, 선딜레이 구간에 들어가는 스킬 입력은 무시됩니다(경험적으로도 잘 알려진 사실입니다 - "평캔을 너무 빨리 하면 씹힘").

후딜레이 구간에 들어가는 스킬 입력은 평타 후딜레이와 관계없이 처리됩니다. 선딜레이가 끝나자마자 t=40ms 정도에 들어갔건, 평타 후딜이 끝나기 직전, 약 t=250ms 정도에 들어갔건, "평캔" 은 성공합니다(= 그림자가 나옵니다).
만약 평타 후딜레이가 모두 끝나고 스킬을 사용했다면? 그냥 스킬 쓴 사람입니다. 평캔은 안 됩니다(그림자가 안 나옵니다).
다만, 250ms에 들어간 경우에는 유의미한 평타 캔슬이라고 보기는 어렵겠죠. 사실상 평캔으로 본 이득이 50ms 내외밖에 안 되니까요. 반면 전자의 경우 거의 후딜레이 전체, 약 200ms 이상의 이득을 본 셈입니다. 차이가 상당합니다.

문제는 선딜레이 시간이 굉장히 제각각이라는 점입니다.
마매를 써서 테스트해보시면 알 수 있는 내용인데, 평타의 선딜레이는 프레임 경계, 입력 처리 시간, 대응/뇌전/방전 간 차이로 매번 다릅니다.
같은 40ms 딜레이를 주고 평캔을 시도해도 언제는 되고, 언제는 안 됩니다. 대략의 밴드는 있습니다. 최소 30ms~70ms 사이가 선딜레이 수치입니다.

따라서, 정확한 타이밍에 스킬을 한번 입력해서 평캔을 실행하겠다는 방식은 사실상 불가능합니다.
평캔이 가능한 정확한 타이밍이라는게 존재하지 않기 때문입니다. 하지만, "딜레이 중 입력이 씹힘"을 역이용할 수 있습니다. 이 방법에 대한 이해를 위해서, 먼저 게임이 입력을 어떻게 핸들링하는지 알아야 합니다.


2. 게임이 입력을 핸들링하는 방식

중요: 모든 내용은 제 추측에 불과하고, 확실하지 않습니다. 최대한 실험으로 검증하려고 했지만 틀릴 가능성이 굉장히 높습니다. 절대 맹목적으로 신뢰하지 마시고, 의심을 품고 봐주세요.

우리가 게임 클라이언트에 입력을 줄 수 있는 방법은 크게 세 가지라고 볼 수 있습니다.

하드웨어 입력 방식 두 가지: 꾹 누르기, 단발적으로 누르기
소프트웨어 입력 방식: 인게임 매크로

인게임 매크로는 "단발적으로 누르기"의 변종입니다.
표기된 딜레이를 바탕으로, 단발적으로 키를 눌러주는 도구일 뿐입니다. 따라서 우리가 알아야 하는 것은 꾹 누르는 것과 짧게 누르는 것이 무엇이 다른지 뿐입니다.

2-1. 꾹 누르기

키다운을 지속하는 방식입니다. 마우스 좌클이건, 키보드건 상관은 없습니다.

게임이 꾹눌을 처리하는 방식은 간단합니다.
실제 키보드도 t를 꾹 누르고 있으면 ttttttttttttttttttt 계속 입력이 들어가듯이, 게임에서도 계속 누르고 있는 것으로 처리됩니다. 아마 1프레임마다 입력하는 것 같은데... 이건 확실하지는 않습니다.
여러 키를 누르고 있으면 어떻게 될까요? 이때는 우선순위 기반으로 처리됩니다. 최근에 눌렀을 수록 우선으로 입력되는 식입니다. 더 정확히는 제일 높은 우선순위 키만 누르고 있는 것 처럼 처리됩니다(실질적으로 같은 말임).
사용 조건이 안 맞아 사용이 안 된다면(쿨타임 중이건, 조건기 조건이 안 맞건, 스킬 후딜레이 중이건 - 물론 스킬 후딜레이 중이면 모든 입력이 안 들어가겠죠) 다음 우선순위 입력이 나갑니다. 그중 한 키를 떼면? 우선순위에서 그 키가 제거됩니다. 직관적입니다.

예시를 들겠습니다.

좌클을 누르고 있는 중에 - 심번을 누릅니다 : 좌클이 나가다가, 심번만 나갑니다. 심번이 사용 불가능한 상태는 없으니까요. 좌클이 안 나가니 평캔도 안 됩니다.

심번을 누르고 있는 중에 - 좌클을 누릅니다 : 심번이 나가다가, 좌클이 나갑니다. 역시 평캔은 안 됩니다. 스킬이 안 나가니까요.

좌클을 누르고 있는 중에 - 심번을 누르고 - 단죄+고통 키를 누릅니다 : 단죄나 고통이 사용 가능하면 그것이 나갑니다. 그렇지 않으면 심번이 나갑니다. 심번이 사용 가능하지 않은 케이스는 없으므로 좌클은 나가지 않습니다. 이 상태에서 심번을 떼면 심번 대신 좌클이 나가겠죠.

가끔 3꾹 세팅같은 데서, "평타를 먼저 눌러야 한다"는 말을 보셨을 겁니다. 왜인지 알 수 있겠죠?

스킬 먼저 누르고 평타를 누른다 -> 평타가 우선으로 사용됨. 평타가 쿨일 때는 없으니 항상 평타가 나감. 스킬 사용 안됨.

평타 먼저 누르고 스킬을 누른다 -> 스킬이 우선으로 사용됨. 스킬이 쿨이면 평타가 나감.

2-2. 짧게 누르기

짧게 누르기도 위에서 말한 우선순위 기반으로 동작하는 것 같은데(키다운 했을 때 입력, 키업했을때 입력 중지, 가장 최신 입력 우선)... 뭔가 이상한 점이 있긴 합니다. 이걸로 설명 안되는 케이스가 있어서..

단죄-평타 사이를 생각해 보죠. 평타를 꾹 누르고 단죄를 마매로 1ms단위로 연타한다고 해봅시다.

단죄 후딜레이가 끝나서, 그 다음 입력을 받아야 하는 상황입니다. 짧게 누르기도 최신 입력이 우선이라는 가설대로면 단죄가 나가야 하지만, 평타가 나가야 합니다. 솔직히 왜인지 잘 모르겠습니다.

그런데, 다른 스킬들을 꾹 누르고(ex. 심번을 꾹 누르고 단죄 사용) 단죄를 광클해보면 정확하게 가설에 맞게 작동합니다. 심번 후딜이 끝난 바로 그 프레임에 단죄가 눌려있으면 단죄가 나가고, 그렇지 않으면 심번이 나갑니다. 유저 입장에서는 "거의 대부분 심번이 나가는데 가끔 단죄가 안 씹히고 나간다" 고 관찰됩니다. 가설에 들어맞는 케이스입니다.

하지만 이게 우리에게 유리한 방식입니다.. 스킬 후딜레이 후에 평타랑 스킬 입력이 같이 들어오면 가능한 한 평타를 넣고 싶으니까요. 아마 게임 엔진에 보정 시스템(스킬 후딜레이 이후 입력은 평타를 우선으로 처리하도록)이 있을 수도 있겠다는 생각이 드네요. 평캔이 의도된 시스템이니 그를 장려하기 위해서요. 이 부분은 솔직히 잘 모르겠습니다. 아무튼 현상적으로 우리에게 유리한 방향은 맞습니다.

3. 결론

1번으로 돌아가, 우리가 하고 싶은 건 최소 딜레이의 평캔입니다. 

우리는 세 가지 사실을 이용합니다. 평타는 평타를 캔슬할 수 없다, 스킬 후딜 후에는 평타가 나간다.

일단 평타를 꾹 누릅니다 - 평타가 입력 queue의 최후순위로 들어갑니다.

그 상태에서 사용하고 싶은 키를 연타합니다 - 사용하고 싶은 키가 queue의 앞순위로 들어갑니다.

queue 우선순위는 스킬>평타인 상태에서 계속 입력이 들어갑니다.

평타 선딜레이가 끝났습니다. 평타와 스킬 입력이 들어오지만, 평타는 사용 불가능입니다(평타는 평타를 캔슬할 수 없음). 스킬이 사용됩니다.

스킬 선딜+후딜이 끝났습니다. 평타와 스킬 입력이 같이 들어옵니다. 이유는 모르지만, 평타가 나갑니다.

이후 반복.

이런 식으로 돌아가면 평타 선딜의 랜덤성과 상관없이 최소 딜레이의 평캔이 나가는 구조입니다.

긴 글 읽어주셔서 감사합니다.


요약

좌클 꾹 누르고 쓸 수 있는 스킬 중 가장 기댓값이 높은 스킬을 연타하는게 고점임