Here, we explore how different deck styles can be expected to perform in Splinterlands, based on simulation of the ranked ladder. These simulations are greatly simplified compared to what is truly happening in the ranked ladder, but I want to demonstrate something that I think might be overlooked as a min-max strategy, and that is likely going to be much more common after Chaos Legion leaves the modern ladder.
Deck styles
We consider two types of decks: a full deck (has all cards at a given level - bronze, silver, gold, diamond), and a single-summoner deck (dual splinter, all cards playable by the chosen splinter)
The full deck
- Has all cards leveled to the limits for one of the old leagues.
- Bronze/Silver/Gold/Diamond
The single-summoner deck
- Dual Splinter summoner
- Summoner leveled to the limit for one of the old leagues
- Has all cards playable the maximal level allowed for their summoner level.
Simulation strategy:
- 3000 players, all playing the same amount of games.
- 400 games per player - roughly all energy for a 14 day season plus some energy gained from chests.
- Each player is assigned a deck style and a deck level. Full decks can take deck levels 1-4 (bronze -> diamond), while the single-summoner decks are included only for deck levels 2-4 (silver-diamond).
Python classes and functions needed for this simulation
Above we have defined an enumeration class to indicate the deck style, and a player class to hold a players deck info and their rating. The class has a function to check if for a single-summoner style deck, the battle elements allow the player to use their summoner or not. (This function is not relevant for the full decks).
We have a function to resolve a battle between decks. For same type, same level decks, I use a 50-50 chance for each player; I have not added different player skills. If one deck is higher level than the other, it has a much higher chance of winning. I assume a 90% win chance if there is one deck-level difference between the decks, 99% if there are two deck-levels difference and 99.9% if there is a 3 deck-level difference. The last one corresponds to a bronze deck versus a diamond deck - I think its reasonable to assume that the diamond deck only loses about 1/1000. of these matches.
If there is a single-summoner deck involved in the battle, it will auto-lose if it cannot play its summoner. I check this by comparing the assigned player elements (which dual summoner it has) against the battle's allowed elements. If it can play its summoner, I assume it has 50-50 win chance against an equal level full deck (this is debatable. On one hand the full deck has more options, but on the other the single-summoner player will be an expert on playing that summoner).
We also have a function to find matchups. I don't know exactly how splinterlands does this, but I believe it expands the allowed rating difference over time in the queue. I have not made a battle-queue in the same sense, but I use index in my player list as a proxy for it. I don't believe that the matching strategy has a large impact here, except for limiting to +-1000 rating difference below Champ rating.
Setting up our players and running simulations
We use 3000 players. Most of them with bronze-level decks, and the succesively fewer at higher level decks. I looked at the ranks of the players in each league leaderboard (yes, we still have that available even if its not used below champ) to find out roughly how many players we have in the different rating levels.
I also assume that some fraction of all decks use single-summoner styles. To begin with, we can allow 20% of players to use this style.
Finally, we have all we need to run the simulation. Lets initialize and start it:
Now we have the simulation results. Just have to do a little processing to show the results.
The plot shows the rating distribution of our players at the end of the simulation. The color of the lines indicate the deck style and level (as denoted in the plot legend). Along the horizontal axis we have the rating, and the vertical axis shows the number of players at that rating. The vertical dashed lines show the average rating of the deck-style and level.
We can see that the four full deck styles have clustered into four separate groups (not surprising, since we did not include and skill separation of the players within these groups). The single-deck players are fewer in number, but what we can take note of is that the single-deck styles generally outperform, or at worst is similar in performance to the full decks at one deck-level lower.
To put it more simply. A single-summoner silver level deck is stronger than a full bronze deck. A single-summoner gold level deck is stronger than a full silver level deck, etc...
Thoughts?
Final words
The source code for these simulations is available in spltools. It is in form on a Jupyter notebook. The file can be found here.
Are you also playing Splinterlands? If not, you should join today. Click the referral link below to get started.
Join Splinterlands
Best wishes
@Kalkulus
amazing analysis, though there are significantly low no of players in champion with full deck, I bet they are the ones earning the most out of their investment and making a solid ROI.
Thank you! Yeah you're probably right about the full deck players. It would be very interesting to match the ranked ladder more closely with this simulation, also including skill as a factor, and varying the number of games different accounts play. I have to do some research to find those numbers.
Great post again, love to see how different people look different into data.
This is method i did not consider yet 💪
Thanks for sharing! - @mango-juice
@kalkulus, you're rewarding 2 replies from this discussion thread.