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

게임 렉 백서 › 동기화 설계

클라이언트 권위 Client-authoritative results

원인 ID sy-client-auth · 주 담당 게임개발팀·서버 개발 · 함께 게임개발팀·클라이언트 개발

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

각자 자기 결과를 결정하면 내 화면은 쾌적하지만 다른 사람 화면과 결과가 어긋나고 해킹에 약합니다.

왜 위치·명중을 클라이언트가 정하고 서버는 전달만 → 그러면 두 사람이 서로 먼저 맞혔다고 주장, 서버는 검증 못 함 → 화면에서는 상대가 순간이동·벽 통과, “나는 맞혔는데 안 맞음”

증상
순간이동, 씹힘·롤백
요인
지연
누가 겪나
서버 전체
언제
항상
담당
주 담당 게임개발팀·서버 개발 · 함께 게임개발팀·클라이언트 개발
게임개발팀 할 일
서버: 중요한 결과(명중 등)는 직접 검증, 이동은 속도·거리 검사. 클라이언트: 서버가 거절·보정한 결과를 받으면 그 값으로 되돌리기.
그래프에서는
처음부터 늘 높음 · 불가능한 이동 속도·엇갈린 명중 보고 수
확인할 곳
서버에서 클라이언트가 보고한 위치·명중을 그대로 기록해 두고 이어진 위치 보고로 이동 속도를 계산해 최대 속도를 넘는 보고와 두 사람이 서로 먼저 맞혔다는 보고를 셈
이러면 맞음
서버가 보고를 검증 없이 다른 클라이언트에 전달하고 불가능한 속도나 서로 엇갈린 명중 보고가 패치·지역과 상관없이 꾸준히 나옴
이러면 아님
서버가 결과를 직접 계산하거나 검증하고 있으면 이 원인이 아님. 그때의 순간이동은 손실이나 보간 버퍼 쪽을 봄
확인 수단
게임 서버·클라이언트의 로그·지표가 필요

출처

  1. Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization (Yahn W. Bernier, GDC 2001) Valve
    클라이언트가 결과를 보고하는 방식은 클라이언트를 믿을 수 있을 때만 가능. 해킹 우려로 권위 서버를 둠
  2. Peeking into VALORANT's Netcode Riot Games
    서버 권위 모델: 서버는 클라이언트가 본 게임 상태를 절대 믿지 않음
  3. Distributed authority topologies (Netcode for GameObjects 2.5) Unity
    권한을 클라이언트에 나누면 치팅이 쉬워지고 모든 개체를 다스리는 단일 시뮬레이션이 없어짐

함께 보면 좋은 원인

같은 층: 동기화 설계

같은 증상(순간이동)의 다른 층 원인

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