Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
202 lines (156 sloc) 11 KB

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

Components

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:

Prerequisites

  • 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

Installation

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.

Deployment

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

Updates

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.

Generators

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.

Contributing

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

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

Further resources