급정지 실패를 '감각'으로 치부하기 전에, 입력부터 크로스헤어 안정화까지의 4가지 지연 계층을 분석한다. 디스플레이 체인, 서브틱 이동, 크로스헤어 애니메이션, 시점 입력 스무딩이 어떻게 급정지 감각을 결정하는지 파헤친다.
서문
많은 사람들이 급정지 실패를 '감각이 안 좋다'고 생각하며 마우스, 패드, 크로스헤어를 바꾼다. 하지만 동일한 조작을 녹화해 프레임별로 비교하면, 진짜 문제는 손에 있는 게 아니라 키 입력에서 화면상 크로스헤어가 멈출 때까지의 네 가지 노드에 있는 경우가 많다. 이 글은 미신을 배제하고 지연만 분석한다.
1계층: 디스플레이 체인이 주는 '가짜 동기화'
모니터 주사율, 게임 내 프레임, 렌더링 큐는 세 가지 독립 변수다. CS2의 입력 샘플링과 렌더링은 1:1로 대응하지 않으며, 반대 키를 누르는 순간 화면에 보이는 프레임은 2~3프레임 전에 렌더링된 것일 수 있다.
즉, 크로스헤어가 도착했다고 생각해 키를 놓는 시점은 실제로는 더 이전 시각 상태에서의 판단이다. 높은 프레임이 이 어긋남을 없애주지는 않으며, 단지 좁혀줄 뿐이다. 실측 방법은 간단하다. 워크샵 aim 맵에서 같은 거리로 10회 급정지를 하고, 녹화를 0.25배속으로 돌려 크로스헤어가 멈춘 프레임과 손가락을 뗀 프레임 사이의 간격을 세어보라.
60Hz 모니터에 300프레임이면 어긋남 구간은 보통 3~5프레임, 240Hz에 400프레임 이상 안정적이면 1~2프레임까지 줄어든다. 이것은 '더 부드러움'이 아니라 판단 창이 더 좁아진 것이며, 허용 오차가 낮아지기도 하고 높아지기도 한다.
2계층: 서브틱 이동과 크로스헤어의 '복귀 지연'
급정지의 본질은 속도를 0으로 만드는 것이다. 서브틱 이동 모델에서 반대 입력은 즉시 속도를 끊지 않고 아주 짧은 감쇠 구간을 거친다. 이 감쇠에 해당하는 변위는 크로스헤어로는 보이지 않을 만큼 작지만 실제로 존재한다.
문제는 크로스헤어 자체에도 애니메이션이 있다는 점이다. CS2의 크로스헤어 확장과 수축은 속도 상태를 따르는데, 속도 상태 업데이트 주기와 렌더링 프레임률이 항상 일치하지는 않는다. 그래서 이런 현상이 나타난다: 손은 이미 멈췄는데 크로스헤어는 아직 수축 중이다.
이 반 박자 지연은 근거리 교전에서는 거의 영향이 없지만, 중장거리 점사에서는 크로스헤어가 완전히 모이기 전에 한 발을 쏘게 만들어 탄착점이 예상에서 벗어난다. 대응은 크로스헤어를 작게 바꾸는 게 아니라 '키 놓기'를 아주 조금 앞당기는 것이다. 그 정도는 프레임과 모니터에 따라 다르므로 직접 시도해야 한다.
3계층: 시점 입력의 숨은 스무딩
마우스 입력에서 시점 회전까지 스무딩 처리가 한 겹 있다. 큰 스와이프를 부드럽게 보이게 하지만, 급정지 순간의 미세 조정을 둔하게 만든다. 정지 후 아주 작은 수정이 필요할 때 이 스무딩이 수정량의 일부를 먹어버린다.
이 계층의 영향을 받는지 확인하는 간단한 테스트가 있다. 벽의 한 점을 향해 빠르게 스와이프하고 즉시 멈춰서, 크로스헤어가 점에 깔끔하게 멈추는지 아니면 조금 더 미끄러졌다가 돌아오는지 보라. 후자라면 시점 입력과 스무딩 파라미터가 아직 조화되지 않은 것이다.
4계층: 네 계층을 겹쳐 보기
진짜 급정지 감각은 이 네 지연의 합이다. 디스플레이 체인은 무엇을 보는지 결정하고, 서브틱은 얼마나 깨끗하게 멈추는지 결정하며, 크로스헤어 애니메이션은 언제 쏠 자신이 있는지 결정하고, 시점 스무딩은 멈춘 뒤 수정이 가능한지 결정한다.
그래서 '오늘 감각이 이상하다' 싶을 때 바로 설정을 바꾸지 말라. 녹화를 열어 이 네 노드를 측정하면 문제가 전체가 아니라 특정 계층에 있음을 알 수 있다. 급정지는 손속도가 아니라 한 체인의 정렬이다.