Submitted by : George T. Heineman (heineman@cs.wpi.edu)
The game of Tic Tac Toe is often the first paper-and-pencil game played by small children. It introduces the basic elements of a two-player game, with a small set of easy rules, clear objectives, and clearly identified turns. However, once Tic Tac Toe is mastered, it becomes quickly apparent that every game should result in a draw; that is, there is a clear winning strategy for the first player every time. Because of its simplicity, Tic Tac Toe is often overlooked as a potential area for gaming.
The purpose of the Tic Tac Toe Tournament (T4) system is to explore the space of Tic Tac Toe variations and make it possible for multiple users to compete against each other by playing these variations. A tournament director should be able to set up a tournament (using modified Swiss Style Tournament rules appropriate for games where a draw is possible) and players can join the tournament, to engage in a multi-round runoff of Tic Tac Toe challenges. A tournament is composed of a minimum of 8 tables, as determined when the director initiates the first round of the tournament. The number of rounds to play with n players is the smallest integer greater than or equal to log2(n).
T4 should initially be provided with a set of Tic Tac Toe variations, but the tournament directory should be able to define and integrate additional variations as needed. Players should be able to log into the tournament system (after completing a simple on-line registration system) to participate. The tournament director maintains the integrity of the tournament, and can unilaterally kick-off any user (either temporarily or permanently) even in the middle of a game.
Currently, there is little information on Tic Tac Toe variations (http://en.wikipedia.org/wiki/Tic_tac_toe), but one can find different, quirky variations of Tic Tac Toe on the web. It should also be possible to develop new variations, as need and interest arise.
The objectives of T4 are to:
In the long-term, the success of the T4 project is based on a future ability to host as many T4 tournaments as one would ever want, and enable T4 clients to be able to rapidly find available tournaments to connect to. However, the current objectives limit our scope to a well-known tournament being played on a well known machine, to which T4 clients connect.
Tic-tac-toe is a game between two players, O and X, who alternate in marking the spaces in a 3×3 board. A player wins by getting three of their own marks in a horizontal, vertical or diagonal row. A game is drawn if all nine squares contain a mark and no player has three marks in a row.
A Tic Tac Toe variation conforms to the following general pattern:
Of course there is a web site http://www.tictactoe.com that plays an annoyingly perfect game of Tic Tac Toe; I have never won there; only have last.
Playing TicTacToe on paper is perhaps one of the oldest means of playing a two-player logic game; it is time to bring this game to the 21st century. Existing paper and pencil methods are inefficient, especially considering the many variations that have been proposed. One cannot play TicTacToe at a distance (unless reading moves over a telephone counts).
To make T4 a reality, we need to design a client/server architecture where the server maintains the tournament and clients join to participate. There is no mechanism for clients to "discover" available tournaments, clients must know in advance the tournament to which to connect (which is determined by a machine name and port). In our project, we expect that tournaments can host up to 64 active users
T4 supports two types of users:
Each of these users has the following capabilities:
The tournament director shall be able to execute the tournament server on a given machine (and valid port number, the default being 30303). There is an administrative client (made available to the tournament director) where the director can securely login to the tournament server to request the following functions:
The player shall be able to execute a T4 client that can securely login to the tournament server to request the following functions:
The tournament system has some automatic capabilities, in particular:
Standard GUI builders are employed for the T4 clients.
All code is written using Java to ensure that T4 Servers and T4 Clients can execute on MacOS, Linux, Un*x, Solaris, and Windows systems.
If the T4 tournament server fails, all connected T4 clients are immediately told of the situation, and the tournament is canceled. The clients can elect to reconnect (but the server may be permanently affected). There is no guarantee of continued service if a T4 tournament fails. If a T4 client fails, then all remaining games in the tournament are forfeited. If a disconnected client reconnects to the original tournament, he will only be able to participate once all rounds in the tournament have completed.
The target measure for average round-trip communication between T4 clients and T4 servers is 250ms. This performance measure is not relevant to the initial start-up time. Given that the information content of individual games is quite small, we expect to be able to support 100s of concurrent users within an individual tournament (though we restrict our initial set of users to no more than 64).
New TicTacToe variations should be easily integrated into the T4 Tournament code, regardless of the state of an active tournament. Variations that are integrated after a tournament has started are only available once the tournament completes all of its rounds, and resets.
Java JDK 1.5, together with the CMI Implementation (tutorial to be made available soon).
Omit this from your document
Omit this from your document
Omit from your document
Name: Start Tournament Participating Actors: Tournament Director |
Flow of Events: 1. Tournament director launches the T4 tournament server 2. Tournament director logs in securely to the T4 tournament server 3. After about one hour, 25 users have logged into the T4 tournament server 4. Tournament director begins the tournament and 24 are selected to play on 12 tables (the odd person out is told that they weren't selected for the tournament. 5. Given 12 tables, the number of rounds is 4. In the first round, players are randomly assigned to the tables, and the three available variations are assigned evenly as well. 6. The director starts the first round in the tournament. |
Name: Inspect Tournament Participating Actors: Tournament Director |
Flow of Events: 1. Tournament director logs in securely to the T4 tournament server 2. Tournament directory opens window, in which all available tables are present. The window is scrollable to enable all tables to be viewed. The board state for each table is visible as are the names of the two players (and which one has the turn), the specific TicTacToe variation, and the final state of the board. 3. As moves are made, the board state updates to reflect the changed state; as games are won (or lost) the winner (or loser) is clearly identified, together with the updated stats for each player. 4. When a round (other than the final) completes, the game auto-restarts. For the last round, statistics are presented for the final tournament result. |
See TicTacToe.uml document
To Be Finalized
Captures more precisely the dynamic behavior as identified by the use cases. Specifically, all actors and objects in the use case are clearly defined, and the total scope of the system is now in place.
3.4.5.1 Sample Client GUI
The user is initially presented with a window showing only (user/password/login). Once they have properly logged in, the other elements appear (perhaps the window enlarges as well). The upper right corner displays the status of the tournament. Under the 'game in progress' is a region where the TicTacToe board is shown. The rules section lists the specialized rules of the game. In the lower left corner is a text area describing the information to the user. It shows the status of the table being played, and contains text such as
For specialized TicTacToe variations, the GUI interface will walk the user through a move sequence. For example, in "Slide TicTacToe", the user must select the square that they want to move and the empty square into which it will slide [ two interactions ]. All game moves can be broken down into (a) Mouse Press actions; (b) keyboard actions. A little "state machine" can walk the user through the process of a move and package the move request to be sent to the server for processing.
When a player requests an INVALID move, they immediately lose the game [Tough Luck!] Once a player is in a tournament, they stay for the duration of the tournament or until they say "Exit Tournament". Once a tournament completes all of its rounds, the player is still "in the tournament" and will be immediately called upon to start the first round of the tournament once it starts again.