Skip to content
A collection of micro services to allow for quick development of AIs, and the games they play.
CSS JavaScript Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Cerveau @ 13e807c
Creer @ d534616
Games
Joueur.cpp @ 6f5dd23
Joueur.cs @ 9ed8a76
Joueur.java @ 59e4c2c
Joueur.js @ 00449e5
Joueur.lua @ 67eec05
Joueur.py @ 2dd1172
Joueur.ts @ dc1579d
Viseur @ 11f5d2d
Website
.gitattributes
.gitignore
.gitmodules
.travis.yml
LICENSE
README.md
add-mmai-dev-repos.sh
client-server-io.md
error-codes.md
fordirs.sh
gamelog-format.md
how-all-this-works.md
how-to-add-a-game.md
how-to-play.md
init.sh
megaminerai-prep.md

README.md

Cadre

A framework for creating networked AI and human games.

{Cadre}

All inspiration taken from MST's SIG-GAME framework, and most of the terminology is assuming some familiarity with it as this is a spiritual successor to it.

Features

  • Multi-Game Framework
    • One server instance can host multiple games at the same time, and the games can be completely different games.
    • All clients support this as well.
    • e.g. One server can host Chess, Checkers, Go, etc all at the same time and clients can choose which games to play.
  • A mix of JavaScript (via Node.js) and Python 3.4 to go from game concept to running engine. With clients in a variety of languages
    • To code a game server logic wise only a basic knowledge of programming concepts is required. CS 1570 (old 53) students should be capable of grasping the game logic, and contributing.
  • Easy generation of new games using the Creer codegen.
  • Automatic documentation creation to html docs. This is a new concept outside of the old SIG-GAME framework. Basically a codegen for documentation.
  • Games can be turn based or real time, with turn based code abstracted into an inheritable class for re-use between games.
    • More game prototypes can be added easily as new classes for re-use, such as hidden information games.
  • All logic is server side, with states updating for clients after anything changes.
  • Web interface on the server
    • Gamelog viewer with visualizer for all games
    • Automatic cross-language game documentation generation
  • Networking via TCP Sockets
    • Communication via json strings with support for cycles within game references
    • Only deltas in states are send over the network, never entire states, to maximize bandwidth and speed.
  • Automatic gamelog generation as a json structure of delta states, complete with game state and data on what caused the delta.
  • Every game instance is a seperate thread, so slower games don't block faster ones.
  • Extra fields present for Arena and Data Mining purposes
  • Clients can be adapted for human players, and if continued development a standalone visualizer could support this
  • Hooks to and for the Arena

What's what?

The naming scheme is simple, French:

Clients in Ruby, PHP, D, and Go are easily possible. In fact, so long as the language support json and tcp communication it should be easy to add a client in that language to this framework.

How to Play

For a detailed tutorial on how to play games using this framework see the howToPlay.md file alongside this README.

Other Notes

All the submodules are intended to be kept at the most recent commit on the master branch. To easily checkout them all on master just use the init.sh script:

./init.sh
You can’t perform that action at this time.