한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

게임 렉 백서 › 일부에게만 생기는 문제

도착 즉시 처리하는 서버의 몰아치기 Event-driven processing of bursty inputs

원인 ID pt-event-server · 주 담당 게임개발팀·서버 개발 · 함께 게임개발팀·클라이언트 개발

그림과 실험이 있는 원본 카드로 열기 →

패킷이 도착하는 대로 바로 처리하고 알리는 서버에서는, 느린 사람의 몰려 온 행동이 연달아 즉시 실행됩니다.

왜 느린 사람의 스킬·이동 요청이 몰려서 도착 → 그러면 서버가 받는 즉시 순서대로 실행하고 바로 모두에게 알림 → 화면에서는 다른 사람 눈에 그 사람이 스킬 여러 개를 한순간에 쓰거나 빨리 감기처럼 움직임

증상
몰아치기
요인
지터
누가 겪나
특정 캐릭터만 이상해 보임
언제
특정 행동을 할 때, 항상
담당
주 담당 게임개발팀·서버 개발 · 함께 게임개발팀·클라이언트 개발
게임개발팀 할 일
서버: 행동에 붙은 입력 시각의 간격대로 실행(시각은 허용 범위 안에서만 인정), 또는 몰려 온 행동을 거절하지 말고 최소 간격(공통 쿨다운)만큼 벌려 차례로 실행, 도착 시각만 보고 쿨다운 검사하지 않기(정상 입력이 씹힘). 클라이언트: 행동에 입력 시각을 붙여 보내기.
그래프에서는
일부만 높음 · 플레이어별 행동 실행 간격
확인할 곳
서버 로그에 플레이어별 행동의 도착 시각, 실행 시각, 클라이언트가 붙인 입력 시각(있다면)을 남겨 실행 간격과 입력 간격을 비교. 서버 쪽 패킷 캡처에서 그 유저 패킷의 도착 간격도 함께 봄
이러면 맞음
입력 간격은 정상인데 서버 도착·실행 간격이 몇 ms로 뭉쳐 있고 뭉친 순간이 다른 사람들의 몰아치기 제보 시각과 겹침
이러면 아님
입력 시각 간격부터 뭉쳐 있으면 클라이언트나 매크로 쪽. 서버 실행 간격은 고른데 남 화면에서만 뭉쳐 보이면 보는 사람의 회선
확인 수단
게임 서버·클라이언트의 로그·지표가 필요

출처

  1. Understanding Networked Movement in the Character Movement Component for Unreal Engine Epic Games
    서버는 ServerMove를 받을 때마다 이동을 계산하고 직전 이동과의 타임스탬프 차이로 시간 간격을 정함. 서버 시각과 차이가 너무 크면 그 이동을 버림
  2. Deterministic Lockstep Gaffer On Games
    도착하는 대로 입력을 적용하면 60Hz로 보내도 간격이 고르지 않아 결과가 들쭉날쭉함

함께 보면 좋은 원인

같은 층: 일부에게만 생기는 문제

같은 증상(몰아치기)의 다른 층 원인

그림과 실험이 있는 원본 카드 보기