Rails application that allows humans to play poker matches managed by the Annual Computer Poker Competition's Dealer program in a web GUI.
Switch branches/tags
Nothing to show
Pull request Compare This branch is 50 commits ahead, 265 commits behind dmorrill10:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


ACPC Poker Gui Client

The Annual Computer Poker Competition Poker Gui Client provides a graphical user interface with which people may play poker games against automated agents. It is still under development, but currently supports two-player limit and no-limit Texas Hold'em, and has the potential to support three-player as well.

This application is built on Ruby and Rails, and a running instance is currently hosted by the University of Alberta's Computer Poker Research Group here.

More details


Much of this application's functionality comes from component gems that began as part of this project and subsequently branched away to become stand-alone projects:


  • A compatible *NIX-based operating system. Has been successfully installed on Ubuntu 10.04.4 LTS, 11.04, 12.04, and Mac OS X Lion. Windows is not supported (in this case, it is recommended to run a compatible operating system as a virtual machine in VMWare Player or VirtualBox.

  • Ruby 1.9.3 - This can be installed in different ways, but a good choice is RVM. Or you can follow these instructions to install via a different method.

  • Git - While this should only be required if you want to install Ruby via RVM, installing Git also makes working with this repository easier, so it is recommended. Follow these instructions to do so.

  • Bundler - Bundler is a Ruby gem that manages a project's gem dependencies. It requires zlib, which can be installed through RVM by running

      rvm pkg install zlib

Once Ruby is installed, installing Bundler should only be a matter of running

    gem install bundler


Download the code, which can be done by running

git clone git://github.com/dmorrill10/acpc_poker_gui_client.git

Next, download a MongoDB version compatible with your system, unpack the compressed file to <project root>/vendor, and rename the resulting directory to mongoDB.

then, in the project's root directory, run

bundle install
rake install

This should install most of the application's dependencies, except Apache, including gems and Beanstalkd, and will complete the MongoDB setup.

Non-gem dependencies

The Beanstalkd background process server is used to host background processes. Background processes are required so that game state can persist beyond a single HTTP request.

MongoDB is used as the database back-end.

Web server

Development mode

A Thin server installed via gem serves the application locally in development mode.

Production mode

An Apache server hosts the application proper in production mode. This is currently done with Apache-Rails integration through Phusion Passenger. As Apache is only used in production, it is not required to deploy this application on a local development server.


Development mode

Deploying the application in development mode on a Thin server is simply a matter of running

rake start_dev_server

in the project's root directory.

Production mode

Similarly, to deploy in production mode (given that Apache and Phusion Passenger are properly configured), run:

rake start_prod_server


Updating this application can be done by running

rake update

in the project's root directory, which will pull the newest down code from the repository and install any missing gems.

These tasks can be done separately too (as can all rake tasks, see Rakefile for more details), with Git and Bundler commands.


This project includes custom generators:

  • poker_bot
  • scss_class

For execution details, run

rails g <generator name> --help

For more information, see this tutorial on Rails generators.


See the issue tracker for currently known issues, or to log new ones.

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request


Copyright © 2012 by the Computer Poker Research Group, University of Alberta. See LICENSE for details.

Further resources