SubSystem only on server

Correct, but technically you can destroy it (see FSubsystemCollectionBase::Deinitialize for reference). A neat approach was posted by siliex#1214 in Slackers:

bool UMyServerWorldSubsystem::ShouldCreateSubsystem(UObject* Outer) const
{
    if (!Super::ShouldCreateSubsystem(Outer))
    {
        return false;
    }

    UWorld* World = Cast<UWorld>(Outer);
    return World->GetNetMode() < NM_Client; // will be created in standalone, dedicated servers, and listen servers
}

So he doesn’t destroy anything, but simply create wherever needed. This 100% works great for a WorldSubsystem, though as stated in the link I sent before, this could be a problem for other types of subsystems.

1 Like