서버: TCP_NODELAY 켜기, 한 틱 동안의 메시지를 모아 한 번에 쓰기, 받는 쪽 지연 ACK를 끄는 방법(리눅스 TCP_QUICKACK은 잠깐만 유지, 윈도우는 PC마다 레지스트리 수정)은 게임이 확실히 통제할 수 없으니 기대지 않기. 클라이언트: TCP_NODELAY 켜기, 한 프레임 동안의 메시지를 모아 한 번에 쓰기.
수치 감각
지연 ACK는 리눅스가 보통 40ms(상황에 따라 최대 200ms)입니다. 윈도우는 예전 버전이 200ms였고 요즘 버전은 40ms입니다(윈도우 서버 2019 기본 템플릿 40ms). 지연 ACK는 받는 쪽 OS가 정하므로, 서버가 Nagle을 켠 채 메시지를 나눠 보내면 받는 PC에 따라 40~200ms씩 지연될 수 있습니다.
그래프에서는
처음부터 늘 높음 · 행동 응답 시간(게임 안 RTT)
확인할 곳
서버 쪽 패킷 캡처(tcpdump·Wireshark)에서 요청·응답 사이의 간격을 보고, 서버·클라이언트 코드가 TCP_NODELAY를 켜는지 확인
이러면 맞음
회선 핑은 낮은데 작은 패킷 사이에 40ms(윈도우 예전 버전은 200ms) 안팎의 공백이 반복되고, 그 공백은 상대의 ACK가 온 직후 끝남. TCP_NODELAY를 켜면 사라짐
이러면 아님
응답 간격이 회선 핑과 비슷하면 이 원인이 아님. 게임 서버가 응답을 늦게 만들면 서버 처리 쪽(“메시지 큐 적체”)