Browse files

Fixed readme.

  • Loading branch information...
1 parent 01f026f commit 38a4b5208fc9bac99ca7c20ccbb6537436720782 @dmorrill10 committed Mar 16, 2013
Showing with 199 additions and 0 deletions.
  1. +199 −0
@@ -0,0 +1,199 @@
+ACPC Poker Gui Client
+The [Annual Computer Poker Competition][ACPC homepage] 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.
+More details
+* [GitHub][ACPC Poker GUI Client GitHub] - Code
+* [Documentation][documentation] - Documentation
+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:
+* [ACPC Dealer][ACPC Dealer GitHub] - Wraps the [<em>ACPC Dealer Server</em>][ACPC competition server] in a handy gem with a convenient runner class, and a script for compiling and running the dealer and example players.
+* [ACPC Dealer Data][ACPC Dealer Data GitHub] - Utilities for extracting information from [<em>ACPC Dealer Server</em>][ACPC competition server] logs. Used for mostly for testing.
+* [ACPC Poker Basic Proxy][ACPC Poker Basic Proxy GitHub] - Utilities for communicating with the [<em>ACPC Dealer Server</em>][ACPC competition server].
+* [ACPC Poker Match State][ACPC Poker Match State GitHub] - Provides a manager for the state of a poker match.
+* [ACPC Poker Player Proxy][ACPC Poker Player Proxy GitHub] - Provides a full proxy through which a match of poker may be played with the [<em>ACPC Dealer Server</em>][ACPC competition server]. Match states sent by the dealer are retrieved automatically whenever they are available, and are interpreted and managed for the user.
+* [ACPC Poker Types][ACPC Poker Types] - Fundamental poker types like `Card`, `Player`, `GameDefinition`, and `MatchState`.
+* 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][RVM homepage]. Or you can follow these [instructions][Ruby downloads] to install via a different method.
+* Git - While this should only be required if you want to install Ruby via [RVM][RVM homepage], installing Git also makes working with this repository easier, so it is recommended. Follow these [instructions][Git setup] to do so.
+* [Bundler][Bundler homepage] - Bundler is a Ruby gem that manages a project's gem dependencies. It requires zlib, which can be installed through [RVM][RVM homepage] by running
+ rvm pkg install zlib
+Once Ruby is installed, installing Bundler should only be a matter of running
+ gem install bundler
+* A non-LLVM version of GCC - This may require some extra steps on OSX as some versions of XCode no longer include such compilers. There are many [discussions on solutions for this on stack overflow](
+Download [the code][ACPC Poker GUI Client GitHub], which can be done by running
+ git clone git://
+Next, download a [<em>MongoDB</em>][MongoDB downloads] 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 [<em>Apache</em>][Apache homepage], including gems and [<em>Beanstalkd</em>][Beanstalkd homepage], and will complete the MongoDB setup.
+Non-gem dependencies
+The [<em>Beanstalkd background process server</em>][Beanstalkd homepage] is used to host background processes. Background processes are required so that game state can persist beyond a single HTTP request.
+[<em>MongoDB</em>][MongoDB homepage] 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 [<em>Apache server</em>][Apache homepage] hosts the application proper in production mode. This is currently done with Apache-Rails integration through [<em>Phusion Passenger</em>][Phusion Passenger homepage]. As [Apache][Apache homepage] 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 [<em>Apache</em>][Apache homepage] and [<em>Phusion Passenger</em>][Phusion Passenger homepage] 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][ACPC Poker GUI Client GitHub] and install any missing gems.
+These tasks can be done separately too (as can all rake tasks, see Rakefile for more details), with [Git][Git homepage] and [Bundler][Bundler homepage] 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][Rails generators tutorial] on [_Rails_][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 &copy; 2012 by the Computer Poker Research Group, University of Alberta. See [LICENSE]( for details.
+Further resources
+* [Annual Computer Poker Competition][ACPC homepage]
+* [Beanstalkd][Beanstalkd homepage] - The background process server used by this project.
+* [Coffescript][Coffeescript homepage] - JavaScript in a candy coating. Used by default as of [Rails][Rails] 3.1 and used in this project's views.
+* [Gem Bundler][Bundler homepage] - Gem dependency management tool used by this project.
+* [GitHub][GitHub homepage] - Host for this project's code.
+* [Git][Git homepage] - Version control system used by this project.
+* [God process monitoring][God homepage] - Used to manage background processes in production.
+* [Haml][Haml] - The template language used by this project's views.
+* [Markdown][Markdown] - The formatting syntax used to write most of this project's non-code documentation.
+* [MongoDB][MongoDB homepage] - The database back-end for this project.
+* [Phusion Passenger][Phusion Passenger homepage] - Enables integration between [_Rails_][Rails] and [_Apache_][Apache homepage] in production.
+* [Programming Ruby][Programming Ruby] - a tutorial on Ruby programming.
+* [RDoc][RDoc] - The formatting syntax used to write some of this project's non-code documentation, when [Markdown][Markdown] is not enough.
+* [RVM][RVM homepage] - Ruby installation and version manager.
+* [Railscasts][Railscasts] - Ruby on Rails video tutorials.
+* [Rake][Rake] - Ruby build program.
+* [Ruby on Rails][Rails] - Web application framework used by this project.
+* [][] - Documentation hosting site used by this project.
+* [SASS][SASS] - Styling language extension of CSS used by default as of [Rails][Rails] 3.1 and is used in this project.
+* [Stalker gem][Stalker homepage] - Ruby [_Beanstalkd_][Beanstalkd homepage] interface.
+* [The Apache Project][Apache homepage] - The production web server used by this project.
+* [The Computer Poker Research Group][CPRG homepage]
+* [The Ruby Programming Language][Ruby] - The foundational language of this project.
+* [University of Alberta][UAlberta homepage] - Host institution to the [Computer Poker Research Group][CPRG homepage].
+* [YARD][YARD] - The documentation tool used by this project, which also defines tags used by in-code documentation.
+ Link references
+ ================
+ General
+[ACPC competition server]:
+[ACPC homepage]:
+[Apache homepage]:
+[Beanstalkd homepage]:
+[Bundler homepage]:
+[CPRG homepage]:
+[Coffeescript homepage]:
+[Git homepage]:
+[Git setup]:
+[GitHub homepage]:
+[God homepage]:
+[MongoDB downloads]:
+[MongoDB homepage]:
+[Phusion Passenger homepage]:
+[Programming Ruby]:
+[RVM homepage]:
+[Rails generators tutorial]:
+[Ruby downloads]:
+[Stalker homepage]:
+[UAlberta homepage]:
+ Project specific
+[ACPC Dealer Data GitHub]:
+[ACPC Dealer GitHub]:
+[ACPC Poker Basic Proxy GitHub]:
+[ACPC Poker GUI Client GitHub]:
+[ACPC Poker Match State GitHub]:
+[ACPC Poker Player Proxy GitHub]:
+[ACPC Poker Types]:

0 comments on commit 38a4b52

Please sign in to comment.