#Troubleshooting
Start with the Output window. The bootstrap, zone tagger and guardian builder all print a one-line summary, and almost every failure in this place announces itself there.
#No nests or no prompts
- Look for
[SAE] Backend ready …in Output. If it never appears, a service failed to load — check the error above it. - Confirm
Workspace.EggNestandWorkspace.Eggsexist;EggSpawnServiceparents into those folders by name. - Confirm
ServerStorage.EggForge,EggSpecsandNestForgeare present. Models are built procedurally from those modules, so a missing forge means no nests.
#[SAE][Zone] No floor tile: …
The biome has no geometry that the tagger recognised. Either rename the floor parts to Map1…Map12, or make sure a tile satisfies the footprint test (X × Z ≥ 3000, Z ≥ 60, Y ≤ 10, positioned between Y −8 and 2). Gameplay still works because zones resolve from the X ranges, but props that look up SAE_ZoneId will not find their biome.
#A guardian does not wake up
- Only the big nest (
Config.Eggs.BIG_EGG_NEST_INDEX = 6) owns the guardian. Smaller nests have none by design. - The wake is delayed by
Config.Guardian.AWAKE_DELAY(1 s) and re-checked: the player must still be carrying that exact egg and be inside the zone. Config.Guardian.ONE_PER_ZONEmeans extra nests share the same guardian; if the count printed at startup looks wrong, the nest list is wrong.[SAE][Guardian] Brak Workspace.Map.SleepingParticlemeans the particle template is missing — the guardian still works, it just has no sleep effect.
#"Someone was faster."
The egg was already claimed. EggSpawnService.claim is atomic, so two players pressing the prompt on the same egg produce exactly this message for the loser. It is also the answer when the egg's state is neither nest nor dropped.
#Other pickup refusals
| Message | Cause |
|---|---|
Slow down. | The 1-second pickup cooldown, or a rate-limit flag |
You are stunned. | rt.stunnedUntil is still in the future (a trap or a catch) |
Get up first. | SAE_KnockedUntil — the character is still in the catch knockdown |
This zone requires … Speed. | Config.ZoneAccess.SPEED_GATE is on and the zone is above the player's Speed |
You are too far away. | Distance check against the egg's spawn position |
You can only carry 1 egg at a time. | Config.Eggs.MAX_CARRIED |
#The egg never delivers
Delivery is a volume test against Workspace.Spawn.SafeZone, sampled five times a second. If that part is renamed or resized, carrying an egg becomes a dead end and the chase never ends. Features.Base.FREE_PLACEMENT decides whether the egg becomes an inventory item or starts growing directly.
#A grow timer looks stuck
- Growth uses
os.time(), not a per-server timer:finishAtis an absolute unix timestamp. A server (or machine) with a skewed clock will look frozen until the timestamps catch up. GrowthService.MIN_GROW_SECONDS = 10floors everything, so a heavily boosted egg still needs ten seconds.- The first tutorial egg is forced to
Config.Tutorial.FIRST_EGG_GROW_SECONDS = 3.
#The hatch prompt is greyed out
The prompt only enables when GrowthService.isReady(entry) is true; the label above the egg switches from a countdown to READY! at the same moment. If the label already reads READY! but the prompt stays disabled, the entry and the model have drifted apart — check that the model still carries the SAE_GrowingUid attribute and that profile.growing[uid] still exists.
#Progress is not saved
- Run the admin command
datastore. It performs a real read/write test throughDataService.selfTest(). - In Studio, enable Game Settings → Security → Enable Studio Access to API Services. Without it profiles are in-memory only.
[SAE] Backend ready … persistence: falsein Output says the same thing at startup.- A brand-new field that never saves is usually missing from
reconcile()— old profiles do not receive it.
#Robux purchases do nothing
Config.Monetization is still full of id = 0 entries, so MonetizationService.isConfigured() returns false and the whole purchase path is disabled. See Trails & Shop for the checklist.
#Badges never award
Same story: all six entries in Features.Badges are 0.
#The treadmill skin does not change
TreadmillService.applySkin clones Workspace.Treadmills.Treadmill<index> onto the plot and looks for a part literally named TreadMill. Two warnings cover the usual causes:
Missing Workspace.Treadmills.Treadmill<n>— the template for that tier is absent.Base <n> has no treadmill part in Workspace - no Touched.— the plot has no belt, so snapping and training cannot work.
#Zones look wrong for one player
GuardianService.outOfBounds() and the startup zone summary are the fastest checks: if the authored geometry and Config.Zones[].xMin/xMax disagree, guardians will clamp into odd places and zone banners will fire at the wrong boundary.
#Guests see half-built models
Set ModelStreamingMode = Atomic on anything that spawns as a multi-part model in the world (nests, guardians and growing eggs already do). Without it a streaming client can receive the parts before the prompt or the attachments.
#Events never appear
- The Rift is disabled by
Config.Flags.Rift = false. - Day/night is on a 304.7-second cycle; use the
forceNighttest command instead of waiting. - Great Bloom and Angels & Demons are enabled in
Config.Flags, but their timing lives inConfig.EventsandFeatures. - The Dragon Egg only spawns while
BoostService.startAdminAbuseis running.
#Performance drops with several players
The expensive systems are pet roaming (Features.Base.PET_ROAMING), awake guardians, and growing-egg models. The stats admin command prints the live guardian count, and TestHarness/FeatureTests can exercise systems without a full session.