Class ref is not passed to server within the struct in UE 4.19. Instead, the default value is passed to the server.
LogNetPackageMap: Warning: SanityCheckExport: CacheObject == NULL. NetGUID: 1, Object: /Game/BP_BaseActor.BP_BaseActor_C, Expected: BP_DerivedActor_C
LogNetPackageMap: Warning: SanityCheckExport: Name mismatch. NetGUID: 1, Object: /Game/BP_BaseActor.BP_BaseActor_C, Expected: BP_DerivedActor_C
LogNetPackageMap: Warning: SanityCheckExport: Outer mismatch. Object: /Game/BP_BaseActor.BP_BaseActor_C, NetGUID: 1, Current: /Game/BP_BaseActor, Expected: /Game/BP_DerivedActor
Open attached project in UE 4.18. Start in PIE window with 2 players. It will spawn a cube.
Open attached project in UE 4.19. Start in PIE window with 2 players. It will not spawn a cube, see description for log output
1. Create a bp class based on actor (BP_BaseActor).
2. Create another bp class based on BP_BaseActor (BP_DerivedActor).
3. Add a Cube or similar component to BP_DerivedActor.
4. Create a BP struct including a class reference to BP_BaseActor with default BP_BaseActor.
5. Create reliable Server RPC which spawns an actor. RPC takes struct as parameter and spawns the class specified in the struct.
6. Call server RPC on client (for example on custom controller with Has Authority Remote).
There's no existing public thread on this issue, so head over toAnswerHub just mention UE-57173 in the post.