Poker offers an interesting domain to investigate some fundamental problems in artificial intelligence. The properties of stochasticity and imperfect information pose new challenging questions, not present in other typical game research subjects like chess; traditional methods for computer game-playing as alpha-beta search are incapable of handling these challenges.
This thesis presents the necessary algorithms to tackle these problems with the use of modified game tree search and opponent modeling. A proof-of-concept implementation for the game of No-Limit Texas Hold’em is provided (and benchmarked), based on the Miximax algorithm and an opponent model implemented as a Hoeffding tree.
There was an interesting mini-reverse engineering challenge hidden in this project: As I needed a way to benchmark against other algorithms, I had to find bots to play against. State of the art research bots weren’t available to play around, so I decided to extract them from a commercial poker training tool called Poker Academy - which luckily also was implemented in Java (it was the 2000s after all).
Unfortunately the class files were all encrypted and could not be reused easily. The application used a third party tool (“Vastmind Loader”) which extended the Java Class Loader to support encrypted class files.
Java is great as I could still run the whole app in a JVM with activated debugging protocol to access and extract all the class files and look for the encryption key, allowing me to use the same files outside of Poker Academy in my own benchmark and using my own Class Loader which automatically decrypted these classes.