Poker hand evaluator

poker-eval is a C library to evaluate poker hands. The result of the evalution for a given hand is a number. The general idea is that if the evalution of your hand is lower than the evaluation of the hand of your opponent, you lose. Many poker variants are supported (draw, holdem, omaha, etc.) and more can be added. poker-eval is designed for speed so that it can be used within poker simulation software using either exhaustive exploration or Monte Carlo.

Poker engine

poker-engine is a python library that implements poker rules according to variants and betting structures specified in configuration files. It designed to be used by a multiplayer poker server, a poker AI or a poker client.

Poker server and client library

poker-network includes a poker server, a client library, an abstract user interface library and a client based on it.

The server deals the cards and checks the user actions using a poker game engine (poker-engine). It listens on a TCP/IP port and understands a poker-network specific protocol. The persistent informations (accounts, hand history etc.) are stored in a MySQL database. The server was designed and tested to gracefully handle 1000 simultaneous players on a single machine also running the MySQL server.

The client library implements the poker-network protocol for the client. It runs a poker-engine identical to the one used by the server and uses it to simplify the implementation of a client. For instance it creates an event indicating that the player lost position although the server does not send such a packet. A simple minded bot is provided as an example usage of the client library.

The abstract user interface library provides a framework based on the client library and suited to implement a user friendly client. A display is fed with events such as give seat S to player P or get amount A from side pot P to player P so that the rendering part of the user interface does not need to maintain contextual game information. A toolkit is fed with high level interaction actions such as ask login and password or display the following holdem tables. An animation module is fed with events that can trigger animations or sounds such as player P timeouted or player P wins the pot.

The client based on the user interface library uses GTK.

Howto install the server and GTK client on Debian GNU/Linux

1. Install Debian Linux.
2. Change /usr/apt/sources.list to include an 'unstable' server (just change stable to unstable)
3. apt-get update
4. apt-get install mysql-server
5. add a root password to mysql for security. The easiest way I found was: mysqladmin -u root password NEWPASSWORD
6. apt-get install python2.4-poker2d. you will need to enter some details regarding the passwords you want to use, and the password you just set up for root.
7. run the poker2d client in /usr/games

Projects using poker-eval or poker-engine

(mail Loic Dachary to add your project here)