Core ConceptsIntermediate
Manual Character Spawning
Full control over character loading and StarterGui/StarterPack replication for games with custom respawn logic.
OwlOnSpawnReadyOwl.SpawnPlrCharacterAutoLoads
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Owl = require(ReplicatedStorage.OwlKnit.Owl)
-- > // Requires Players.CharacterAutoLoads = false in Player Settings (Players > properties)
local SpawnService = Owl.CreateService({ Name = "SpawnService" })
function SpawnService:OwlInit()
end
function SpawnService:OwlStart()
end
function SpawnService:OwlOnPlayerAdded(plr: Player)
-- > // Owl.SpawnPlr loads the character AND replicates StarterGui/StarterPack
Owl.SpawnPlr(plr)
end
function SpawnService:OwlOnSpawnReady(plr: Player, char: Model)
-- > // Fires once the character exists and the GUI has been replicated
print(("[SpawnService] %s is ready! Character: %s"):format(plr.Name, char.Name))
end
return SpawnServiceWhat's happening here
- With CharacterAutoLoads disabled, Roblox never spawns a character on its own Owl.SpawnPlr(plr) is what triggers it.
- OwlOnSpawnReady only fires in this manual-spawn mode with auto-load enabled, use OwlOnCharacterAdded instead.
- SpawnPlr also replicates StarterGui/StarterPack manually, since disabling auto-load skips Roblox's own replication for both.
Related docs