게임 렉 백서 › 일부에게만 생기는 문제
시계 추정 오차로 개체 보류 Clock estimate error holds or discards entities
원인 ID pt-clock-hold · 주 담당 게임개발팀·클라이언트 개발
그림과 실험이 있는 원본 카드로 열기 →
클라이언트가 추정한 서버 시각이 틀리면, 막 도착한 개체 정보를 “아직 미래”라며 보류하거나 “너무 옛날”이라며 버립니다.
왜 한쪽 클라이언트의 서버 시각 추정이 크게 어긋남(로딩 중 측정, 절전 복귀) → 그러면 보간 기준 시각과 개체 정보 시각이 맞지 않음 → 화면에서는 개체가 늦게 나타나거나 멈춘 채로 보임
- 증상
- 안 보임·유령 개체, 뚝뚝 끊김
- 요인
- 지연
- 누가 겪나
- 같은 PC의 한쪽 클라만
- 언제
- 가만히 있다가, 접속·점검 직후
- 담당
- 주 담당 게임개발팀·클라이언트 개발
- 게임개발팀 할 일
- 시간 동기화를 주기적으로 다시 하고 차이가 크면 즉시 재설정, 로딩 중이나 절전 복귀 직후에 잰 값은 쓰지 않기.
- 그래프에서는
- 일부만 높음 · 클라이언트별 서버 시각 추정 오차
- 확인할 곳
- 클라이언트에 추정한 서버 시각, RTT, 시간 동기화를 다시 한 시각, 개체 정보를 보류하거나 버린 횟수를 기록. 로딩 직후나 절전 복귀 직후에 재현해 봄
- 이러면 맞음
- 문제가 난 클라이언트만 추정 오차가 재설정 기준(Unity는 hardResetThresholdSec, 기본 0.2초)을 넘고 개체 정보를 미래라며 보류하거나 과거라며 버린 기록이 있으며 시간 동기화를 다시 하면 바로 정상
- 이러면 아님
- 추정 오차가 작은데 늦게 나타나면 연결별 전송 예산·우선순위나 로딩 쪽 원인
- 확인 수단
- 게임 서버·클라이언트의 로그·지표가 필요
출처
- NetworkTimeSystem class (Netcode for GameObjects 2.5) Unity
시간 차이가 hardResetThresholdSec(기본 0.2초)를 넘으면 강제로 맞추고, 평소엔 adjustmentRatio로 조금씩 빠르게·느리게 조정 - NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
LocalTime은 서버보다 앞서고 ServerTime은 뒤처짐. 늦게 도착한 메시지는 대기 시간이 음수가 될 수 있음
함께 보면 좋은 원인
같은 층: 일부에게만 생기는 문제
같은 증상(안 보임·유령 개체)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기