Q Poker: in progress

When I wrote that post about making a computer game, I seem to have left out one of the major projects I've been working on for the past year or so, which is Q Poker.

Q Poker is envisioned as an online poker site, with play money (coins), that hosts games other than Texas Hold'em. The first game I've been implementing is Razz (7 card stud lowball) and you can see some of the in progress results in this screenshot:

Screenshot of online poker game

So far, the things I've got working are:

Things I still need to work on include:

With all that in place, I think I could actually maybe go to an open beta and see if anyone wants to play. Actually what I was really thinking was that I could program some kind of bots that players could play against. I've got bots now, but they just make a random action out of the available options which is really frustrating and not a good experience.

I've studied some of the techniques of the Pluribus poker bot that came out this time last year. I even paid for access to the paper they published. Sadly, like many results in science nowadays, it doesn't seem like the results are fully reproducible just from what's in the paper, but maybe I'm just too dumb to understand it (fully possible!).

I've actually got a basic implementation of counterfactual regret minimization (CFR), the algorithm used by Pluribus, implemented for toy game theory examples like Kuhn Poker. I'm having a hard time generalizing it to Razz though.

If I could get it working, I think it might be fun for players to start a table with 1 or 2 friends and 1 or 2 bots. The point is that there is literally NOWHERE to play Razz online (and in general nowhere to play it live either, even before COVID), so there must be at least some pent up demand for something like this.

If things go well with Razz, I'd like to implement other “mixed” games, like Omaha 8, Pineapple/Crazy Pineapple, Big O, and maybe some of the weirder games we've played in the Reno Atlantis mixed game, like Drawmaha.

This isn't something that I've started and shelved. I'm actively working on it. In fact, I just spent the past week implementing Table/Hand persistence for the backend, so that it can load a table when a user takes an action, then persist the changes to the table.

If you'd like to discuss this post: I'm Travis Briggs — @audiodude on Twitter and Github, @audiodude@toot.cafe on Mastodon, and audiodude@gmail.com