게임 렉 백서 › 일부에게만 생기는 문제
로딩 중 도착한 등장 알림 폐기 Spawn messages dropped before the client is ready
원인 ID pt-loading-drop · 주 담당 게임개발팀·클라이언트 개발 · 함께 게임개발팀·서버 개발
그림과 실험이 있는 원본 카드로 열기 →
존에 들어가자마자 서버가 주변 NPC 등장 알림을 보내는데 클라이언트가 아직 맵을 불러오는 중이라 그 알림을 버립니다.
왜 서버가 입장 처리 직후 주변 개체 등장 알림을 발송 → 그러면 클라이언트는 로딩 중이라 메시지 핸들러가 아직 없어 알림을 버림 → 화면에서는 서버는 이미 보낸 것으로 처리해 다시 안 보냄. 시야를 벗어났다 오기 전까지 NPC가 안 보임
- 증상
- 안 보임·유령 개체
- 요인
- 손실
- 누가 겪나
- 같은 PC의 한쪽 클라만, 나만
- 언제
- 접속·점검 직후, 이동 중·지역 전환 때
- 담당
- 주 담당 게임개발팀·클라이언트 개발 · 함께 게임개발팀·서버 개발
- 게임개발팀 할 일
- 클라이언트: 로딩이 끝나면 “준비 완료” 보내기, 또는 로딩 중 받은 패킷을 보관했다가 처리. 서버: “준비 완료”를 받은 뒤에 주변 정보 전송.
- 수치 감각
- 같은 PC에서 두 클라이언트가 동시에 로딩하거나 로딩하는 쪽이 백그라운드 창이면, CPU·디스크를 나눠 쓰고 처리도 제한되어 그쪽 로딩이 몇 배 길어질 수 있습니다. 서버 입장 처리가 빨라져도 같은 버그가 드러납니다.
- 그래프에서는
- 일부만 높음 · 클라이언트별 로딩 시간, 로딩 중 버린 메시지 수
- 확인할 곳
- 클라이언트가 로딩 중 받아서 버린 메시지의 수·종류와 로딩 완료 시각을, 서버가 등장 알림을 보낸 시각과 비교. 같은 PC에서 두 클라이언트를 동시에 로딩하거나 로딩하는 쪽을 백그라운드 창으로 두면 재현하기 쉬움
- 이러면 맞음
- 안 보이는 NPC의 등장 알림을 서버는 보냈고 도착 시각이 로딩 완료 전이며, 그 시간에 버린 메시지 수가 늘어 있음. 로딩이 긴 쪽 클라이언트에서만 생김
- 이러면 아님
- 등장 알림이 로딩 완료 뒤에 도착했는데도 안 보이면 기준 스냅샷 유실이나 개체 ID 재사용 혼동. 서버가 그 NPC 알림을 아예 보내지 않았으면 시야 등록 순서 꼬임이나 채널·페이즈 차이
- 확인 수단
- 게임 서버·클라이언트의 로그·지표가 필요
출처
- NetworkConfig class (Netcode for GameObjects 2.5) Unity
SpawnTimeout: 아직 생성되지 않은 개체의 메시지는 보류했다가, 시간 안에 생성되지 않으면 버림 - Actor Relevancy in Unreal Engine Epic Games
관련성이 없어진 액터는 클라이언트에서 지워지고 다시 관련되면 새로 복제
함께 보면 좋은 원인
같은 층: 일부에게만 생기는 문제
같은 증상(안 보임·유령 개체)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기