Ep 58. Replicated Storage Wait for Child

We created the Intro gui inside of the Replicated First service during this episode.

Unfortunately, a mistake was made which would cause an extremely rare issue. It took me over 3 months since publishing this episode to even encounter it.

The issue occurs because the ReplicatedFirst/Intro local script requires the ReplicatedStorage/Client/State module script, which has a variable for the ReplicatedStorage/Remotes folder. Scripts executed from the Replicated First service can rarely be executed before all of the children from the Replicated Storage service are replicated.

We need to use the WaitForChild function when accessing children inside of the Replicated Storage service since scripts inside of the Replicated First service are executed before the children are replicated.

Solution

Update the first few lines of your ReplicatedStorage/Client/State module script.

ReplicatedStorage/Client/State.lua
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local Remotes = ReplicatedStorage:WaitForChild("Remotes")
local Template = require(ReplicatedStorage:WaitForChild("PlayerData"):WaitForChild("Template"))

local IsDataLoaded = false

local PlayerData: Template.PlayerData

local function LoadData()

...
Contents