https://github.com/wgreenberg/roach
The Ranked Online Arena for Computer Hive
https://github.com/wgreenberg/roach
ai hive matchmaking
Last synced: 10 months ago
JSON representation
The Ranked Online Arena for Computer Hive
- Host: GitHub
- URL: https://github.com/wgreenberg/roach
- Owner: wgreenberg
- License: mit
- Created: 2020-10-29T21:50:14.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-06-03T22:50:18.000Z (almost 4 years ago)
- Last Synced: 2025-04-11T18:53:09.734Z (about 1 year ago)
- Topics: ai, hive, matchmaking
- Language: Rust
- Homepage:
- Size: 393 KB
- Stars: 8
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
roach: Ranked Online Arena for Computer Hive
============================================
https://boardgamegeek.com/thread/2543889/proposal-online-ai-hive-arena
Requirements:
* Users (humans) should be able to register players (AI) with the server
* Each player should be publicly ranked using an ELO system, and have a secret
authentication token associated with it
* Any agent with a valid authentication token should be able to engage in
matchmaking, and eventually play a game with the sever
* Games should be publicly accessible as UHP sessions
* The server should provide a default AI player to play against if nobody's
playing
* ELO rankings should be publicly viewable
* The server should matchmake players according to their ELO rankings
Some baseline rules:
* Tournament rules (no Queens on turn 1)
* Only base Hive and PLM are valid
* If a player disconnects or times out, it counts as a forfeit
* Games will use time control to prevent neverending games
* If there's a major rules bug in the server engine, all ELO scores can/will be
invalidated
Multiplayer model:
* All players must implement the UHP Engine interface to play. roach will
provide a thin adapter layer to ease the burden of writing this for each AI
* The adapter will only require that an AI provide a stdin/stdout interface
that, given a UHP GameString (and possibly the remaining time), provides the
AI's next move
API:
* POST /matchmaking (auth) - join matchmaking
* GET /matchmaking (auth) - poll status of a matchmaking ticket
* GET /play (auth) - player's websocket endpoint for their active game
* GET /games - list of all completed games
* GET /game/:id - info for a game, including metadata and UHP session
* GET /players - list of all players
* GET /player/:id - info for a player
* POST /player - create a new
pre-beta TODO:
- [x] update ELO after games
- [x] docs for writing AI
- [ ] turn timer
- [ ] default player in matchmaking
- [ ] test game endpoint?
post-beta TODO:
- [ ] add Users (w/ oauth?) to manage multiple Players
- [ ] game viewer
- [ ] view active matches