Skip to content
Stefan Ochsenbein edited this page Jun 13, 2017 · 13 revisions

EGAMBO

egambo is an educational game server project for the exploration of Machine Learning techniques based on Erlang technology (for the server side). The source code is hosted on GitHub. An egambo server can host certain classes of board games which can be played by humans or robots. The project is in an early stage and only one first category of games is implemented so far (as a rule engine). We name it Tic-Tac-Challenge.

EGAMBO rules

  • Players must create an account for themselves. A random integer AccountID is provided by the server.
  • Players need to prove their identity with a password login, before the can play or create new game offerings.
  • Players offer to play against anyone or against particular external accounts (humans or bots, we don't always know).
  • Players can opt to play against one of the internal bots, implemented on the egambo server itself.
  • The currently available internal bots are quite stupid today but will hopefully play much stronger in the future.
  • We hope for strong external human players to train the internal bots (and ourselves).
  • The game server matches game offerings with other offerings and starts the game if both parties are present (connected).
  • Game offerings will expire when not matched and started for too long.
  • Started games will be lost by forfait if abandoned by one player (not continued for too long).
  • Internal egambo bots usually are always present and ready to play (except if they are being offline-trained).
  • Each particular type of game (board size and parameters) will eventually maintain a score list of strong players.

This is a plan. Some of these rules are only partly implemented as yet. Contributions are welcome.

Tic-Tac-Challenge

This game category represents a generalized version of well known two player board games

on rectangular boards of varying sizes (3x3 up to full GO board size 19x19). Two players alternate in placing their stones on a square or rectangular board. A minimum number of consecutive stones in horizontal, vertical or diagonal direction (called a run) wins the game.

There are many different games which can be played with on the existing egambo_tictac game rule engine. The difficulty (effort needed to become a perfect player) varies strongly among the particular board types (in particular the board size). This seems to be an ideal terrain for learning to build 'intelligent' robot players.

Tic-Tac-Challenge basic rules

  • The game is played on a rectangular board of 3 <= Width <= 19 and 3 <= Height <= 19
  • The game server decides randomly, which of the two players can start with playing the first stone. This player will always be called X. The other player uses the alias O.
  • The first player who places a minimum number Run of connected own stones (or jokers) in horizontal, vertical or diagonal direction wins the game (score +1). The other player looses the game (score -1).
  • The game can be defined (in the GameType details) to take place on a periodic board where stones placed anywhere in the base board frame are mirrored in all directions (horizontally, vertically, diagonally). This can simulate an infinite board size to some extent and brings in new risks for recognizing the opponent's strategy.
  • The game can have Gravity which means that stones fall down as in the popular Connect-Four game.
  • Certain game types have a predefined number of randomly placed Jokers (stones which can be used by either player to form a Run).
  • Other game types have a predefined number of Obstacles which prevent both players from placing a run on these pre-occupied cells on the board.
  • Jokers and obstacles can occur (in small numbers) in the same game but many game types do not use either of these two features (because they most probably add to an advantage for the player who has the first move).
  • The advantage for the player with the first move might be compensated in future versions with special opening rules, as seen in Renju.
Clone this wiki locally