Ne vous fiez pas au GIF animé de la page d'accueil du site.
Il est là pour illustrer le fonctionnement global de l'arène, mais il est faux.
Pour communiquer, l'arène (le serveur hébergeant botsarena) fait des requetes http(s) de type POST vers les bots. Le message est dans le corps de la requête au format JSON.
Votre bot répond par un array au format JSON
{"game-id":"1126","action":"init","game":"tictactoe","players":2,"board":"","player-index":0}
Si on décompose le tableau pour l'expliquer:
Votre bot doit répondre au format JSON:
{"name":"botName"}
L'arène ne vérifie pas actuellement cette réponse, l'étape d'init a été insérée pour assurer la compatibilité avec Bolosseum. Si votre bot repond une page blanche à cette étape (action=init), ça marchera dans le cadre de botsarena.
L'arène vous envoie par exemple le message suivant:
{"game-id":"1126","action":"play-turn","game":"tictactoe","players":2,"board":{"0-0":"","0-1":"","0-2":"","1-0":"","1-1":"","1-2":"","2-0":"","2-1":"","2-2":""},"you":"X","player-index":0}
Elle est représenté par un sous-tableau. Les index correspondent aux coordonnées x-y de la case. les valeurs peuvent être:
{"game-id":"1126","action":"init","game":"tictactoe","players":2,"board":"","player-index":0}
{"name":"moul-tictactoe","play":null,"error":null}
{"game-id":"1126","action":"init","game":"tictactoe","players":2,"board":"","player-index":1}
{"name":"moul-tictactoe","play":null,"error":null}
{"game-id":"1126","action":"play-turn","game":"tictactoe","players":2,"board":{"0-0":"","0-1":"","0-2":"","1-0":"","1-1":"","1-2":"","2-0":"","2-1":"","2-2":""},"you":"X","player-index":0}
{"name":"","play":"0-1","error":null}
moul2 joue en 0-1 la nouvelle grille est X
{"game-id":"1126","action":"play-turn","game":"tictactoe","players":2,"board":{"0-0":"","0-1":"X","0-2":"","1-0":"","1-1":"","1-2":"","2-0":"","2-1":"","2-2":""},"you":"O","player-index":1}
{"name":"","play":"1-1","error":null}
moul2 joue en 1-1 la nouvelle grille est X O
{"game-id":"1126","action":"play-turn","game":"tictactoe","players":2,"board":{"0-0":"","0-1":"X","0-2":"","1-0":"","1-1":"O","1-2":"","2-0":"","2-1":"","2-2":""},"you":"X","player-index":0}
{"name":"","play":"0-0","error":null}
moul2 joue en 0-0 la nouvelle grille est X X O
{"game-id":"1126","action":"play-turn","game":"tictactoe","players":2,"board":{"0-0":"X","0-1":"X","0-2":"","1-0":"","1-1":"O","1-2":"","2-0":"","2-1":"","2-2":""},"you":"O","player-index":1}
{"name":"","play":"0-2","error":null}
moul2 joue en 0-2 la nouvelle grille est X X O O
{"game-id":"1126","action":"play-turn","game":"tictactoe","players":2,"board":{"0-0":"X","0-1":"X","0-2":"O","1-0":"","1-1":"O","1-2":"","2-0":"","2-1":"","2-2":""},"you":"X","player-index":0}
{"name":"","play":"2-0","error":null}
moul2 joue en 2-0 la nouvelle grille est X X O O X
{"game-id":"1126","action":"play-turn","game":"tictactoe","players":2,"board":{"0-0":"X","0-1":"X","0-2":"O","1-0":"","1-1":"O","1-2":"","2-0":"X","2-1":"","2-2":""},"you":"O","player-index":1}
{"name":"","play":"1-0","error":null}
moul2 joue en 1-0 la nouvelle grille est X X O O O X
{"game-id":"1126","action":"play-turn","game":"tictactoe","players":2,"board":{"0-0":"X","0-1":"X","0-2":"O","1-0":"O","1-1":"O","1-2":"","2-0":"X","2-1":"","2-2":""},"you":"X","player-index":0}
{"name":"","play":"1-2","error":null}
moul2 joue en 1-2 la nouvelle grille est X X O O O X X
{"game-id":"1126","action":"play-turn","game":"tictactoe","players":2,"board":{"0-0":"X","0-1":"X","0-2":"O","1-0":"O","1-1":"O","1-2":"X","2-0":"X","2-1":"","2-2":""},"you":"O","player-index":1}
{"name":"","play":"2-1","error":null}
moul2 joue en 2-1 la nouvelle grille est X X O O O X X O
{"game-id":"1126","action":"play-turn","game":"tictactoe","players":2,"board":{"0-0":"X","0-1":"X","0-2":"O","1-0":"O","1-1":"O","1-2":"X","2-0":"X","2-1":"O","2-2":""},"you":"X","player-index":0}
{"name":"","play":"2-2","error":null}
moul2 joue en 2-2 la nouvelle grille est X X O O O X X O X Match nul