Open Poker
Decision Protocol
Version 0.8, Nov 2007
This
document is published and available under GNU Free documentation license.
Authors
Indiana, http://pokerai.org
[others to
be included]
Chapter 1. Goals and
Overall Architecture
The Open
Poker Decision Protocol is a client/server protocol specification
that address the following major goals:
- Specifies
language independent, machine readable message exchange format
- The
specified message format describes request and response for poker game
decisions
- Every
client request message encapsulates all necessary information for the
poker decision to be taken and response to be returned
- The
protocol is flexible to handle poker cash as well as tournament games and
extendable to all forms of poker
Some of
the possible applications of the protocol are:
- Allow AI
researchers to build poker decision engines and offer this as a service in
a standardized way, without giving away their intellectual property of the
bot logic.
- Allow
pokerbot frameworks to integrate with pokerbot engines in standardized way
(e.g. frameworks like WinHoldEm or OpenHoldem can integrate via specific
whuser.dll bridge)
- Allow end
user applications to be build against pokerbot engines (e.g. website
giving advice on play situations)
- Allow
for feasible contracts between AI developers, resellers and eng users.
The
following picture gives the overall architecture and highlights some of the
possible applications:

Chapter 2. Protocol
specification
[Draft, to
be defined as part of the specification group]
Establishing
connection:
- Socket
connection to backend host and port is configured and specified in the
front-end bridge. For example, it will be simple configuration file
provided to the default whuser.dll bridge.
- The
first thing that the frontend need to send to the backend after
establishing socket connection must be a single message containing single
256 bit integer. This is used for the purpose of identification.
- The
backend will reply with 64 bit integer representing a session ID.
Each
request message of the protocol provides all information available to the
frontend about the current poker hand [This has to be defined in details, as
part of the working group]:
- Session
ID (64 bits)
- Game
description (String, any optional information)
- Game
type
- Game ID
- Bet size
/ Limits
- Button
- Position
(of the "hero" - the player to act)
- Number
of players
- For each
player: Player name and bankroll at start of the hand
- Hero's
hole cards
- Community
cards (Flop, Turn, River cards)
- List of Actions
since the beginning of the hand (each action in the list contains Player
Name, Action Type and Action Amount
Each
response message of the protocol contains [This has to be defined in details,
as part of the working group]:
· Advised action: fold, check/call or
raise (amount)
Notes:
· Posting blinds, automatic blind
posting, waiting for big blind, etc. are not poker decisions and are not
specified as part of the protocol.
Chapter 3. Reference
implementations
This
chapter contains a list of publicly available reference implementations and
bridges of the protocol.
Front-end
bridges:
- WinHoldEm
whuser.dll bridge to open poker protocol [reference]
Backend
implementations for end users:
- No-limit
Single Table Tournament bot [reference]
- Bluffbot
heads-up poker bot [reference]
Backend
implementations for developers:
- C++ API
representation of open poker protocol [reference]
- Java API
representation of open poker protocol [reference]
References
http://games.cs.ualberta.ca/webgames/poker/bots.html
http://www.iguanarama.com/programming/poker_bot/network_bot.html
http://www.cs.ualberta.ca/~pokert
http://winholdem.net
http://www.pokerprofessional.com/
http://openholdem.org
http://bluffbot.com/
http://pokerai.org/pf3