게임 렉 백서 › 일부에게만 생기는 문제
시야 등록 순서 꼬임 Interest-management race on enter/leave
원인 ID pt-aoi-race · 주 담당 게임개발팀·서버 개발
그림과 실험이 있는 원본 카드로 열기 →
캐릭터가 시야 격자에 등록되는 순간과 NPC가 격자를 옮기는 순간이 겹치면, 그 NPC의 등장 알림이 누락될 수 있습니다.
왜 입장·채널 이동·순간이동 처리와 NPC 이동이 같은 순간에 겹침 → 그러면 “새로 보이게 된 개체” 계산에서 그 NPC가 빠짐 → 화면에서는 특정 NPC 몇 마리만 안 보이거나 이미 떠난 NPC가 남아 있음
- 증상
- 안 보임·유령 개체
- 요인
- 손실
- 누가 겪나
- 같은 PC의 한쪽 클라만, 나만
- 언제
- 이동 중·지역 전환 때, 가끔 무작위로
- 담당
- 주 담당 게임개발팀·서버 개발
- 게임개발팀 할 일
- 시야 갱신을 한 스레드·한 순서로 처리, 주기적으로 “보이는 목록” 전체를 다시 맞추기.
- 그래프에서는
- 가끔 무작위로 튐 · 서버 보이는 목록과 클라이언트 개체 목록의 차이 수
- 확인할 곳
- 서버에 시야 격자 등록, 개체의 셀 이동, 등장·퇴장 알림 발송을 틱 번호와 함께 남기고 주기적으로 서버의 “보이는 목록”과 클라이언트가 가진 목록을 비교
- 이러면 맞음
- 빠진 NPC가 그 캐릭터의 입장·순간이동 처리와 같은 틱에 셀을 옮겼고 그 NPC의 등장 알림 발송 기록이 없음
- 이러면 아님
- 등장 알림은 보냈는데 클라이언트가 못 받았거나 버렸으면 전달 쪽(입장 직후 몰리는 등장 정보 유실, 로딩 중 도착한 등장 알림 폐기). 늘 같은 NPC만 빠지면 페이즈나 표시 옵션 차이
- 확인 수단
- 게임 서버·클라이언트의 로그·지표가 필요
출처
- Replication Graph in Unreal Engine Epic Games
MMORPG 등은 월드를 격자로 나눠 셀마다 액터 목록을 두고 클라이언트가 있는 셀 기준으로 전송 - Actor Relevancy in Unreal Engine Epic Games
관련성은 연결마다 판단하고 관련 없어진 액터는 클라이언트에서 지워짐
함께 보면 좋은 원인
같은 층: 일부에게만 생기는 문제
같은 증상(안 보임·유령 개체)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기