This game was developed as a computer game for the final examination of the Software engineering course at Politecnico di Milano (A.Y. 2019/2020) - Bachelor of Science thesis project.
Final score was 30 cum laude / 30 (A+)
- Alessandro Lisi (@PrivateAbstractAleLisi)
- Gabriele Marra (@gabrielemarra)
- Matteo Miceli (@micelimatteo)
Develop an online multiplayer board game with Java using the MVC pattern.
We developed the server and the client, with both CLI and GUI (JavaFX) interfaces.
To transmit data we used TCP protocol between server and clients along with JSON format and Java serialization.
The server supports multiple matches at the same time and waiting players are handled in a lobby.
For the full specification visit this link: Specification (Italian only)
Functionality | State |
---|---|
Simple rules | |
Complete rules | |
Socket | |
CLI | |
GUI | |
Multiple games | |
Persistence | |
Advanced Gods | |
Undo |
Requires Java 11 or a more recent version.
To execute the Server download the server.jar and execute the following command into the terminal:
java -jar server.jar
(Recommended) To execute the Client with GUI download the client.jar and execute the following command into the terminal:
java -jar client.jar -gui
To execute the Client with CLI download the client.jar and execute the following command into the terminal:
java -jar client.jar -cli
If you want, you can also select the desired UI at the start of the program. To select the UI during runtime please execute this command:
java -jar client.jar
An Online Server is running h24 on an Amazon AWS EC2 Instance and is ready to accept your client but, obviusly, you can't access to the output of the server. To use this Online Server please open the client with the GUI and select the "Online Server" option in the first screen.
The program accept different line arguments (flags) to set main settings of the program itself.
Server:
Flag | Result |
---|---|
-pingOff |
Disable the Ping System and the Socket Timeout |
-ping-stamp |
Print deatils about each Ping Event received |
Client:
Flag | Result |
---|---|
-pingOff |
Disable the Ping System and the Socket Timeout |
-cli |
Select the CLI as Program UI |
-gui |
Select the GUI as Program UI |
If both (-cli
and -gui
) commands are used at the same time, the program will ask you to choose the desired UI at the beginning of the execution.
To compile the program use Intellij Idea, select the desired profile (Server, Client-Win or Client-Mac), execute the following Maven command:
mvn clean package
In the folder Target you'll find the .jar file for the desired profile.
Please note that Client-Win and Client-Mac profiles are almost identical: the only difference between them is the order wich the javafx
dependencies are added.