Every once in a while, a player will contact me to inform me (more or less politely) that my game is cheating and the dice are loaded. My answer is always the same : there is no cheating going on.
The first thing I explain to them is that cheating can be interesting for a developer if it can bring additional revenue. It’s not my case since my Ancient Games are monetized through ads and customization. It doesn’t matter if you win or you loose, I will get the same amount from the ad shown at the end of the game.
Same goes for the customization. The premium stuff can’t be gained by playing so your performance doesn’t affect my revenues. You might say : But what about the boards tied to progression? If I win less, it will take me longer to unlock them, which means more ads.
True, it would. But the player would be quite frustrated by the whole thing and they wouldn’t stay long enough for it to make a difference.
My point is I don’t need to intervene in your games because the happier you are with the game, the longer you’ll stay and the more open you’ll be for purchases. In truth, if I wanted to affect your play sessions, it would be to make sure you’d win (but that’s not the case either)
To that I will add this : I am a one-man studio working long days and long weeks. I do the job the programmer, the artist, the designer, the accountant, the customer service guy and the community manager. All of this not just for one game but for three (and soon a lot more). I simply don’t have the kind of time a cheating AI would require (because yeah, it would be more complicated since it would need to know a lot of stuff about the state of the game that aren’t needed if it just follow the dice).
If a player has questions (or accusations) I always take the time to answer them and they often end up with a few free stuff if the conversation is nice (don’t contact me just for free stuff please). I am not in this only for the money or I would have made a more mainstream game. Most of the money I make goes toward improving the collection and adding more Ancient Games.
Finally, I would suggest you read the Wikipedia entry about confirmation bias (the first few lines are enough) and accept it is real, it will help you understand why you think the AI gets lucky rolls and you don’t.
So here is how it all works. Hopefully, this transparency will be enough to convince you. Otherwise, I suggest you uninstall the game right now. It is not for you.
Royal Game of Ur
Most modern dice have 6 faces and each face has the same probability to appear than the others. It is not the case with the Royal Game of Ur tetrahedral dice. Each one taken separately as a 50/50 chance to roll either a 0 (dark summit) or a 1 (golden summit). It gets more complicated in RGoU because the dice are not independant : their total form the result, which means that their probabilities are completely different.
Finkel’s rules use four tetrahedral dice. That’s 16 different possible combinations (see graphic below). 6 of those 16 combinations will produce a “2”, which means you will roll way more “2”s than any other result.
This causes the impression that you can predict the result. It is true to some extent, but it doesn’t mean that the dice are rigged, it is just the way they work. A good strategy requires to take that into account. When I play, I always have at least one game piece that will be able to use a “2”.
Result probabilities for the Royal Game of Ur (Finkel’s rules)
When the turn starts, the AI wakes up. It has no idea what the state of the game is, what happened before or what moves are best at this time. It simply has one thing it can do : execute the dice code. This snippet of code is unique : the same few lines will be used everytime a dice need to be rolled, regardless of the player, the game mode or the difficuly. It is completely sealed from outside interventions so the AI (and the player) can’t abuse it.
When the dice code is done a result is generated based on the above probabilities. It is sent back to the AI and only then does the AI look at the board.
It studies every game piece in the game to determine which moves are possible. It compiles a list of legal moves and goes through it based on its priorities.
The priorities are different depending on the difficulty or the game mode. An Easy AI will play like a beginner so it will try to focus on one pawn and carry it to the end of the board as fast as it can, but the Heroic AI thinks differently. It looks at all the legal moves and tries to decide which is the best. I won’t reveal all the priorities (it would trivialize the game), but it will for example take into consideration the risk of a move (is the piece safe? will it still be after the move? can it catch up this enemy piece in one or two turns? A much much more).
The fact that it checks so many things makes it look like it always roll the number it needs, but it is not the case. It simply does the best it can do each turn which often results in pieces that are placed strategically and potential “lucky” moves.
Once it has chosen the piece it will move, it sends it the command and goes back to sleep, forgetting everything it just learned about the state of the game. The piece does its thing and tells the manager (not the AI, but an independant piece of code that handles turns, points, etc.) it is done. If the AI can reroll, the manager wakes the AI up and it starts again. Otherwise, it ends the turn and switch control back to the player. (To be continued).