Skip to content

Latest commit

 

History

History
65 lines (42 loc) · 2.69 KB

README.md

File metadata and controls

65 lines (42 loc) · 2.69 KB

Traze

Traze is a multi client online tronlike game with MQTT based protocol. It aims to provide a playground for various game clients, AI game bots, and showcase of a reasonable secure MQTT application, and it’s fun! You can write your own game client and participate in the game using the specified protocol.

Hosted by iteratec

You can join a hosted instance at traze.iteratec.de.

Run a Game locally

You can start a local game using the docker-compose stack provided in this repository.

git clone https://github.com/iteratec/traze.git
cd traze
sudo docker-compose up

This will start a local gameserver, mqtt broker, webui, as well as a couple of bots, binding the following local host ports:

Service Port
webgrid 80
documentation 8080
mqtt broker 1883
mqtt websocket 9001

You can watch the local game in your browser at http://localhost:80

Bots can be scaled using docker-compose.

sudo docker-compose scale random-bot=5

Protocol

The game protocol facilitates multiple MQTT topics with JSON payload. An extensive documentation of the protocol details is provided on traze.iteratec.de.

Components

The traze project consists of multiple components. Each component has their own repository and lifecycle. You can find all traze related code under the traze topic on github. Some important examples are:

Core

These are the core components of the traze game

traze-docs web documentation of the traze protocol.

traze-gamserver haskell game server implementation for the traze protocol.

traze-web-grid web view that renders the game state as a grid with players on a canvas

Client Libraries

These are some client libraries that can be used to interact with the traze game server.

traze-client-python a client library based on Python 3.6.

traze-goclient a client library for golang

Human Interface Clients

Game clients for human players

traze-client-java a client based on Java.

traze-javascript-vanilla a client based on (vanilla) ES6 JavaScript which is both for steering a player and rendering the grid (demo)

Bot Implementations

traze-golang-bot a traze bot written in go.