앞으로 달렸는데, 왜 뒤로 끌려갈까?
이 영상에 나오는 용어 14개.
- 러버밴딩
- 클라 화면의 캐릭터가 서버가 인정한 위치로 끌려 되돌아가는 현상이다. 고무줄에 당겨지듯 보여서 붙은 이름이다.
- 보정 보간 (Smoothing)
- 보정된 위치로 순간이동하지 않고 짧은 시간(영상에서는 100~200ms)에 걸쳐 옮겨 가는 처리다.
- 서버 권한 (Server Authority)
- 위치, 체력 같은 게임 상태의 최종 결정권을 서버가 갖는 구조다. 클라 조작을 그대로 믿지 않아 치트를 막을 수 있다.
- 오차 허용치
- 서버와 클라 위치 차이가 이 값보다 작으면 보정하지 않는 기준이다. 사소한 떨림을 줄인다.
- 재조정 (Reconciliation)
- 보정을 받으면 그 위치에서 아직 Ack를 못 받은 입력을 다시 적용해 현재 위치를 다시 계산하는 기법이다.
- 지연 스파이크
- 평소 낮던 RTT가 짧은 시간 동안 크게 튀는 현상이다. 영상의 RTT 그래프에서 60ms 안팎이던 값이 800ms대로 오른다.
- 클라이언트 예측 (Prediction)
- 서버 응답을 기다리지 않고 입력 즉시 결과를 화면에 반영하는 방식이다. 조작감은 좋아지지만 서버 판정과 어긋날 수 있다.
- 틱 / 틱레이트
- 서버가 게임 상태를 한 번 갱신하는 주기가 틱이고, 초당 틱 수가 틱레이트다.
20Hz는 50ms마다 한 번 판정한다는 뜻이다. - 패킷 손실
- 전송 중에 패킷이 사라져 상대에게 도착하지 않는 것이다. TCP에서는 재전송으로 복구되지만 그만큼 늦어진다.
- Ack
- 서버가 특정 입력을 받아 처리했다고 알려 주는 응답이다. 영상에서는
Ack #n이Move #n에 대한 확인이다. - Correction (보정 패킷)
- 서버 판정이 클라 예측과 다를 때 서버가 보내는, 그 입력 시점의 올바른 위치다. 클라는 여기서 미확인 입력을 다시 적용한다.
- Head-of-Line (HOL) 블로킹
- 순서를 보장하는 TCP에서 앞 패킷 하나가 재전송을 기다리는 동안 뒤 패킷들도 전달되지 못하고 막히는 현상이다.
- RTT
- 패킷이 클라에서 서버로 갔다가 응답이 돌아오기까지의 왕복 시간이다. 흔히 핑이라고 부른다.
- UDP · 비신뢰 채널
- 재전송과 순서 보장이 없는 전송 방식이다. 이동 입력은 UDP로 보내되 패킷마다 최근 입력 몇 개를 중복해 실어 손실을 견딘다. 서버가 보내는 상태는 최신 값만 쓴다.