spears wrote:
Nefton's question is this: Why does the server not provide the client with a list of available actions?
If it doesn't, then every client has to figure this out for himself. That's horrible.
Perhaps I'm not explaining this well, or misunderstanding the requirements.
I'm talking of a system whereby each bot is a server. A client application co-ordinates the two (or more) decision making servers. Think of it as the dealer. It posts the current game state to the server and the server replies with an action. In web terms this is a very common set-up. For example, a web page contains enough logic to interact with one or more servers and a user interface that allows someone to control that interaction.
Given the way in which strategies are constructed - linking gamestates to actions - it's simple for each server/bot to return the action their strategy dictates at a given gamestate/infoset. So the webpage holds the current gamestate and when it's a given bots turn to act it asks them for an action for that gamestate.
Again, maybe I'm not being clear or I've misunderstood what is required. But if I was going to design a system for multiple, disparate bots that had private logic to interact via a common, publicly available interface, that's what I'd build. (disclaimer - I design restful systems for a living)
[it could be that you mean every client has to figure out the list of possible interactions with the server, but thats' the good thing about this approach, there's only one. Each server has to do the following: translate a gamestate (in hold-em this is: board, action history, holecards, pot, possibly seating if more than HU) into an action. That's it.]