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
HISM
to 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
HISM
does 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
HISM
for surfaces that interact with players in a multiplayer context? I thought that since the floor is mostly decorative (just blocking movement),HISM
would be fine, but it seems like the engine still attempts to involve network logic. - Should I consider using
UStaticMeshComponent
for the floor/platforms instead ofHISM
? My understanding is thatUStaticMeshComponent
handles 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
HISM
a 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 useHISM
for efficient rendering without duplicating components for collisions?