게임 렉 백서 › 동기화 설계
지연 보상 과다 Excessive lag compensation
원인 ID sy-lagcomp-overreach · 주 담당 게임개발팀·서버 개발
그림과 실험이 있는 원본 카드로 열기 →
공격자 기준으로 너무 멀리 되감아 주면, 맞는 쪽은 이미 숨었는데도 맞습니다.
왜 핑 높은 공격자를 위해 서버가 크게 되감아 판정 → 그러면 맞는 사람 화면에서는 이미 엄폐한 뒤 → 화면에서는 “벽 뒤에서 맞았다”, 핑 높은 사람이 유리
- 증상
- 씹힘·롤백
- 요인
- 지연
- 누가 겪나
- 나만, 특정 지역·통신사
- 언제
- 특정 행동을 할 때
- 담당
- 주 담당 게임개발팀·서버 개발
- 게임개발팀 할 일
- 되감기 상한 두기(예: 200~250ms), 그보다 핑이 높은 공격자는 한도까지만 되감고 나머지는 스스로 앞질러 쏘게 두기.
- 그래프에서는
- 일부만 높음 · 명중별 되감은 시간(공격자 핑별)
- 확인할 곳
- 서버 판정 로그에 명중마다 되감은 시간, 공격자 RTT, 맞는 쪽이 엄폐에 들어간 서버 시각을 남김. 개발 빌드에서 되감은 판정 박스를 화면에 그려 봄(Source 엔진은 sv_showlagcompensation)
- 이러면 맞음
- “벽 뒤에서 맞았다” 제보의 명중이 되감은 시간이 긴 공격자에게 몰리고 되감은 시간이 상한 없이 공격자 핑을 따라 늘어남
- 이러면 아님
- 되감은 시간이 짧은 명중에서도 벽 뒤 피격이 나오면 판정 박스·충돌 검사 문제. 맞는 쪽의 핑이 높으면 그 사람의 이동이 서버에 늦게 닿아 생긴 일
- 확인 수단
- 게임 서버·클라이언트의 로그·지표가 필요
- 더 알아보기
- 되감기 판정은 “쏜 사람 우선”입니다. 맞는 쪽이 자기 화면에서 이미 안전한 곳에 들어갔다면 되감지 않는 “맞는 쪽 우선” 예외도 제안되어 있습니다.
출처
- Peeking into VALORANT's Netcode Riot Games
되감기에 한도가 없으면 지연 500ms인 사람이 엄폐 0.5초 뒤에도 맞힐 수 있어 한도를 둠 - A Survey and Taxonomy of Latency Compensation Techniques for Network Computer Games (ACM Computing Surveys, 2022) ACM
“코너 뒤에서 맞음(shot around the corner)” 현상, 상용 FPS의 되감기 한도, 맞는 쪽이 안전하면 되감지 않는 기법 제안 - Source SDK 2013: player_lagcompensation.cpp Valve
Source 엔진의 되감기 상한 sv_maxunlag 기본 1초(최대 1초), sv_showlagcompensation은 되감은 판정 박스를 화면에 표시
함께 보면 좋은 원인
같은 층: 동기화 설계
같은 증상(씹힘·롤백)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기