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.
You can join a hosted instance at traze.iteratec.de.
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
The game protocol facilitates multiple MQTT topics with JSON payload. An extensive documentation of the protocol details is provided on traze.iteratec.de.
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:
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
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
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)
traze-golang-bot a traze bot written in go.