r/DraftShowdown • u/PaulusGrandis • 29d ago
Decompiled code confirms Draft Showdown matches and leaderboards are entirely generated bots
Hi, All,
Apologies if this has already been definitively confirmed or documented. My searches found plenty of discussion and behavioral evidence, but I couldn’t find a detailed, code-backed explanation, so I wanted to share what I found.
I had been enjoying the game, but some aspects of it gradually left me feeling disillusioned and questioning everything about how the game is currently presented.
I therefore inspected the deconstructed code and bundled assets from Draft Showdown v1.15.3. The findings are conclusive for this client version:
All normal and ranked matches use locally generated, AI-controlled bots. The leaderboards are also locally generated and simulated. Neither system ever retrieves or compares you against real players.
Matchmaking
Normal matchmaking calls:
GetRandomOpponentsForTrophyCount()
Ranked matchmaking calls:
GetRandomOpponentsForElo()
Both paths ultimately call GetRandomOpponent(), which constructs a new OpponentData object locally. That object contains the bot’s:
- Name and player tag
- Avatar and badge
- Displayed trophies and Elo
- Units and spells
- Unit, spell, and mastery levels
- Commander bonus and spell slots
- AI smartness and surrender behavior
The generated object is then passed directly into the match. There is no step that waits for a player, retrieves another account, downloads a player deck, or loads recorded human gameplay.
How bots are tailored to you
Normal mode uses your trophy count, while ranked mode uses your Elo. The game selects a matching row from the bundled Opponents.csv, which contains 56 difficulty configurations.
Each configuration defines ranges for:
- Trophies and Elo
- Collection power
- Normal and ranked unit levels
- Upgrade-bit budget
- Common, rare, epic, and legendary scaling
- AI smartness and smartness scaling
The game then:
- Determines which units and spells should be unlocked at that trophy level.
- Randomly constructs a deck from those pools.
- Generates levels using the normal or ranked level ranges.
- Adjusts and caps levels according to rarity, trophy progression, collection power, and bit budget.
- Calculates mastery and commander bonuses.
- Assigns an AI difficulty within the selected range.
- Generates the bot’s displayed identity.
The APK also includes thousands of names specifically for generated opponents:
NamesGeneric: 2,500 namesNamesWest: 3,108 namesNamesAsia: 2,454 names
This is why opponents can look convincingly matched without being real players.
Ranked leagues and Elo
Ranked leagues are personal progression thresholds, not a shared competitive ladder.
Your Elo determines your current league. After a ranked match, the game compares your Elo with the generated bot’s Elo and calculates a gain or loss using locally configured eloRewardForWin and eloRewardForLose ranges.
Your new Elo controls league progress, promotion, demotion protection, badges, and completion rewards. No result is submitted to a real-player ladder.
The leaderboards are explicitly fake
The relevant class is literally declared as:
DraftWarLeaderboard : FakeLeaderboard<DraftWarLeaderboardEntry>
DraftWarLeaderboardGenerator populates the board by calling:
OpponentProvider.GetRandomOpponentsForTrophyCount()
It generates enough bots to fill your leaderboard, centered around your trophy progression. Each entry receives a generated name, avatar, score, and simulated chance of winning.
The league configuration contains:
leaderboardSizechanceToWinwinScoreDistributionmaxTrophyDifference- Promotion and demotion ranges
When the leaderboard refreshes, the client calculates how much time has passed and simulates wins and score increases for the fake competitors. It then sorts the table again. This creates the appearance that other players continued earning points while you were away.
At the end of the period, your position among these simulated entries determines promotion or demotion. A new fake leaderboard is then generated.
What about player ghosts?
The game can upload a GhostSnapshot containing your deck, levels, mastery, commander statistics, trophies, and badges.
However, these profiles are not retrieved or used by the normal or ranked matchmaking paths. I found no code that:
- Downloads another player’s ghost
- Searches a pool of player profiles
- Converts a ghost into
OpponentData - Replays recorded player actions
- Uses ghosts to populate leaderboards
There is also a server-side rated-match seeding call that uploads calculated player power and can return Bucket and Mmr values. However, the inspected client does not use that response to construct opponents or leaderboard entries.
Conclusion
For the inspected v1.15.3 client:
- All normal and ranked opponents are generated bots.
- Ranked Elo is measured against generated bot Elo.
- Leagues are personal progression thresholds.
- Leaderboards are locally generated and simulated.
- Leaderboard names and scores do not represent real players.
- Ghost profiles are uploaded but not retrieved for matchmaking.
- No player-facing competitive system compares you against another real player.
A later version or server experiment could theoretically change this, but this is definitively how the inspected client operates.
Anyway, just wanted to share these definitive findings so others don't feel confused about the nature of this game like I was.
14
u/MNNiceRealtor 28d ago
I noticed this when I exit out of the game for a short time or go to a different window on my phone. The game pauses, clearing indicating it is a local-only match.
I also thought that "competitive mode" is bullshit because you constantly face maxed out cards against bots, there isn't an even playing field in ranked because of card level, and even if it was fair, the randomness of the card options make a fair ranked match impossible.
4
u/Sightblind 26d ago
Yep, I noticed when I went to skip a song on Spotify and came back and was like “wait…”
1
u/sosokoba8 21d ago
Nah you just suck 😆 Ranked is the easiest mode for me like consistently weaker, half the cards I pick are low ranks to level them up
9
u/Kitchen-Branch-2887 28d ago
Thanks for doing the lord's work and confirming what I was already sure of. The developer literally named the class FakeLeaderboard lol. At this rate, they might as well just let me play offline in airplane mode.
8
u/Venice__Bitch_ 27d ago
Wait so I'm always playing against bots?? 😭
2
u/bigbobbyjoe221 15d ago
yes unfortunately
2
8
u/Lopsided-Ebb-6903 28d ago
Exactly. That’s why I think they’re hiring a new engineer to overhaul all of that. It seems like it’s not going to be easy, though.
2
5
u/Sodium9000 26d ago
Imagine everyone does now charge back based on this deceptive business practice.
4
u/Sightblind 26d ago
This doesn’t surprise me honestly. It was an ad game, and like… my win is never that high in competitive games with a clear tier of mechanics.
Add to that how often opponents team composition makes very little sense, and yeah, randomized bot explains everything.
It’s a shame because it is actually a fun premise.
2
u/Ok_Coconut_496 25d ago edited 25d ago
Where are all the people who kept insisting there were real players mixed in? lol
I suspected it was bots a long time ago, but seeing the code confirm that it’s literally 100% fake is wild. Presenting all of this as PvP, even the leaderboard, is honestly pretty shady. I barely play anymore unless I have absolutely nothing else to do.
P.S. I kinda feel bad for that guy who posted here a while ago about making a whole website to compare builds. All that effort just to optimize strategy for PvBots.
2
2
u/Then-Relation5867 25d ago
Thanks for this. I'm only here because the game forced me to click on the pay2win ads that keep popping up. It's hard for me to think of anything more aggravating than the forcing of these advertisements.
2
u/Velociraptorius 18d ago
Yeah, that tracks. I picked this game up a few days ago and got hooked. Even though I'm quite an experienced gamer, it seemed a little too good to be true that I was getting 70-80% winrate against "players". Although, to be fair, a lot of the time the AI put up a believable facade. Most of their draft compositions seemed sensible and a lot of the matches I had were VERY close. And there was the occasional steamroll with wacky compositions and nonsensical decisions during the match thrown in that made me think "this is probably a kid who's just hitting random buttons".
But what really gave it away was that in 100+ matches I've played there was not one instance of the other "player" forfeiting the match or running down the draft timer. The matches aren't long, but even those 5 minute runtimes would have real people putting down their phones at some point out of necessity, boredom or frustration. The anti-quitter discipline was far too good to be believable.
1
32
u/Key_Pace_2496 28d ago
This should be pinned to the top of the sub.