Steal An EggDocumentation← Portfolio

#Zones & Map

#How a zone is defined

Config.Zones is the single source of truth. Each entry carries an id, a display name, a play order, a Speed requirement, an X range that splits the world into strips, the guardian for that biome and an incomeBase used for index rewards and fallback pet income.

ZoneService.init tags world geometry with the SAE_ZoneId attribute so props can look up their biome. Floor parts named Map1…Map12 map by number; anything else is assigned by footprint (X * Z ≥ 3000, Z ≥ 60, Y ≤ 10) together with the X range. A biome with no tagged tile only produces a warning — zone lookups still work from the X ranges alone.

#ZoneSpeed requiredX rangeGuardianGuardian speedIncome base
1Forest048–168Chicken251
2Lake900168–287Swan326
3Desert10,000287–487Scorpion4035
4Jungle40,000487–688Tiger49200
5Snow170,000688–988Yeti581,200
6Volcano700,000988–1288Cerberus687,000
7Abyss Ocean2,500,0001288–1588Moby7940,000
8Prehistoric17,500,0001588–1938T-Rex91250,000
9Cosmic700,000,0001938–2388Cosmic Skeleton1041,500,000
10Cherry Blossom2,500,000,0002388–2938Oni Tiger1189,000,000
11Titan Temple7,000,000,0002938–3488Gorilla King13150,000,000
12Angels & Demons20,000,000,0003540–4090Angel & Demon142300,000,000

The world is bounded on the Z axis by Config.ZONE_Z_MIN = -66 and Config.ZONE_Z_MAX = 80. Points far outside that band resolve to no zone at all, which is how the safe area and the Rift arena stay "nowhere".

#Zone gates

Config.ZoneAccess.SPEED_GATE is false in this build. With it off, ZoneService.hasAccess always returns true, so nobody is pushed back and every zone teleport is allowed. Set it to true to enforce the Speed requirements: the checker then runs every 0.25 seconds, moves a player back to the highest zone they have unlocked (8-stud margin) and notifies with a four-second cooldown.

Teleporting is separate — it is blocked while carrying an egg or stunned, and a successful teleport drops the character at the biome centre ((xMin + xMax) / 2, Z between −66 and 80).

#One guardian per biome

Config.Guardian.ONE_PER_ZONE = true, so a biome builds a single guardian no matter how many nests it has. Its home is the big nest in that biome, clamped inside the zone with a ZONE_MARGIN of 5 studs, and it returns there at 75% speed when a chase ends.

Config.GuardianStats holds the walk speed used both by the NPC and by the "can I outrun it" maths. Speeds climb from 25 (Chicken) to 142 (Angel & Demon) — always below Config.Movement.MAX_WALK_SPEED of 150, which keeps the late biomes tense instead of impossible.

#Names, emoji and colour

Config.ZoneLook holds the short label, emoji and colour each biome uses on the HUD banner, the region banner and hatch announcements. Display names used in messages come from Config.Zones[].pl.

#Derived per-zone helpers

At the bottom of Config, a loop adds three computed fields to every zone:

  • guardianWalkSpeed — copied from Config.GuardianStats.
  • escapeSpeedReq — the Speed a carrier would need to outrun that guardian, from Config.EscapeSpeedFor(zoneId, 2.0).
  • maxCarryRatio — the heaviest egg weight ratio that still leaves room to escape.

These fields are informational in this build: EggCarryService.carryPenaltyFor returns 0, so carrying no longer slows a player down and the escape maths is not part of the live chase. Keep them consistent if you reintroduce a carry penalty.

#World layout

InstancePurpose
Workspace.SpawnSpawn pads plus SafeZone, the volume that delivers a carried egg and ends a chase
Workspace.Base1…Base7Player bases. Server capacity follows the number of bases — a join with no free base is kicked
Workspace.Map.Region1…Region12, AngelsMap, DemonsMap, OtherAuthored geometry per biome
Workspace.EggNest, Workspace.EggsRuntime nest and world-egg folders filled by EggSpawnService
Workspace.Pets, Workspace.Treadmills, Workspace.SellLootPlaced pets, treadmill parts, sell stall
Workspace.Holograms, Workspace.SpeedSigns, Workspace.SpecialRegionsLabels, zone signs and event trigger regions
Workspace.Leaderboard1, Workspace.NightWall, Workspace.DecorationsPhysical leaderboard, night wall, scenery

#Nests

Config.Eggs.NESTS_PER_ZONE is 6 and the last one in each biome is the big nest (BIG_EGG_NEST_INDEX = 6) that hosts the guardian. Nests are spread across 28–96% of the zone's X span at three Z offsets, kept clear of a 15×8×15 stud box, and hold EGGS_PER_NEST = 1 egg.

#Streaming

Nests, guardians and growing eggs are parented with ModelStreamingMode = Atomic when Workspace.StreamingEnabled is true, so a streaming client never receives half of a model. If you add models that spawn in the world, follow the same pattern.