We as a group had a goal to implement a multiplayer-game using Java as programming language, and to directly use the methods and techniques taught during the course. Mainly, we needed to set up a multi-threaded, server-client system that handled communication via TCP. The game is a two-player deathmatch game where each play controls a worm using the directional arrows on the keyboard and fires a rocket using space. The goal is to defeat the other player.
A game is set up by either hosting or joining a game, and then you play until one of the players are defeated.
For this project, we used 3rd party libraries Slick and LWJGL to implement images and animations, as well as defining game objects and collision detection.
When we started out, we hoped we would at least be able to have full control over players' movements across the network, as well as having the game synced for both players, so that hosting or joining a game doesn't lead to unfair advantages or disadvantages. Projectiles and other game objects have to be well written in order for this to happen, and we think we made good on that goal.
A few bits of functionality were left out, such as a 4-player mode, other maps and guns. However, the code is fully prepared for these additions, and may be added at a later time.
A game is set up by either hosting or joining a game, and then you play until one of the players are defeated.
For this project, we used 3rd party libraries Slick and LWJGL to implement images and animations, as well as defining game objects and collision detection.
When we started out, we hoped we would at least be able to have full control over players' movements across the network, as well as having the game synced for both players, so that hosting or joining a game doesn't lead to unfair advantages or disadvantages. Projectiles and other game objects have to be well written in order for this to happen, and we think we made good on that goal.
A few bits of functionality were left out, such as a 4-player mode, other maps and guns. However, the code is fully prepared for these additions, and may be added at a later time.