Description
The overall goal is to make an asynchronous multiplayer Conway's Game of Life.
- Follow all normal rules of Conway's Game of Life. (Note that updated time steps are always based on prior cells. Do not update the current cells based on current cells.)
- The board size should be a minimum of 16 x 16 cells.
- The game logic should be "played" and updated server side.
- The client receives updates and displays them. The client can click on a cell to make a cell alive or dead.
- Each client should be a unique color, (and give the user a choice of a few colors.) If a user clicks on a cell to make the cell alive, the cell becomes that color. If a cell were to become alive due to it being dead and having three living neighbors, the new alive cell must be an average of the colors of those three cells.
- The game should feel asynchronous in that the screen shouldn't reload to get new game state data.
- Do not worry about picky synchronization issues or race condition issues.
- The game should work with one or more browsers watching the game and all able to participate.
- I don't care if you have to manually start the game on the server or manually stop the game on the server. If that's easier for you, go ahead.
- The server must be either Java or .NET Core. It cannot be PHP, Node.js, or any other framework.
- The database can be whatever you choose on whatever server you choose. If you can find a way to do this without a database, that is fine as well. Most students in the past found a way to make it work through server side objects that share among multiple client sessions.
- Programming this is probably easier to do asynchronous coding using WebSockets (server pushes data to client) instead of some AJAX approach (client pushes request and server responds).
- The game must run on a publicly accessible server. It cannot be a student's home server.