-
Notifications
You must be signed in to change notification settings - Fork 153
/
overview.html
42 lines (38 loc) · 2.77 KB
/
overview.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<body>
Application Suite for the General Game Playing Project;<br/>
- A GUI-based GameKiosk (for playing human-vs-computer matches)<br/>
- A GUI-based GamePlayer (for running computer players)<br/>
- A GUI-based GameServer (for hosting matches)<br/>
- A GUI-based GDLValidator (for validating game rulesheets)<br/>
Support code for the above.<br/>
<p>
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:</p>
<ul>
<li> Each game has a starting state <ul> <li> getInitialState() is the starting state. </li> </ul> </li>
<li> Each state has legal moves for every player <ul> <li> getLegalMoves(state, role) are the legal moves for role in state. </li> </ul> </li>
<li> Some states are terminal, and in those states "goal" values are defined for every player, indicating whether they won or lost.<ul> <li> isTerminal(state) indicates whether a state is terminal. </li> <li> getGoal(state, role) is the goal value for role in state </li> </ul> </li>
<li> Given a legal move for each player, you can transition from one state to the next state, after the players make their respective moves. <ul> <li> getNextState(state, moves) is the result of making moves at state. </li> </ul> </li>
</ul>
<p>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.</p>
<p>
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.</p>
<p>* This is the 4/14/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, Mike Mintz, and Evan Cox.</p>
<p>* 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.</p>
</body>