게임 렉 백서 › L8 소켓과 프로토콜
신뢰성 UDP 재전송 설정 Reliable-UDP tuning (KCP, ENet…)
원인 ID sk-reliable-udp · 주 담당 게임개발팀·서버 개발 · 함께 게임개발팀·클라이언트 개발
그림과 실험이 있는 원본 카드로 열기 →
UDP 위에 직접 만든 재전송 규칙이 너무 보수적이면 복구가 늦고 너무 공격적이면 회선을 더 막습니다.
왜 재전송 간격·횟수·윈도우 크기 설정이 회선과 맞지 않음 → 그러면 늦은 복구, 또는 중복 전송으로 혼잡 악화 → 화면에서는 스킬 씹힘, 몰아치기, 혼잡 시 더 심한 렉
- 증상
- 씹힘·롤백, 몰아치기
- 요인
- 손실, 지연
- 누가 겪나
- 나만
- 언제
- 가끔 무작위로
- 담당
- 주 담당 게임개발팀·서버 개발 · 함께 게임개발팀·클라이언트 개발
- 게임개발팀 할 일
- 서버: 측정한 왕복 시간 기반 재전송, 중요도별 채널 분리. 클라이언트: 서버와 같은 재전송·채널 설정 적용.
- 그래프에서는
- 가끔 무작위로 튐 · 신뢰성 UDP 재전송 비율, 게임 안 RTT
- 확인할 곳
- 쓰는 라이브러리가 연결마다 가진 통계(재전송 수, 추정 왕복 시간, 재전송 대기 시간)를 서버·클라이언트에서 남기고 같은 유저의 실제 회선 손실률(mtr로 잰 값)과 비교
- 이러면 맞음
- 재전송 비율이 실제 회선 손실률보다 몇 배 높으면 너무 공격적인 설정, 재전송 대기 시간이 측정 왕복 시간의 몇 배면 너무 보수적인 설정
- 이러면 아님
- 재전송 비율이 회선 손실률과 비슷하고 대기 시간이 왕복 시간에 맞으면 설정 문제가 아님. 회선 손실 자체를 봄
- 확인 수단
- 게임 서버·클라이언트의 로그·지표가 필요
출처
- RFC 8085: UDP Usage Guidelines IETF
재전송은 혼잡을 키울 수 있어 혼잡 제어 대상, 왕복 시간은 여러 측정의 평균(EWMA)으로 추정, 초기 1초, 타이머 만료 시 전송률 낮추기
함께 보면 좋은 원인
같은 층: L8 소켓과 프로토콜
같은 증상(씹힘·롤백)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기