Inspiration
We love Clash Royale, but we noticed a trend across mobile gaming: monetization creeping into every interaction. So we asked, "what if we took that to its logical extreme?" Scuff Royale was born — a Clash Royale-like where the enemy deploys for free and you pay for literally everything, wrapped in comic-sans "totally legitimate" UI.
What it does
Scuff Royale looks like a normal tower-defense card game, but every layer has a paywall bolted on:
- Entry fee: \$4.99 just to start a match — non-refundable, even if you lose.
- Per-troop pricing: each card has both a coin cost and a real-money price (Knight \$0.99, Archer \$0.49, Giant \$2.99, Goblin×3 \$0.79).
- Confirmation friction: deploying a troop triggers a 17-step confirm flow (only steps 1–3 are ever actually shown), or you can pay \$1.99 to skip the remaining 14.
- Trophy extortion: winning doesn't give you the trophy — the claim button dodges your cursor/tap up to 4 times before you're allowed to click it, then you're charged \$9.99 to actually receive what you won.
- Death upsell: losing opens a 5-second auto-declining "continue for \$1.99" timer.
How we built it
The whole thing is a single self-contained HTML/CSS/JS page: no backend, no real payments — every "Pay & Enter Battle" or "Claim Trophy" button just runs a setTimeout to fake a processing delay before mutating a spent counter shown live in the HUD. The battle itself is a lightweight tick-based loop (setInterval(tick, 200)) that moves troops along a lane, resolves combat by proximity, and drains tower HP — enemy troops spawn for free on a timer while player troops require the full payment gauntlet above.
Challenges we ran into
- Making the trophy button's dodge behavior ($x,y$ chosen uniformly at random within the modal bounds) feel infuriating rather than just glitchy
- Tuning the confirmation-step copy so the satire reads as commentary on real dark patterns, not just a broken form
- Balancing troop stats (
hp,dmg,speed) so the free enemy troops still feel beatable despite the player's payment friction
Accomplishments that we're proud of
- A fully playable battle loop buried under a genuinely obnoxious monetization funnel
- The trophy-claim dodge mechanic — turning "claim your reward" into its own minigame
- A running \$-spent counter that makes the absurdity visible in real time
What we learned
- How many small, "reasonable-sounding" friction points (confirmations, timers, scarcity messaging) it takes to make a free interaction feel like a forced purchase
- How much of dark-pattern UX is just deliberately-placed delay and misdirection, not actual complexity
What's next for Scuff Royale
- Real (fake) leaderboards you have to pay to view
- A "Scuff Pass" that charges you to see your own match history
- More troop types, each with its own increasingly ridiculous fee
Built With
- claude
Log in or sign up for Devpost to join the conversation.