There's a chance that I'll tinker with this idea for a while and then move onto something else, so I need some motivation:
- I'm a fan of the GOOS book and I've been thinking about building the project they work on. There's lot of similarities between the two project so it's a good chance to follow through on that
- My day job limits me to stuff that is necessary to there, so this is a chance to work with technologies that I wouldn't normally
- Blogging it gives me a something I've never had before, a start to finish record of a project.
So there's the idea and the motivation, all that's left is to go ahead and do it, but first the sales pitch.
Sales Pitch
It's a poker game with developers in mind. Developers will be able to write a poker player in any language that they choose and have their algorithm compete against other developers algorithms in a poker game.
It's going to look something like this
The dealer will handle all of the usual dealer tasks, like dealing the cards, managing the pot and telling the players when it's their turn. Once there is a common language defined (in this case poker terms like Bet, Raise etc.) the dealer and the players can interact.
It's going to look something like this
The dealer will handle all of the usual dealer tasks, like dealing the cards, managing the pot and telling the players when it's their turn. Once there is a common language defined (in this case poker terms like Bet, Raise etc.) the dealer and the players can interact.
Some Initial Analysis
I don't think this is going to be a trivial project, which is one of the things that attracts me to it. There will have to be communication between the dealer and the players and allowing different software components to communicate like this is a new area for me. Another big area is the poker logic.
The communication between the players and the dealer
There's two challenges in this area. Firstly the communication will have to be two way so all components will need to both listen and send messages at the same time. Keeping the dealer and all the players synchronised should be a bit of work. I'll have to work to avoid things like one waiting indefinitely for another.
Secondly, there will need to be some privacy in the communication when the dealer deals the initial hands; each player should only see their own hand. The simplest type of communication would be for everyone to poll a database table, but that would allow all the players to see all the hands. In the GOOS book they use the XMPP protocol to handle messaging; using XMPP would allow me to send direct messages and would (I think) give me a nice messaging setup. I haven't done anything like this before so I need to do some swotting up on messaging in general first.
Whatever I end up using is going to have to meet these two requirement:
Whatever I end up using is going to have to meet these two requirement:
- Two way communication
- Private communication
Poker logic
Dealing from the deck of cards, keeping track of the pot, keeping track of the game and figuring out who's hand has won. A quick look around the web tells me that none of this stuff is as easy as I would first think (nothing ever is on software, is it?) I'm already comfortable with the rules of Texas Hold 'em so knowing the business area is a bonus to me. There's lots of stuff to do here, more than I would like really so hopefully other people will have developed something similar before and there will be bits and pieces of code I can re-use out there.
So there it is, lots of work ahead but I think I'm going to like it.
No comments:
Post a Comment