Giter Site home page Giter Site logo

ggp's Introduction

=====================================
= GENERAL GAME PLAYING BASE PACKAGE =
=====================================

Application Suite for the General Game Playing Project;
 - A GUI-based GameKiosk        (for playing human-vs-computer matches)
 - A GUI-based GamePlayer       (for running computer players)
 - A GUI-based GameServer       (for hosting matches)
 - A GUI-based GDLValidator     (for validating game rulesheets)

Support code for the above.

                           === QUICK START GUIDE ===

    Getting started is as simple as writing a new player that inherits from the
StateMachineGamer class. StateMachineGamer is based on the state machine view
of general game playing, in which playing a game is represented as proceeding
through a state machine. The underlying state machine, which you can access via
getStateMachine() when inheriting from StateMachineGamer, provides methods that
you can use to investigate the game being player:

    * Each game has a starting state.
        getInitialState() is the starting state.

    * Each state has legal moves for every player.
        getLegalMoves(state, role) are the legal moves for <role> in <state>.

    * Some states are terminal, and in those states "goal" values are defined
      for every player, indicating whether they won or lost.
        isTerminal(state) indicates whether a state is terminal.
        getGoal(state, role) is the goal value for <role> in <state>.

    * Given a legal move for each player, you can transition from one state to
      the next state, after the players make their respective moves.
        getNextState(state, moves) is the result of making <moves> at <state>.

    A simple Prover-based state machine implementation is included in GGP Base,
so you don't need to worry about the details of converting a game description
into a state machine. To write a gamer based on StateMachineGamer, derive your
class from players.gamer.statemachine.StateMachineGamer. Applications like the
PlayerPanel should automatically recognize your new class and it should appear
in their lists of available players right away.

    For examples of simple players, see src/player/gamer/statemachine/reflex,
where two extremely simple "reflex-based" players are included: LegalGamer and
RandomGamer. LegalGamer always chooses the first legal move available, and the
RandomGamer always chooses a random legal move.

                             === BUILD NOTES ===

    The project must be built with Java 7 or later.

    The project contains Eclipse project files that allow it to be imported
directly into Eclipse as an "Existing Project" or "Project from Git". This is
the easiest way to get started with building, running, and modifying the code.

    For those who don't want to use Eclipse, there is also a Gradle-based build
system. Gradle can generate project files for IntelliJ IDEA or build and test
the codebase from the command line. The commands below use a Gradle wrapper
included in the repository that automatically installs Gradle when run.

Sample commands (use gradlew.bat instead if on Windows):

Confirm Gradle version:        ./gradlew -v
Show list of available tasks:  ./gradlew tasks
Compile code and run tests:    ./gradlew build
Compile without running tests: ./gradlew assemble
Run the Kiosk app:             ./gradlew kiosk
Run the Player app:            ./gradlew player
Run the Server app:            ./gradlew server
Create IntelliJ IDEA files:    ./gradlew idea

See the PROGRAMS file for additional programs that can be run, including
non-GUI player and server applications.

                              === MISC NOTES ===

* This is the 4/1/2010 release of GGP code for CS227B, compiled and maintained
  by Sam Schreiber with help and support from Ethan Dreyfuss, Eric Schkufza,
  Keith Schwarz, Steven Bills, and Mike Mintz.

* This project is licensed under the New BSD License. Licensing information for
  the project can be found in the licenses/LICENSE file. Licensing information
  for the included external libraries can be found in the licenses/ directory.

ggp's People

Contributors

marianatuma avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.