jGamer is a series of applications that allow users to play any kind of table top game over the Internet. Here are a few goals that I have for this project.
Versatile. jGamer will potentially play any tabletop game. A few "wishlist" games that I hope to create first: TicTacToe, Mancala, Chess, Checkers, Poker, Blackjack, and Magic: The Gathering.
Simple. The game controller API will be simple for anyone with a little programming experience to create new controllers
Tested. By using jUnit, the project will use unit tests to create a more stable system of software.
Distributed. Any servers will connect to other servers to share resources. By distributing the load, no single server is required to be a main server so this will allow people to serve games with computers and networks of all capabilities.
Scaleable Games in progress can switch servers as needed mid-game with little or no interruption in case a user needs to shut down his server or the load is too much for a server.
Update I have been exploring the JXTA library as a possibility for creating a p2p network for playing the games on. The library takes care of all of my concerns for creating a p2p network including handling NATed/Firewalled users, message passing, and network discovery.
Resumable. Games in progress can be paused and quit to be resumed later by players. If a game is quit prematurely, all players will store a portion of the game state in their own local clients so no one person has a complete view of the game state. When a person resumes their connection, the client will search out the matching players who were in the previous game and resume the game if that is the players wish. This will be useful for long running tabletop games that can take days or weeks to resolve.
Cross-Platform By using Java, jGamer can be run on any platform that Java supports which includes all modern platforms, portable phones, and PDAs.