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

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

몬스터 제어 권한이 느린 클라이언트에 있음 Monster movement delegated to a player client

원인 ID pt-mob-control · 주 담당 게임개발팀·서버 개발

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

서버 부하를 줄이려고 몬스터 이동 계산을 근처 플레이어 한 명의 클라이언트에 맡기는 게임이 있습니다. 그 사람 회선이 나쁘면 그 몬스터가 모두의 화면에서 이상하게 움직입니다.

왜 서버가 몬스터 이동 계산을 가장 가까운(또는 먼저 온) 플레이어의 클라이언트에 맡김 → 그러면 맡은 사람의 결과 보고가 늦거나 몰려서 서버에 도착 → 화면에서는 그 몬스터만 주변 모두의 화면에서 멈칫하다 순간이동. 맡은 사람 본인 화면에서는 멀쩡

증상
순간이동, 뚝뚝 끊김, 몰아치기
요인
지터, 손실
누가 겪나
특정 캐릭터만 이상해 보임, 특정 장소·채널
언제
항상, 가끔 무작위로
담당
주 담당 게임개발팀·서버 개발
게임개발팀 할 일
제어 권한을 회선이 좋은 사람에게 넘기기(핑·손실 기준), 보고가 끊기면 서버가 즉시 회수, 보스처럼 중요한 몬스터는 서버가 직접 계산.
그래프에서는
일부만 높음 · 몬스터별 위치 보고 간격(제어 권한을 가진 클라이언트별)
확인할 곳
서버에 몬스터마다 제어 권한을 가진 클라이언트와 그 클라이언트의 보고 간격, RTT, 손실을 남김. 서버 쪽 패킷 캡처에서 그 클라이언트가 보낸 패킷의 도착 간격도 볼 수 있음
이러면 맞음
이상하게 움직이는 몬스터의 제어 권한이 모두 같은 한 사람에게 있고 그 사람의 보고 간격이 들쭉날쭉하거나 끊기며 권한을 다른 사람에게 넘기면 바로 정상
이러면 아님
서버가 직접 계산하는 몬스터도 똑같이 튀면 서버 틱 지연이나 보는 사람 쪽 회선. 권한을 옮겨도 계속 튀면 명령 동기화의 경로 계산 불일치
확인 수단
게임 서버·클라이언트의 로그·지표가 필요
더 알아보기
맡은 사람은 멀쩡하다고 느끼므로 제보는 “몬스터가 이상하다”로만 들어옵니다. 한 사람만 빼고 모두가 같은 몬스터를 이상하게 본다면, 그 몬스터의 제어 권한을 누가 가졌는지부터 확인합니다.

출처

  1. Authority (Netcode for GameObjects 2.5) Unity
    분산 권한 모델에서는 게임 인스턴스(클라이언트)마다 일부 네트워크 개체의 권한을 맡아 그 개체를 계산
  2. Distributed authority topologies (Netcode for GameObjects 2.5) Unity
    권한이 클라이언트에 나뉘면 단일 시뮬레이션이 없고 치팅에 취약

함께 보면 좋은 원인

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

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

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