On the client side there is Angular.JS, Require.JS, JQuery and HTML5 Canvas used.
On the server side we use Node.JS, Express.JS and MongoDB/CouchDB. The communication between server and client is done with REST like webservices and Server Sent Events.
In the lecture "XML based applications" at the HSZG we were working on a project called "SchachZWO Online". "Schach" is the german word for "chess" and "ZWO" is another word for "two" so (as you can guess) this is a chess like online game.
SchachZWO (offline)The basic for the project is a board game that a game author from dresden has developed. In his "SchachZWO" you play on a 7x7 or 9x9 board with some special figures: Instead of the rook and the queen you have the "Mann" (man) and "Frau" (woman). Instead of the pawn you have the "Rocks" and instead of the king you have the "Zenit" (zenith). On the 9x9 board you have two additional figures with special movement capabilities: The "Wissen" (knowledge) and the "Glauben" (faith). One of the main differences between chess and "SchachZWO" is that there are more than one possibilities to win the game. Beside the classical chess mate you win when you move your zenith to the middle field of the board. Only the zenith can step on this field in the middle, all other figures aren't allowed to step on the field. In the first place this rules might sound a little strange to you but it's realy fun to play the game. At the moment the board game isn't available for buying but it will be in the near future. Fisit the website of the game author when you like to know more: http://www.schachzwo.de.
SchachZWO OnlineOur project for the lecture was to create an online multiplayer browser game version of this game. In the client we used HTML5 canvas together with JQuery to draw the board and the figures. To create a modern Single-Page-Application we used Angular.JS and Require.JS in the client. On the server side we have a node.js together with express.js. There are REST like webservices where the client can GET the current state of the board and can POST new moves. To tell the client that the opponent has done a move we use Server-Sent Events to send messages. The database connection was created in a generic manner to be able to replace the database implementation. At the moment we have a MongoDB and CouchDB implementation.
State of PlayThe lecture is over and we finished the project. We have decided to put the source code on github: https://github.com/lestard/schachzwo-online and you can play the game online at: http://schachzwo.inf.hszg.de. Please note that this was the first Node.JS project for all of us. We aren't pros and we hadn't had much time to finish this project so the source code will probably not be high quality. But of cause we always like to learn: When you have suggestions on what we can do better please tell us! Also note that the game is sort of a prototype. We hadn't had the time to do much quality assurance and testing so it's best to see the hostet version as sort of a "BETA". When you find bugs please report them on github: https://github.com/lestard/schachzwo-online/issues.