Project 5 — Game

This project is to implement a multiplayer web-based game. The final code is due on May 6, 2016. You must choose your game by April 1 (and send me an e-mail).

As with P4, this game must be deployed on your Azure VM. Submit the code and the deployed application URL.

Choosing the Game

You can implement any game you choose, so long as it is multiplayer. I recommend choosing relatively simple 2–4-player games such as card games, board games, and things like Connect 4. Plain tic-tac-toe is too simple, but any more-sophisticated game is fine. Requiring things like fancy animations to be playable is likely to be too complex.

Games you may wish to consider:

  • Connect 4
  • Advanced Tic-Tac-Toe (e.g. circular, or a game that allows multiple variants)
  • Hangman
  • Wheel of Fortune
  • Chinese checkers
  • Hearts
  • Poker
  • Go†
  • Backgammon†
  • Checkers†
  • Pegs and Jokers†

Games marked with † are games that I expect to be harder to program, as they have complex rule-enforcement or scoring requirements. You are free to choose other games as well.

Send me an e-mail with your selected game by April 1.

Choosing a more complex game will not give you extra credit. It is better to implement a simple game well than to choose a complex game and not be able to complete it.

Software Requirements

  • Users need to be able to choose a screen name & provide an avatar picture, if they wish. Whether this is done via a login mechanism or some other pattern is up to you.

  • Users should be able to request a new game with an arbitrary opponent. If no one else is requesting a game, they should be in a waiting room, waiting for new match-ups; once enough players are in the waiting room to start a game, they should be put into a game together.

  • For two-player games that support login, users should be able to request a game with a specific player.

  • The local interaction and manipulation should all be done with JavaScript.

  • Use WebSockets to send moves and game state changes between the client and server.

  • Implement a chat system so that users can chat with each other while playing the game.

  • All game rule enforcement must be done on the server; it should reject invalid moves/plays.

  • When the game is over, announce the winner using an overlay. Give the user the option of a rematch (which will be granted if all other players want one; if some players don't, add new players from the waiting room) or a new game with random players.

  • Deploy on Azure with SSL.

Presentation

During the scheduled final exam period, you will demo your game. This demo needs to include live play between the demonstrator and one or more team members on their laptops, if at all possible.