DUXPLIMA Documentation

Settings

The fifteen config files, persistence, global counters, and the folder layout.

The config files

FileHolds
Settings.luauThe switches on this page
Pets.luauEvery pet
Rarities.luauRarity colours and tiles
Variants.luauGolden, Rainbow, Huge and their multipliers
Gradients.luauNamed colour blends
Eggs.luauEggs and their pools
EggAnim.luauThe open animation timings
Merge.luauMerge recipes
IndexGoals.luauCollection milestones
Follow.luauHow pets trail behind the player
Breakables.luauBreakable types
Zones.luauWhich breakables fill which zone
Machines.luauWorld objects that open panels
Monetization.luauGamepass ids and luck tiers
Sounds.luauInterface sounds

Settings

FieldDefaultWhat it does
DebugtrueExtra [uxrPS] lines in Output
StudioMode"auto"Whether pets save
Currency{ Key = "Coins", Start = 100000 }The main currency
Currencies{ Gems = { Start = 500 } }Extra currencies
CurrencyUIEnabled, showing Coins and GemsThe corner boxes
PriceIconsThree idsIcons per currency, plus Robux
MaxEquipped8Base equip cap
BackpackSize500Base inventory cap
PassesTwo entriesGamepasses granting extra slots
PetStacktrueGroup identical pets in the inventory
AutoEquipBoth trueEquip new pets automatically
BoostMode"sum"How equipped power combines
HatchCooldown0.5Minimum seconds between opens
DefaultLuck1Luck with no gamepass
GlobalEnabled, 15-second flushServer-wide counters
AnnounceEnabled, globalRare hatch messages
Trade{ ConfirmSeconds = 5 }The trade countdown
Debug ships as true

Turn it off before release. Hatching, damage and syncing all log while it is on, and a busy server produces a great deal of output.

Persistence

Profiles go to the DataStore uxrPS_Profile_v1 and hold the pets, the equipped list, the index and the purchase records.

StudioMode = "auto",
ValueBehaviour
"auto"Saves in a published game, fresh slate every Studio run
falseAlways saves, including Studio. Needs API services enabled
trueNever saves
The comments in the file describe true and false the other way around

The shipped comment reads true = never saves and false = always saves, which sounds inverted but matches the code exactly: true forces the fresh-slate mode, and false forces real saving.

"auto" is what you want while building, and what ships.

A profile whose load failed is marked as not loaded and is never saved over, so a DataStore outage cannot wipe somebody's collection.

Every pet has an internal id from a per-profile counter, which is why a traded pet arrives with a new one.

Global counters

Global = { Enabled = true, FlushInterval = 15 },

Two server-wide numbers, shared across every server through a DataStore and MessagingService:

CounterTracks
Total hatchedHow many pets have ever been opened
Per-pet existenceHow many of each species and variant exist right now

The existence count is what lets the interface show how rare a pet actually is, rather than only its odds. It is incremented on hatch and on merge output, and decremented on delete and on merge input.

FlushInterval is how often pending changes are written and broadcast. Lower means fresher numbers and more DataStore traffic; 15 seconds is a sensible middle.

Enabled = false turns both off, and the interface simply shows nothing for them.

The folder layout

The bootstrap builds this on every server start:

LocationContains
ServerScriptService/uxrPetSystemThe package. The only design-time copy
ReplicatedStorage/uxrPetSystemShared/, plus copies of the pet and egg models
ServerStorage/uxrPetSystemStorage/, the authoritative models
Workspace/uxrPetSystemWorkspaceSpawned for pets, Breakables, and your Zones
StarterGui/uxrPetSystemGuiThe interface
Only the ServerScriptService copy survives a restart

Every other location is wiped and recreated when the server starts. A model dropped into ServerStorage/uxrPetSystem at runtime, or a UI change made in StarterGui, is gone on the next run.

Edit the package's own copies inside ServerScriptService. That is the source of truth.

The exception is your Zones folder in the workspace, which you build yourself and which is left alone.

The interface

uxrPetSystemGui in StarterGui, with panels for the inventory, the index, the egg board, merging, trading and the currency display.

Restyle it in ServerScriptService/uxrPetSystem/Client/uxrPetSystemGui. The bootstrap copies it into StarterGui at run time, and only if a same-named ScreenGui is not already there.

Where to start

You wantEdit
A new petConfig/Pets.luau and a model in Storage/Pets
A new eggConfig/Eggs.luau and a tagged platform
Different oddsThe pool weights in Config/Eggs.luau
A harder coin zoneConfig/Breakables.luau and Config/Zones.luau
Bigger squadsMaxEquipped, or the Passes list
Different pet movementConfig/Follow.luau
Your own economyThe economy adapter. See Currencies and gamepasses
To hook it into your gameThe server API