Hello,

Welcome to the beta-test version of the acquire system. This file will explain to you everything you need to have and do in order to demonstrate the acquire software.

First of all, let us offer an invitation to you to come by Korman 250 around 2:00pm on 10 May, 2000 (Thursday) for a demonstration if you would like that.

If you are having problems installing this software, please email michael@czajkowski.ws

First lets discuss the features of this version:

Features the Beta-Test Version
--------------------------------
* Capability for up to 6 agents to play Acquire from any unix system.
* Agents play a full game of acquire picking random tiles and stocks to buy. Agents able to deal with stock merging, trading, and stock purchasing.
* Complete output file which indicates who played what tile in what order and who won the game at the end of the game.
* Comprehensive outputting of the server's moves and agent's moves while playing the game.
* Capability to play any number of games in a session, not limited to only one game.

What is left to come
--------------------
* Agent's playing with planning and heuristics instead of random choosing.
* Agent's capability to play with its personal game engine as an aid to the planning and heuristics built in.

What you need to run the demonstration
--------------------------------------
* ACL Lisp (/usr/local/bin/acl on queen.mcs.drexel.edu)
* CMU Lisp (/usr/local/bin/lisp on queen.mcs.drexel.edu)
* Java, version 1.3.0 or greater.

How to set up the software
--------------------------
Running the demonstration requires you to have several telnet windows open, or x-terminals open, a minimum of 5 will be needed. Open up 5 telnet sessions or 5 x-terminals now.

1.) Set up the first game server ::
***********************************
First you need to run two copies of the game server. The game server houses the Acquire engine and is necessary to be running before anything else (as it is the server). 

Run the first game server ::
In the FIRST x-terminal/telnet window, do this: go into the engine/ directory from this directory. Then start the engine by calling: java -classpath /<<path to this directory>>/com/ Server <<Name of this machine>> <<Port>>

For example:

java -classpath /pse1/umczajko/Classes/SEWRK/acquire/src/com/ Server brillig.mcs.drexel.edu 8888

This runs the server 
	located at /pse1/umczajko/Classes/SEWRK/acquire/src/com/ 
	on the machine brillig.mcs.drexel.edu 
	at port 8888.

2.) Run the second game server :: 
*********************************
This server is necessary for the agents to connect to, it is their "players engine" which allows the agents to experiment with move. Right now, the players engine is deactivated but the agents still need to connect to it.

In the SECOND x-terminal/telnet window, do this: go into the engine/ directory from this directory. Then start the engine by calling: java -classpath /<<path to this directory>>/com/ Server <<Name of this machine>> <<Port>>

For example:

java -classpath /pse1/umczajko/Classes/SEWRK/acquire/src/com/ Server brillig.mcs.drexel.edu 8889

Make sure that you run the server on a different port than the game server in step 1.

3.) Run the UserController Software::
*************************************
Now the game server needs to have a user controller object attached to it. The user controller starts the games and keeps track of the outcome of games.

In the THIRD x-terminal/telnet window, do this: go into the io/ directory from this directory. Then start the engine by calling: java -classpath /<<path to this directory>>/com/ UserController <<Name of the machine game server is on>> <<Port of game server>> <<Number of Agents>> <<Number of Games>>

For example:

java -classpath /pse1/umczajko/Classes/SEWRK/acquire/src/com/ UserController brillig.mcs.drexel.edu 8888 2 1

This runs the UserController:
	at the location: /pse1/umczajko/Classes/SEWRK/acquire/src/com/
	with the game server: brillig.mcs.drexel.edu
	with the game server port: 8888
	with the number of agents: 2
	with the number of games: 1

4.) Start the agents.
*********************
In step three we indicated we wanted 2 agents, to get more, just repeat this step.

To start an agent you 

In the FOURTH/FIFTH/(etc.) x-terminal/telnet window, do this: go into the agent/ directory from this directory. Then start the engine by calling: java -classpath /<<path to this directory>>/com/ Agent <<Name of the machine with player's engine>> <<Port of the player's engine>> <<Name of the machine with game server engine>> <<Port of the game server engine>>

For instance:

java -classpath /pse1/umczajko/Classes/SEWRK/acquire/src/com/ Agent brillig.mcs.drexel.edu 8889 brillig.mcs.drexel.edu 8888

This runs an agent at:
	location /pse1/umczajko/Classes/SEWRK/acquire/src/com/
	whose players engine is located at: brillig.mcs.drexel.edu
	whose players engine is on port: 8889
	whose game server engine is located at: brillig.mcs.drexel.edu
	whose game server engine is on port: 8888

Note that the game server example in step 1 and the players engine in step 2 were used.

*** THE GAME BEGINS WHEN ALL AGENTS HAVE CONNECTED ***
This means that if you asked for 2 agents to be playing in step 3, the game server will NOT begin until 2 agents have connected. Once 2 agents have connected, the game will begin and a lot of messages will fly by.

The server, agent, and user controller are in verbose mode, you will see every interaction fly by. This is quite messy, so ignore their messages.

*** When the game finishes, every window except the players engine will return to the prompt. You have to control-c out of the players engine as it is not fully developed right now. Sorry about this! ***

The game output
---------------

All of the data from the game that was played is located in /io/GameHistory.text. Inside this file you will see each agent's move and the total money that they had at the end of the game, and an indication who had won.

Thank you for taking the time do go through our demonstration, We look forward to giving you a completed project within a few weeks.

Team 4: The Acquire Project