Un mapa construido por jugadores no tiene ningún nivel cocinado al que viajar, y su geometría es demasiado grande para replicarse. Así fue como logré poner uno en cada cliente en un proyecto de UE5 ya publicado: guarda cada pieza como un ID y una transformación, replica los bytes del guardado como una propiedad en un actor siempre relevante en lugar de un RPC, y deja que cada máquina reconstruya el nivel desde su propio contenido cocinado. Cubre el encabezado de compresión, el límite máximo de tamaño y qué hacer cuando un mapa lo supera, por qué un estado pendiente no es un fallo, los dos hashes que impiden que un cliente construya un nivel que no coincida con el anfitrión y la trampa que más me costó: dejar piezas como movibles hace que el cliente almacene una como base de movimiento, algo que el servidor no puede resolver, y el jugador termina siendo jalado hacia atrás. C++ puro y replicación del motor, sin plugin.
https://dev.epicgames.com/community/learning/tutorials/ryomw/unreal-engine-enviar-un-mapa-construido-por-jugadores-a-otros-jugadores-sin-enviar-un-archivo