#Setup & Structure
#Requirements
- Roblox Studio with Game Settings → Security → Enable Studio Access to API Services turned on if you want DataStore saving while testing (without it the game uses a temporary profile and prints a warning).
- Nothing else. There are no external packages and no
loadstring.
#Where things live
| Location | Contents |
|---|---|
ReplicatedStorage.RidePetShared.Catalog | All balance data and shared helpers (eggs, pets, prices, curves) |
ReplicatedStorage.RidePetShared.Config | Setup: admins, sounds, loading screen, Robux products and gamepasses |
ReplicatedStorage.RidePetRemotes | Action (RemoteFunction), StateChanged and Notice (RemoteEvents) |
ReplicatedStorage.RidePetDisplay | Client-visible copies of pet, egg and food models used by the UI and the world |
ServerStorage.RidePetAssets | Source models: Eggs (with the prompt attachments), Pets |
ServerScriptService.RidePetServer | Gameplay, Api, PetSystem, EggSystem, WeatherSystem, AdminSystem, DisplayModels |
ServerScriptService.PlotRuntime | Plot gate handling and the travel-to-plot remote |
StarterPlayer.StarterPlayerScripts.RidePetUI | Every client module (HUD, windows, world rendering) |
ReplicatedFirst.LoadingScreen | The loading screen |
Workspace.RidePetEggSpawns | The egg spawn points (see Eggs & the Map) |
Workspace.Base1 … Base6 | The six plots (Region, Spawn, upgrade sign) |
StarterGui | The windows designed in Studio: HUD, Shop, Rebirth, Index, Eggs, Pets, Food, Gears, EggsInWorld, Settings |
#How the pieces talk
Gameplay owns each player's profile and exposes it through Api. The other server scripts register their own actions in Api.handlers, and the single Action remote calls them as handler(player, profile, args). The client never sends state — only requests such as PlaceEggAt or BuyFood. After every action the server replies with a fresh snapshot, and the client modules redraw from State.data.
#Configuration
Admins, sounds, the loading screen and Robux products are set in Config — see Configuration. Balance numbers are below.
#Changing the balance
Everything a designer tunes is in Catalog:
| What | Setting |
|---|---|
| Egg luck, rarity, hatch time, weight | Catalog.Eggs |
| How many of each egg are on the map | Catalog.EggMapCounts |
| Egg spawn tiers | Catalog.EggTiers |
| Odds of Black Hole / Solaris / Cherub | Catalog.EggTopGroupWeights |
| Pet odds and income | Catalog.Pets ({name, 1-in-N odds, income per second, speed}) |
| Pet speed curve | Catalog.walkSpeed, Catalog.baseSpeed, Catalog.jumpHeight |
| Hatch Luck price and limit | Catalog.LuckUpgradeBasePrice, Catalog.LuckMax |
| Food, radars (and the radar duration) | Catalog.Food, Catalog.Radars, Catalog.RadarSeconds |
| Rebirth costs and pet requirements | Catalog.Rebirths |
| Index rewards | Catalog.IndexRewards |
| Slots, inventory size | Catalog.BasePetSlots, Catalog.MaxEggs, Catalog.MaxPets |
| Carry time rules | Catalog.EggCarrySeconds, Catalog.EggCarryBaseSeconds, Catalog.EggPathFactor |
| Map reset | Catalog.MapEggRefreshSeconds |
| Offline income | Catalog.OfflineHoursCap, Catalog.OfflineIncomeFraction |
| Who is an admin | Config.Admins |
#Startup check
Press Play and look at the Output window. A healthy start prints [RidePetUI] interface ready and nothing in red. In Studio you will always see the DataStore warning Cannot write to DataStore from studio … unless API access is enabled, followed by DataStore unavailable in Studio; using temporary profile — that is expected.
#World loading
Workspace.StreamingEnabled is off, so the whole map (around 18 000 parts) is sent to the player at join and nothing pops in later. The loading screen covers that time: it preloads the meshes and textures nearest to the spawn first and never takes longer than about 12 seconds; whatever is left keeps loading behind the game.