Slot Machines: Tweaking Randomness in Social Casino Games
-
Upload
juan-gabriel-gomila-salas -
Category
Data & Analytics
-
view
663 -
download
3
Transcript of Slot Machines: Tweaking Randomness in Social Casino Games
Tweaking Randomness in Social Casino
Juan Gabriel Gomila Salas Business Intelligence Consultant
CEO at frogames.es
/joanby @Joan_Byhttp://juangabrielgomila.com
Outline of the talk
A little bit about me
The problem
The first idea
The improved solution: Slot Machines
And does it work?
A little bit about me
A little about meHL +Master Degree in Mathematics (2006-2011)
Data Scientist & Game Designer at PlaySpace from 2012-2015
Developing 40+ apps & games at frogames.es
Teaching Mathematics at UIB, DB & Game Design at EDIB and online instructor at Udemy
The problem
High Acquisition
CostsUsers cost now up to 5 times
than before (1-5$)
Marketing teams need to optimize their budget
Need to retain new players
With these costs, players need to be well retained to reach
CPI < LTV
New players distributiontends to look like this
but we’d like to see something like that
A little story
Back in 2012, when I was Data Scientist at PlaySpace, we were analyzing ARM problems in their video games.
A little story
At Playspace, we were looking for ways to improve their best games: Ludo & Bingo
A little story
And we indeed discovered one big fact
PEOPLE DON’T WANT TO LOSE
People don’t want to lose
New players who won their first match:
Came back to the game up to 3 times more
Were retained more time than the rest
Payed later but more often and with higher ARPPU
A little story
On the other hand, people started paying as soon as they ran out of coins
A little story
And kept paying each time they weren’t able to start a new game
A little story
So we found the second big fact
WE NEEDED TO MAKE PEOPLE LOSE THEIR VIRTUAL GOODS
We want to win
We want you to lose
How to combine them both?
People want to win
We need to make them lose
How can this be fit together in a multiplayer real time environment?
The first approach
Segmentation
We segmented our DB depending on different parameters to classify people int0 different groups
High rollers 25%
Fighters 30%
Losers 45%
SegmentationOur machine learning had, among other data:
Win Ration
RTP
Time between games
Games per week
Time to 1st payment
Number of shares
Number of friends
The ideal world
Once people are classified, the idea is to move them from the borders of the distribution to the middle:
High rollers
-
Fighters 100%
Losers -
The real worldBut things are never perfect:
losers vs losers make the loser even more loser
losers with little games go to high rollers with 1 win
But we’re able to normalize our players distribution
High rollers
-
Fighters 100%
Losers -
High rollers 10%
Fighters 80%
Losers 10%
There is a spot for new players
Of course, new players are initially marked as losers by the algorithm.
The longer they play for, the better set up they become.
This keeps going on until we have a normal distribution.
So, how can we do it?
On dice gamesp(X=x) = 1/n
where x in {1,2,…n} and n = #faces of the dice
On dice gamesFor losers, if they need a x to make a good move, we tweak uniform distribution:
p(X=x) = 2/n
On dice gamesFor high rollers, if they need a x to make a good move, we tweak uniform distribution:
p(X=x) = 1/2n
On card games
p(X=x) = 1/n
where x in the set of available cards and n = #cards
On card games
Let S be any subset of suitable cards for the next
move from all the remaining ones of X
On card games
For losers, if they need a s€S, we make this subset
bigger:
p(X=s) = 2/n
On card games
For high rollers, if they need a s€S, we make this
subset smaller:
p(X=s) = 1/2n
Conclusion
As Sir Francis Galton said on 1870,
It all regresses to the mean
Losers improve their winning ration and thus their experience,
High rollers find the challenges they need to keep themselves on the wave.
The improved solution: Slot Machines
What about Slots Machines?
Let S = set of normal symbols of the slot machine,
Let W = WILD, S = SCATTER and B = BONUS.
Let M and N be the number of rows and reels of the slot machine
What about Slots Machines?
For every s in S, lets define:
- w(si) = the weight of s on i-th reel
- x(si) = the reward of i equals s symbols (aka paytable)
- wi = the total weight of i-th reel
This time is not so easy
p(x(si)) = ————————————————————————-w(s1)*(w(s2)+w(W2))… (w(si)+ w(Wi))
w1*w2*…*wi
For s in S, the chances of having exactly i s symbols on a paying line is
So, what can we do to improve our chances?
I’m sure you thought about that!
We double the weight of the wild symbol w(Wi), so now we have
w(s1)*(w(s2)+2w(W2))… (w(si)+ 2w(Wi))
w1*(w2+w(W2))…*(wi+w(Wi))p(x(si)) = ————————————————————————-
I’m sure you thought about that!
We half the weight of the wild symbol w(Wi), so now we have
w(s1)*(w(s2)+w(W2)/2)… (w(si)+ w(Wi)/2)
w1*(w2+w(W2))…*(wi+w(Wi))p(x(si)) = ———————————————————————————-
Is the denominator a problem?
Not really…
w(Wi) << wi ——> wi+w(Wi)~wi
w(Wi) ~ w(si) ——> w(si)+2w(Wi) increases
This means the chances of getting that combination on a pay line increases exponentially!
Are there other options?
For sure, we can simply:
Double the weight of the Scatter (really increases wins due to its nature!)
Double the weight of the Bonus to engage the user
Randomly put on scene sticky or stacked Wilds
And now we can make a web of slot machines
High rollers
-
Fighters 100%
Losers -
High RTP
>100%
Normal RTP+Hit 95.5%
Low RTP <80%
Low Scatter Hit Rate
<2%
Low Bonus Hit Rate
<1%
High Scatter Hit Rate
>5%
High Bonus Hit Rate
>3%
And does it work? Well, see it for yourself!
Conclusions
Reduced outliers in our players distribution
Modeled behaviors to the mean
Made new users perform better (against other users!) so we improved their retention and engagement
Experts are now challenged and they are now more engaged (and probably well monetised!)
Improvements
Take it further to massive social casino games like a bingo room or multiplayer social slots
Smooth the results with players that have little data (it can go from loser to high roller in just one game). Law of large number applies!
Not just play with doubles and halves! Tune the algorithm with AB testing! Why not use sqrt(2)??
Who could use this model?
Any questions?
– Juan Gabriel Gomila Salas
Thanks for your time
/joanby@Joan_ByJuan Gabriel Gomila
joanby
http://juangabrielgomila.com http://frogames.es
@frogames_sl/froggames