How We Built a Card Game Platform with 3 Million Players (and What We Learned)
A founder's tech perspective on scaling an online card game in Brazil
Building a niche gaming platform that lasts 15 years and reaches 3 million players doesn't happen by accident. At Jogos do Rei, we've been running Brazil's largest online card games platform since 2010 — and I want to share some of what we learned along the way.
This isn't a story about hockey-stick growth or VC funding. It's about building something deeply rooted in culture, keeping the servers alive, and not alienating the players who trust you.
What We Built
Jogos do Rei is a platform for traditional Brazilian card games: Buraco (known as Canastra in some regions), Tranca, Truco, and STBL (Buraco Fechado). These are games most Brazilians grew up watching their grandparents play. Our job was to bring them online, keep them social, and make them feel authentic.
By the numbers:
- 3+ million registered players
- Games running 24/7 since 2010
- Daily tournaments with real opponents (no bots in game rooms)
- Weekly leagues with ranking systems
The Real Challenge: Real-Time Multi-Player State
Card games look simple from the outside. But managing real-time multiplayer state for a game like Buraco is surprisingly tricky.
The State Problem
At any point in a Buraco hand, you need to track:
- Each player's hand (private)
- The table (public plays visible to all)
- The discard pile (public, ordered)
- Two "mortos" (hidden piles of 11 cards each, revealed when a player goes out)
- Round scores and game scores
The game has complex actions: drawing from the deck, picking up the entire discard pile (only valid with certain conditions), laying down melds, extending existing melds, and going out in three different ways (direct, indirect, and final).
All of this needs to be:
- Validated server-side (never trust the client)
- Transmitted in near-real-time to all players at the table
- Kept in sync even when connections drop
Our Approach
We kept a canonical authoritative game state on the server. Clients send actions (not state updates). The server validates, applies the action, and broadcasts the new state delta.
This "server is king" model means:
- No cheating via client manipulation
- Clean reconnect logic (request full state on reconnect)
- Easier to audit for anti-cheat
The trade-off is latency sensitivity. For a card game, we found that under 300ms round-trip is fine. Players don't feel rubber-band effects the way they do in action games.
Matchmaking: The Hidden Hard Problem
When you have 3 million registered players but only a fraction online at any moment, matchmaking becomes critical.
The Peaks and Valleys Problem
Brazilian players are concentrated in specific timezone windows: lunch (12–14h BRT) and evening (20–23h BRT). Outside those peaks, finding 4 players for a Buraco table can take time.
Our solution:
- Tiered waiting: Short queue timeout → downgrade table requirements (e.g., allow cross-skill-level match)
- Lobby visibility: Show players waiting in lobbies so others feel encouraged to join
- Daily tournaments: Pre-scheduled times aggregate players, solving the coordination problem
Rating Systems for Card Games
Standard Elo works reasonably well for 1v1. For 2v2 (which Buraco supports), we adapted it with team-based rating adjustments. The key insight: in card games, luck variance is high. A rating system that moves too fast produces frustration; one that moves too slow feels unrewarding.
We use a dampened Elo where K-factor decreases as player count grows, and we separate tournament ratings from casual ratings.
The Social Layer is Not Optional
Card games in Brazil are deeply social. Buraco at the club is as much about conversation as the cards. When we stripped that out early on, retention suffered.
What we added over time:
- In-game chat (with moderation — this is crucial)
- Persistent player profiles with statistics and ranking
- League system — weekly competitions that create regular engagement loops
- Tables with names — players can name their tables, creating regulars
The lesson: if you're building a multiplayer casual game, the social graph is the product, not the game itself.
Mobile vs Web: Still Not Solved
Our player base skews 40–65 years old. That changes everything about your mobile strategy.
Counterintuitive finding: older users often prefer desktop web. They have larger screens, are comfortable with browsers, and are wary of installing apps.
But mobile is growing, especially Android on budget devices. Our Android app (available on Play Store) required significant work to run well on 3–4 year old mid-range devices with 2GB RAM.
Key optimizations for low-end Android:
- Lazy-load non-critical assets
- Minimal JS bundle (this is a card game, not a 3D shooter)
- Aggressive caching of card and table assets
- Graceful degradation of animations
Moderation at Scale: The Unglamorous Work
3 million players means a meaningful percentage will behave badly. Buraco has a "no hints to partner" rule that's impossible to auto-enforce (it's a social contract, not a technical constraint).
What we can enforce:
- Abusive chat (filter + report system)
- AFK/abandonment (timeout system with automatic play)
- Collusion patterns (statistical anomaly detection on team win rates)
We give players a "Denunciar Abuso" (Report Abuse) button on every player avatar. Reports feed a moderation queue. The community self-polices surprisingly well when the reporting mechanism is visible and responsive.
What We'd Do Differently
Build the API-first sooner. We had a tightly coupled frontend/backend for years. Decoupling enabled mobile and new features much faster.
Analytics from day one. We flew blind for too long. We didn't know which game modes had best retention until we measured properly.
Invest in moderation tools earlier. A toxic player can ruin tables for dozens of others. The social experience is the moat — protect it.
Document the game rules publicly. We eventually built comprehensive rules pages (like our buraco rules) — this drives SEO and reduces support tickets.
The Long Game
Building a platform for traditional games means your players are loyal but not forgiving of regression. They've been playing Buraco for 40 years. They know when your implementation is wrong.
That authenticity constraint is a feature, not a bug. It keeps us honest. It means every rules change is scrutinized. And it means the 3 million players who trust us have a very high bar for alternatives.
If you're building in a cultural niche — lean into it. The niche is the moat.
About: Jogos do Rei (jogosdorei.com.br) is Brazil's largest online card games platform, running since 2010.
Tags: brazil gaming multiplayer cardgames webdev startup realtime matchmaking
Top comments (0)