플레이어가 만든 맵에는 이동할 수 있는 쿠킹된 레벨이 없고, 지오메트리는 복제하기엔 너무 큽니다. 제가 쉬핑된 UE5 프로젝트에서 이를 모든 클라이언트에 올린 방법은 다음과 같습니다. 각 조각을 ID와 트랜스폼으로 저장하고, 저장 바이트를 RPC가 아니라 항상 관련(Always Relevant) 액터의 프로퍼티로 복제한 뒤, 각 머신이 자기 쿠킹된 콘텐츠로 레벨을 다시 빌드하게 하는 거죠. 압축 헤더, 크기 상한과 맵이 이를 초과했을 때의 대처, 보류 상태가 실패가 아닌 이유, 호스트와 일치하지 않는 레벨을 클라이언트가 빌드하지 못하게 막는 두 개의 해시, 그리고 제가 가장 크게 당한 함정까지 다룹니다. 조각을 Movable로 남겨두면 클라이언트가 하나를 이동 베이스로 저장해 버리는데, 서버가 이를 해석할 수 없어 플레이어가 뒤로 끌려가는 문제입니다. 플러그인 없이 순수 C++과 엔진 복제로 해결합니다.
https://dev.epicgames.com/community/learning/tutorials/ZdlGv/unreal-engine-83a7d2