게임 렉 백서 › 일부에게만 생기는 문제
특정 통신사 사용자에게 몰리는 검증 오탐 Anti-cheat / movement validation false positives on bad ISPs
원인 ID pt-isp-validation · 주 담당 게임개발팀·서버 개발 · 함께 인프라팀·네트워크 인프라
그림과 실험이 있는 원본 카드로 열기 →
지터가 큰 회선을 쓰는 사람들은 입력이 몰려 도착해서 서버의 속도·쿨타임 검사에 자주 걸립니다.
왜 특정 통신사·지역 회선의 지터가 저녁에 커짐 → 그러면 몰려 도착한 정상 입력을 서버가 과속·쿨타임 위반으로 판단 → 화면에서는 그 통신사 사용자만 고무줄, 스킬 거절, 심하면 서버가 내보내 접속 끊김
- 증상
- 고무줄, 씹힘·롤백, 접속 끊김
- 요인
- 지터
- 누가 겪나
- 특정 지역·통신사, 나만
- 언제
- 저녁 피크 시간, 이동 중·지역 전환 때
- 담당
- 주 담당 게임개발팀·서버 개발 · 함께 인프라팀·네트워크 인프라
- 게임개발팀 할 일
- 검사는 몇 초에 걸친 누적 허용량으로, 회선 상태(핑·지터)를 참고해 기준 완화, 강제 종료 전 경고 단계, 플레이어별 입력 버퍼로 몰려 온 입력을 틱마다 고르게 나눠 오탐 자체를 줄이기.
- 인프라팀 할 일
- 통신사별 손실률·지터 분포를 시간대별로 확인해 게임팀에 공유, 해당 통신사 구간의 경로 점검(양방향 mtr), 필요하면 경로 변경·통신사 에스컬레이션.
- 그래프에서는
- 특정 시간대에만 높음 · 통신사(ASN)별 검증 거절·강제 종료 수, 통신사별 지터
- 확인할 곳
- 서버의 검증 거절·보정·강제 종료 로그에 접속 IP의 통신사(ASN)와 시각을 붙여 통신사·시간대별로 셈. 인프라팀은 같은 시간에 그 통신사 쪽으로 양방향 mtr을 돌려 지터·손실을 봄
- 이러면 맞음
- 거절·강제 종료가 특정 통신사에 몰리고 저녁에 늘며 같은 시간 그 통신사의 지터가 함께 높고 몇 초 단위로 합친 이동량은 규칙 안에 있음
- 이러면 아님
- 통신사와 상관없이 특정 계정만 반복되면 실제 치트 가능성. 모든 통신사에서 함께 늘면 서버 틱이 밀려 명령이 몰려 적용되는 서버 쪽 원인(틱 예산 초과)
- 확인 수단
- 게임 서버·클라이언트의 로그·지표가 필요
출처
- Source SDK 2013: player.cpp Valve
틱마다 쌓이는 명령 예산으로 과속을 막되, 더 엄격한 제한은 정상 유저에게도 뚝뚝 끊김을 만든다는 개발 주석 - RFC 2697: A Single Rate Three Color Marker IETF
토큰 버킷: 평균 속도와 허용 버스트 크기로 판정 - Understanding Networked Movement in the Character Movement Component for Unreal Engine Epic Games
클라이언트·서버 타임스탬프 차이가 크면 이동을 버리거나 시간 차이 해소 절차로 처리, 서버 시각으로 계산해 속도 핵 방지
함께 보면 좋은 원인
같은 층: 일부에게만 생기는 문제
같은 증상(고무줄)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기