게임 렉 백서 › L1 클라이언트 게임 프로세스
과도한 외삽(데드 레커닝) Over-extrapolation / dead reckoning
원인 ID cg-extrap · 주 담당 게임개발팀·클라이언트 개발
그림과 실험이 있는 원본 카드로 열기 →
패킷이 오지 않는 동안 마지막 속도로 계속 움직여 보여 주다가, 틀린 걸 알고 되돌립니다.
왜 패킷 수신이 끊겨 마지막 방향·속도로 계속 이동시킴 → 그러면 실제로는 상대가 멈추거나 방향을 바꿨음 → 화면에서는 상대 캐릭터가 한참 가다가 진짜 위치로 휙 옮겨지거나 벽을 뚫고 지나감. 패킷 도착 간격이 들쭉날쭉하면 앞서 나갔다 당겨지기를 반복해 떨리듯 움직임
- 증상
- 순간이동, 뚝뚝 끊김
- 요인
- 손실, 지터
- 누가 겪나
- 나만
- 언제
- 가끔 무작위로
- 담당
- 주 담당 게임개발팀·클라이언트 개발
- 게임개발팀 할 일
- 외삽 시간 상한(예: 200~250ms), 틀렸을 때 부드럽게 수렴.
- 수치 감각
- 속도 6m/s라면 300ms만 틀려도 1.8m 어긋납니다.
- 그래프에서는
- 가끔 무작위로 튐 · 외삽 시간, 위치 보정 거리
- 확인할 곳
- 다른 캐릭터를 외삽으로 그린 시간과, 새 패킷이 온 뒤 위치를 바로잡은 거리를 기록
- 이러면 맞음
- 패킷이 끊긴 구간마다 외삽 시간이 상한 없이 길어지고 그 뒤 보정 거리가 수 m로 커짐
- 이러면 아님
- 외삽이 짧게 끊기는데도 순간이동하면 패킷 손실·지연 자체가 커서 회선·경로 쪽을 봄
- 확인 수단
- 게임 서버·클라이언트의 로그·지표가 필요
출처
- Interpolation and extrapolation (Netcode for Entities 6.5) Unity
다음 스냅샷이 제때 안 오면 같은 방향·속도로 계속 움직이는 외삽은 자주 틀리므로 상한을 둠(유니티 기본 20틱, 60Hz에서 약 1/3초) - Peeking into VALORANT's Netcode Riot Games
늦거나 빠진 데이터를 추측으로 메우다 틀리면 서버와 어긋나 캐릭터가 튀거나 미끄러지듯 보정됨
함께 보면 좋은 원인
같은 층: L1 클라이언트 게임 프로세스
같은 증상(순간이동)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기