게임 렉 백서 › 일부에게만 생기는 문제
채널·인스턴스·페이즈 차이 Different channel / instance / phase
원인 ID pt-phase · 주 담당 게임개발팀·서버 개발 · 함께 게임개발팀·클라이언트 개발
그림과 실험이 있는 원본 카드로 열기 →
두 캐릭터가 다른 채널이나 인스턴스에 있거나, 퀘스트 진행도에 따라 보이는 NPC가 다른 “페이즈”에 있으면 서로 다른 세상을 봅니다.
왜 두 번째 캐릭터가 다른 채널로 배정되거나 퀘스트 단계가 다름 → 그러면 서버가 그 캐릭터에게는 해당 NPC를 보내지 않음(정상) → 화면에서는 한쪽에만 NPC가 없음. 버그처럼 보이지만 설계대로
- 증상
- 안 보임·유령 개체
- 요인
- 손실
- 누가 겪나
- 같은 PC의 한쪽 클라만, 나만
- 언제
- 항상, 접속·점검 직후
- 담당
- 주 담당 게임개발팀·서버 개발 · 함께 게임개발팀·클라이언트 개발
- 게임개발팀 할 일
- 서버: 채널·페이즈 정보를 클라이언트에 보내기, QA 체크리스트에 “두 캐릭터의 채널·퀘스트 단계 확인” 추가. 클라이언트: 채널·페이즈를 화면에 표시.
- 그래프에서는
- 일부만 높음 · 클라이언트별 주변 개체 수, 채널·페이즈
- 확인할 곳
- 두 캐릭터의 채널 번호와 해당 퀘스트 진행 단계를 게임 화면에서 비교하고 같은 채널·단계로 맞춰 다시 봄. 서버 개체 전송 로그가 있으면 그 NPC를 그 캐릭터에게 보내지 않은 이유(채널·페이즈)를 확인
- 이러면 맞음
- 두 캐릭터의 채널이나 퀘스트 단계가 다르고 같게 맞추면 NPC가 보임
- 이러면 아님
- 채널·단계가 같은데도 한쪽에만 없으면 로딩 중 도착한 등장 알림 폐기, 입장 직후 몰리는 등장 정보 유실, 시야 등록 순서 꼬임 쪽
- 확인 수단
- 유저 쪽 환경에서 확인
- 더 알아보기
- 퀘스트 진행을 계정 단위로 저장하는지 캐릭터 단위로 저장하는지도 확인합니다. 같은 계정의 두 캐릭터라면 한쪽의 진행이 다른 쪽의 페이즈를 바꿀 수 있습니다.
출처
- Actor Relevancy in Unreal Engine Epic Games
서버는 연결마다 관련 있는(relevant) 액터만 복제하고 관련 없는 액터는 보내지 않음 - Object visibility (Netcode for GameObjects 2.5) Unity
CheckObjectVisibility로 클라이언트별로 보이는 개체를 정하고, 숨긴 개체는 그 클라이언트에 전송하지 않음
함께 보면 좋은 원인
같은 층: 일부에게만 생기는 문제
같은 증상(안 보임·유령 개체)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기