Roll For Pets
This is here for what it taught me, more than for the game. It's a live service with real players that I designed, built with AI tools, deployed on Cloudflare Workers and keep running. The game design, the odds, the economy, the pet roster and the writing are mine; nearly all of the code was written with Claude and ChatGPT, with me specifying, testing, deploying and fixing. Ask me which bits were which.
Roll For Pets is a multiplayer collecting game. You press ROLL, a strip of pets spins across the screen and lands on one, usually a Goldfish, very occasionally something almost nobody else on the server has. You keep everything you pull, earn coins for every pull, spend them on upgrades that make the next pulls better, and compare your collection with everyone else's. No combat, no levels, no story. It's the gambling loop with none of the money, and that's the whole point.
- Game Design
- Multiplayer
- Web App
- Server-Authoritative
- Live Chat
- Cloudflare Workers
What it taught me
- Working with the tools. Claude and ChatGPT will write plausible code for anything you ask. The work is in the asking: a spec precise enough that plausible turns into correct, one feature at a time, with a test for each piece before the next one goes on top.
- Token and cost sense. Every message spends tokens, and long chats burn them fastest while getting worse. I keep context small, give the model only the files that matter, and start a fresh conversation rather than argue with one that's lost the thread.
- Spotting hallucinations. Both models invent things: an API that doesn't exist, a setting that was renamed two versions ago, a confident explanation of a bug that isn't the bug. I treat confident code as untested, check the Cloudflare docs before trusting anything new, and reproduce a bug myself before accepting a fix for it.
- Security. Anything the browser can change, a player will change. Rolls, coins, trades and leaderboard scores are all decided on the server and the client only asks; logins are real accounts, not a name typed into a box. Don't trust the client is the rule I'd carry into any IT job.
- Game development. Odds, an economy with sinks and sources, and what a 1 in 93 million pet does to how people play. Balancing the numbers so it's still fun after the hundredth roll is design work, and it's the part no AI did for me.
- Building and deploying. Cloudflare Workers and the wrangler CLI, keeping secrets out of the code, and where multiplayer state lives. Deploying to a live game with players in it means small changes, watching the logs afterwards, and being able to put the previous version back. That's the part of this project that looks most like a job.
Play it
The core loop
- Roll.
- Get a pet, plus coins, and sometimes bonus goodies.
- Spend coins on upgrades.
- Roll faster, luckier and richer.
- Repeat until you pull something absurd, then post about it in chat.
Every roll takes a few seconds — a spinning animation that slows down and lands on your result. The animation isn't just decoration. You can buy it shorter, and until it finishes nobody else can see what you got. The reveal is yours first.
The pets
There are 49 pets spread across 17 rarity tiers: Common, Unusual, Uncommon, Superior, Rare, Mystic, Epic, Ancient, Legendary, Divine, Mythic, Celestial, Transcendent, Ethereal, Cosmic, Omnipotent and Singularity.
The bottom tiers are packed — seven Commons, five Uncommons — so early rolling gives you plenty of variety. The top tiers have exactly one pet each, and they are genuinely hard to reach.
- Ethereal
- Strawberry Seal · ~1 in 186,000
- Cosmic
- Rainbow Ferret · ~1 in 1,000,000
- Omnipotent
- Alien Seal · ~1 in 10,000,000
- Singularity
- Kaiju Seal · ~1 in 93,000,000
The Kaiju Seal is the ceiling of the game and most players will never see it. That's deliberate — it exists so the number at the bottom of the odds table has something behind it.
Every pet has an icon and a one-line description written in the same deadpan voice throughout. The tone is the product as much as the mechanics are — nothing in the game takes itself seriously except the odds.
- Peeking Hamster
- he has been watching you for a while
- 3AM Cat
- why is he standing there. why
- Screaming Borzoi
- AAAAAAAAAAAAAAAA
- Buff Horse
- he does not skip leg day. he cannot
- Mango Bird
- ornithologically speaking, a fruit
- Kaiju Seal
- he is not clapping. he is detonating
What a roll actually gives you
Three separate things can come out of a single roll, and they're rolled independently — a Common pull can still hand you a jackpot item.
- The pet, which goes into your inventory. Duplicates stack rather than clutter.
- Coins, scaled steeply to rarity: a Common is worth 1, a Legendary 10,000, a Singularity 100,000,000. Coins are the everyday currency you spend on upgrades.
- A star, sometimes. The premium currency, rolled separately from the pet — about an 8% base chance, climbing to 40% on the rarest tiers. A Legendary that also drops a star feels twice as good, which is the entire design intent.
- An artifact, rarely. Roughly a 3.4% chance per roll of an equippable item dropping.
Artifacts
Five collectible items, each a pet accessory, each with a permanent boost while equipped.
- Squeaky Ball
- ~3% · better luck
- Paw Biscuit
- ~0.3% · more coins
- Starlight Collar
- ~0.06% · better star odds
- Blossom Spectacles
- ~0.03% · luck and coins
- Cozy Den
- ~0.005% · luck, coins and stars — the best item in the game
You start with one equip slot. Extra slots are bought with stars rather than coins, and there are only two of them, so a fully kitted player has three artifacts running at once. Their boosts multiply together, which makes the endgame question simply: which three do you stack?
The shop
- Luck Boost
- Up to level 100. Shaves weight off the Common tier, pushing rolls up the rarity ladder. The most impactful upgrade, and priced like it.
- Speed Boost
- Up to level 20. Cuts 0.2s off the roll animation per level, taking a roll from 6 seconds to 2. Pure quality of life, and what makes long sessions bearable.
- Coin Boost
- Up to level 50. +3% coins per level, compounding with artifact coin bonuses.
- Artifact Slots
- Two levels, bought with stars: 500 for a second equip slot, 1000 for a third.
Every upgrade gets exponentially more expensive, so progression naturally slows as you climb. The first Luck level costs 100 coins; the hundredth costs a number with a lot of digits in it. You're always a bit short of the next one.
Playing with other people
The game is technically single-player at the moment of the roll, but everything around it is social — that's the 'for friends' part.
- Live chat: a global channel running alongside the game — beside the page on desktop, a slide-up drawer on mobile. This is where the 'I JUST GOT THE FERRET' moments land.
- Recent drops feed: a live feed of what everyone is pulling, next to your roll button. Results only appear once the roller's own animation has finished, so nobody gets spoiled on their own pull.
- Trading: send another player an offer — here are the pets I'll give, here are the pets I want. Pets only, no coins, stars or artifacts. It's how you finish a collection when the RNG refuses to cooperate.
- Leaderboards: three of them, because there's more than one way to be good at this. Rarity Score rewards genuine luck, Total Rolls rewards raw dedication, and Rarest Pull is one number and one flex.
- Profiles: a public page each, with avatar, banner colour or image, custom title, bio, colour theme, and a showcase shelf of up to three pets. Your stats and top pets are visible to anyone who visits, and you can browse other people's inventories too.
The feel of it
A lot of the work went into the moment of the reveal rather than the systems around it. The spinner eases out instead of stopping dead. Rare pulls fire confetti in colours matched to their tier. There are sound effects, with a volume slider in settings, mercifully. Pages transition rather than jump. The whole thing is dark-themed and works properly on a phone, because a lot of the rolling is going to happen on a phone.
Your inventory is browsable and sortable, with a detail view for each pet and each artifact. The odds table is shown openly on the roll page — the game never hides how unlikely anything is. Knowing the number is part of what makes hitting it worth telling people about.
Anti-cheat
Worth mentioning because it shapes how the game feels to play with others: every roll is decided on the server, never in the browser. You can't edit a result, you can't re-roll a bad pull, and you can't fire off two rolls at once from two tabs.
When someone's name shows up on the leaderboard, they actually rolled it. The leaderboards mean something because of this.
Where it's at
Everything above is built and working: rolling, the full 49-pet roster, coins, stars, artifacts and equipping, the shop, trading, chat, the three leaderboards, profiles and settings. Accounts and logins work. It's deployed and playable.
The obvious directions from here are more pets, more artifacts, more things to spend stars on, and — the most requested thing in any game like this — some way to turn duplicate Goldfish into something useful.