Hi, I’m developing a multiplayer game where I’m using HierarchicalInstancedStaticMeshComponent (HISM) to represent large numbers of static meshes for efficiency (about 5000 platforms sized 1500x1500). Specifically, I’m using HISM to generate the platforms (and potentially other decorative objects like trees and stones) across my game world. The meshes are primarily decorative and are supposed to block player movement but do not need to handle complex interactions, physics, or destruction.
However, I’m encountering persistent warnings related to network replication and physics interactions. These warnings occur when my replicated player interacts with the HISM-generated floor or platforms. Here’s the warning I’m seeing:
Warning LogNetPackageMap FNetGUIDCache::SupportsObject: HierarchicalInstancedStaticMeshComponent /Game/Maps/(...).HierarchicalInstancedStaticMeshComponent_0 NOT Supported.
Context:
- I’m using
HISMto efficiently render thousands of instances (around 5000 meshes which I can group in about 350 HISM) of platform meshes and much more if we add trees, rocks and other decoratives. These surfaces block player movement but have no other interactions. - The error occurs when the player steps on or interacts with the surfaces.
- I know that
HISMdoes not support replication, but I’m confused as to why Unreal Engine is trying to involve network-related interactions for the floor, which should be non-interactive other than blocking movement.
Here’s how I’m currently handling collision and interaction for the HISM components:
void MyPlatformGroup::ActivateGroupCollisions()
{
if (HasAuthority())
{
HISM_Asset->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
HISM_Asset->SetCollisionResponseToAllChannels(ECR_Block);
HISM_Asset->SetCollisionResponseToChannel(ECC_Pawn, ECR_Block);
}
else
{
HISM_Asset->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
HISM_Asset->SetCollisionResponseToChannel(ECC_Pawn, ECR_Block);
}
HISM_Asset->SetSimulatePhysics(false);
HISM_Asset->SetIsReplicated(false);
}
The Problem:
Even though I have disabled physics and replication for the HISM component, I still receive the error whenever my player steps on the HISM-generated floor or platform. It appears that Unreal Engine is attempting to resolve some network interaction between the replicated player character and the non-replicated HISM.
Questions:
- Is it inherently problematic to use
HISMfor surfaces that interact with players in a multiplayer context? I thought that since the floor is mostly decorative (just blocking movement),HISMwould be fine, but it seems like the engine still attempts to involve network logic. - Should I consider using
UStaticMeshComponentfor the floor/platforms instead ofHISM? My understanding is thatUStaticMeshComponenthandles network replication better, but I have around 5,000 instances of these meshes (it looks awesome). This would be a performance issue, right? - Is using a separate invisible proxy component for collisions in addition to the
HISMa good approach in a multiplayer game, or does it introduce unnecessary complexity and overhead? Is there a better way to handle this where I can still useHISMfor efficient rendering without duplicating components for collisions?