This is an annoying side effect of the fact that the default sound script is located inside the Character and therefore does not exist when the Character doesn’t exist. Thus, when the Character is despawned, you will eventually exhaust the remote’s internal queue.
You can (temporarily) fix this by adding a localscript to StarterPlayer->StarterPlayerScripts with the following code:
local useSoundDispatcher = UserSettings():IsUserFeatureEnabled("UserUseSoundDispatcher")
local Event
if useSoundDispatcher then
Event = game:GetService("ReplicatedStorage"):WaitForChild("DefaultSoundEvents"):WaitForChild("DefaultServerSoundEvent")
else
Event = game:GetService("ReplicatedStorage"):WaitForChild("DefaultServerSoundEvent")
end
Event.OnClientEvent:Connect(function() end)
Note that this isn’t expected to work indefinitely. Several months ago Roblox added the entire “SoundDispatcher” thing without warning, which means you now have to check 2 locations instead of just 1 for the remote.
I wonder if this could be fixed internally by putting the default sound script under StarterPlayerScripts instead of under the actual Character.