게임 렉 백서 › 동기화 설계
호스트(방장) 구조 Listen server / host advantage
원인 ID sy-host · 주 담당 게임개발팀·서버 개발 · 함께 게임개발팀·클라이언트 개발, 인프라팀·서버 인프라
그림과 실험이 있는 원본 카드로 열기 →
한 플레이어의 PC가 서버 역할을 하면, 그 사람의 회선과 PC 성능이 모두의 체감을 정합니다.
왜 방장 PC가 서버 역할(P2P, 리슨 서버) → 그러면 방장 회선이나 PC가 느리면 모두에게 전파, 방장은 핑 0 → 화면에서는 방장만 유리, 방장이 나가면 모두 멈춤·접속 끊김
- 증상
- 뚝뚝 끊김, 멈춤, 접속 끊김
- 요인
- 지연, 정체
- 누가 겪나
- 특정 장소·채널
- 언제
- 가끔 무작위로
- 담당
- 주 담당 게임개발팀·서버 개발 · 함께 게임개발팀·클라이언트 개발, 인프라팀·서버 인프라
- 게임개발팀 할 일
- 서버: 판정을 맡는 전용 서버로 전환, 그 전까지는 매칭 때 회선·PC가 좋은 사람을 방장으로 고르기. 클라이언트: 호스트 이전(마이그레이션) 지원, 매칭 때 다른 참가자와의 핑·업로드 속도·PC 성능을 측정해 보내기.
- 인프라팀 할 일
- 전용 서버용 서버 장비·인스턴스 확보, 유저가 많은 지역 가까이에 배치.
- 그래프에서는
- 일부만 높음 · 방장별 렉 제보·접속 끊김 수
- 확인할 곳
- 매치 로그에 방장(호스트)의 업로드 속도, 참가자별 방장과의 RTT, 방장 PC의 프레임 시간, 방장이 나간 시각을 남기고 렉·접속 끊김 제보를 방장별로 묶어 봄. 유저도 같은 사람들끼리 방장만 바꿔 다시 해 보면 확인할 수 있음
- 이러면 맞음
- 렉·접속 끊김이 특정 방장의 방에 몰리고 그 방장의 업로드 속도가 낮거나 프레임 시간이 길 때 참가자 모두가 함께 나빠지며, 호스트 이전이 없으면 방장이 나간 순간 모두의 접속이 끊김
- 이러면 아님
- 방장과 상관없이 같은 지역 참가자만 나쁘면 회선·경로 문제. 전용 서버 구조라면 이 원인이 아님
- 확인 수단
- 게임 서버·클라이언트의 로그·지표가 필요
출처
- Networking Overview for Unreal Engine Epic Games
리슨 서버의 호스트는 다른 클라이언트보다 유리하고 서버와 렌더링을 함께 맡아 부하가 큼 - Distributed authority topologies (Netcode for GameObjects 2.5) Unity
세션 소유자가 나가면 남은 클라이언트 중에서 새 소유자를 자동 선출 - A Survey and Taxonomy of Latency Compensation Techniques for Network Computer Games (ACM Computing Surveys, 2022) ACM
P2P 게임도 호스트가 서버 역할을 겸하는 클라이언트-서버 구조로 볼 수 있음
함께 보면 좋은 원인
같은 층: 동기화 설계
같은 증상(뚝뚝 끊김)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기