Simulator & tycoon kit
Zone Progress: zones, unlocks and the zone strip
Zones in a row, like a race clicker: Common, Rare, Epic, Legend, Mythic. Players unlock them in order, the HUD's zone strip shows where they are, and tapping a zone teleports them there. Its id in GameData is zone_progress.
Turn it on#
- On the website, switch on Zone Progress in your design's Extras panel (Data Saving comes on too), then export and install. If your design has a zone strip, the zone list starts with its names and colours.
- In Studio, put an anchored part where each zone starts and name it exactly like the zone: a part called
Rarefor the Rare zone. Teleports land on it, and the strip uses it to know which zone a player is in. - Open ServerScriptService > BloxGame > GameData and find
GameData.Features.zone_progress. Check the zone list (below). - Press Play. Earn enough to open the next zone, or tap a tile on the strip.
The zone list#
The zones go in zones, first to last, one { } per zone:
GameData.Features.zone_progress
zones = {
{ name = "Common", color = "#B0B0B0", unlock = "free",
stat = "", amount = 0, currency = "coins", spawn = "" },
{ name = "Rare", color = "#3FA7FF", unlock = "reach",
stat = "", amount = 1000, currency = "coins", spawn = "" },
{ name = "Epic", color = "#A64DFF", unlock = "buy",
stat = "", amount = 25000, currency = "coins", spawn = "" },
{ name = "Legend", color = "#FFB319", unlock = "reach",
stat = "rebirths", amount = 3, currency = "coins", spawn = "LegendStart" },
},| Field | What it means |
|---|---|
name | The zone's name, used in toasts ("New zone unlocked: Rare!"). |
color | Its colour, as "#RRGGBB". |
unlock | "free": open from the start (the first zone always is). "reach": opens by itself once stat reaches amount. "buy": the player taps its tile and pays amount of currency. |
stat | What a "reach" zone counts: a currency id ("coins"), a leaderstat, a player attribute, or "rebirths", "level", "wins", "playtime". Empty = the currency below. |
amount | The amount to reach, or the price. |
currency | The price currency: a currency id from GameData.Currencies. |
spawn | The name of the part in Workspace where the zone starts. Empty = a part named like the zone. |
- Zones open in order: a zone never opens before the ones before it.
- Once open, a zone stays open, even if the player spends the cash later. It's saved.
- "Reach" zones are checked every second, and right after a rebirth, a level up or a win.
Other settings#
| Setting | What it means | Starts as |
|---|---|---|
stripElement | The id of the HUD element that shows the zones. | "ZoneStrip" |
spawnAtBest | true: players respawn in the furthest zone they unlocked. | false |
cooldownSeconds | Seconds between two zone teleports. | 3 |
announce | Show a toast when a new zone unlocks. | true |
The zone strip#
- The strip is the design element
ZoneStrip, with one tile per zone (Zone1,Zone2...). The player's avatar head sits on the zone they're in, and locked zones get a lock. - Tapping a tile teleports to that zone if it's open, or buys it if it's the next "buy" zone. Any design button with the id
Zone3does the same for zone 3. - The zone a player is in is the furthest zone start (spawn part) they've walked past. With no spawn parts, the strip shows the furthest zone they unlocked.
- The tiles keep your design's names and colours. Renamed a zone in GameData? Rename its tile too, in
GameData.UIunderButtons. - No strip in your design? Everything else still works.
For your own scripts: the player attributes BloxGame_Zone (the zone they're in), BloxGame_ZoneName and BloxGame_ZoneBest (the furthest unlocked), and the leaderboard stat zone.
Troubleshooting#
- "That zone isn't ready yet." The zone has no spawn part. Output says
zone "Rare" has no spawn part. Add a part named like the zone, or put the part's name inspawn. - "Unlock the zones before it first!" Zones open in order. Open the one before it first.
- A "reach" zone never opens: check that
statis spelled like the currency id, leaderstat or attribute, and thatamountisn't too high. - "Wait a moment before teleporting again." That's
cooldownSeconds. - The strip never changes:
stripElementmust match the strip's id in your design (ZoneStrip).