Ride a PetDocumentation← Portfolio

#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

LocationContents
ReplicatedStorage.RidePetShared.CatalogAll balance data and shared helpers (eggs, pets, prices, curves)
ReplicatedStorage.RidePetShared.ConfigSetup: admins, sounds, loading screen, Robux products and gamepasses
ReplicatedStorage.RidePetRemotesAction (RemoteFunction), StateChanged and Notice (RemoteEvents)
ReplicatedStorage.RidePetDisplayClient-visible copies of pet, egg and food models used by the UI and the world
ServerStorage.RidePetAssetsSource models: Eggs (with the prompt attachments), Pets
ServerScriptService.RidePetServerGameplay, Api, PetSystem, EggSystem, WeatherSystem, AdminSystem, DisplayModels
ServerScriptService.PlotRuntimePlot gate handling and the travel-to-plot remote
StarterPlayer.StarterPlayerScripts.RidePetUIEvery client module (HUD, windows, world rendering)
ReplicatedFirst.LoadingScreenThe loading screen
Workspace.RidePetEggSpawnsThe egg spawn points (see Eggs & the Map)
Workspace.Base1 … Base6The six plots (Region, Spawn, upgrade sign)
StarterGuiThe 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:

WhatSetting
Egg luck, rarity, hatch time, weightCatalog.Eggs
How many of each egg are on the mapCatalog.EggMapCounts
Egg spawn tiersCatalog.EggTiers
Odds of Black Hole / Solaris / CherubCatalog.EggTopGroupWeights
Pet odds and incomeCatalog.Pets ({name, 1-in-N odds, income per second, speed})
Pet speed curveCatalog.walkSpeed, Catalog.baseSpeed, Catalog.jumpHeight
Hatch Luck price and limitCatalog.LuckUpgradeBasePrice, Catalog.LuckMax
Food, radars (and the radar duration)Catalog.Food, Catalog.Radars, Catalog.RadarSeconds
Rebirth costs and pet requirementsCatalog.Rebirths
Index rewardsCatalog.IndexRewards
Slots, inventory sizeCatalog.BasePetSlots, Catalog.MaxEggs, Catalog.MaxPets
Carry time rulesCatalog.EggCarrySeconds, Catalog.EggCarryBaseSeconds, Catalog.EggPathFactor
Map resetCatalog.MapEggRefreshSeconds
Offline incomeCatalog.OfflineHoursCap, Catalog.OfflineIncomeFraction
Who is an adminConfig.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.