Poker Software consulting, development and maintainance.

jspoker: javascript poker client

http://jspoker.pokersource.info/jpoker/ is a javascript client for playing online poker. It displays the list of poker tables and when the user choses one, it is displayed in the browser. The user can join the game and play hands. It supports multi table tournaments. The poker server to which jpoker connects must implement a protocol compatible with http://pokersource.info/poker-network/. jpoker user interface is based on http://tiddlywiki.com/. However the underlying http://jquery.com/ based library is independant and can be used to implement alternate look and feel.

poker-engine: multiplayer poker engine with abstract variants specifications

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-eval: 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-network: poker server and client library

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 4000 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.