Ultimate TTT - Server
Ultimate Tic Tac Toe Algorithm - Game Server
This is a system intended for games & hackathons mainly, for teams to write their own bot and compete against other bots.
They will be playing games of "Ultimate Tic Tac Toe", which provides a great opportunity for learning, predicting moves...
Getting started
Deploy online
You can directly deploy the server to Heroku for a quick start:
When deploying, choose any available App Name (or let Heroku decide for you), and click on Deploy. Once it's finished browse to https://{app-name}.herokuapp.com
and you should see the server welcome message.
If you open our web client, you can then connect it to the server by clicking on "Connect" and entering https://{app-name}.herokuapp.com
as the server host.
Install locally
$ npm install -g uttt
Alternatively, clone this repository, cd into it, and run npm link
to make the executable available:
$ git clone git@github.com:aurbano/ultimate-ttt-server.git$ cd ultimate-ttt-server$ npm link
Run in online mode
By default, the server will start in online mode and listen for players on port 3141
.
The server starts up a terminal GUI displaying the current online players and game stats. Players are paired automatically as soon as there are two available players.
By default the server will have players play 1000 games per session.
You can launch the server using:
$ uttt --gui
Options:
uttt
Ultimate Tic Tac Toe - Game Server
Options
--verbose The input to process.
-v, --version Display the server version
-p, --port 3141 Port on which the server should be started (defaults to 3141)
-u, --gui Display a fancy GUI in the terminal (only available in online mode)
-g, --games 1000 Number of games to play, defaults to 1000
-t, --timeout 100 Milliseconds after which a player loses (defaults to 100)
-h, --help Print this guide
Synopsis
$ uttt --gui
$ uttt --games 100
$ uttt --port 5000
$ uttt --help
When running in online mode you can also use env variables to override the settings (which is very useful when deploying to a server for example)
PORT
overrides the portTTT_TIMEOUT
overrides the timeoutTTT_GAMES
overrides the number of games that are played per round
The server uses the ultimate-ttt
Nodejs implementation of the game to validate and verify game states.
If you're developing a client in JavaScript you can also use that package to maintain your local state easily.
Roadmap
Execute X number of games and display statsSetup a server so clients can play over a socket- Setup a DB so players can use a token to identify
Create a web frontend to see stats and manage the competition(ultimate-ttt-web)
Testing a client
This repository includes a test file that can be run against a custom client to verify that it does the basics right.
Simply copy tests/client.test.js
and point it to your implementation. The tests can be run by installing ava
and then adding it as the test runner in your package.json
file.