This repository contains a Java video game implementation of the board game Santorini. It has been developed for the course "Software Engineering" at Politecnico di Milano as part of the final examination projects for the Bachelor in Computer Engineering. In a team of 3 students we implemented this multiplayer online game with 3D graphics. In the game it is possible to play multiple concurrent matches. Sockets are used for asynchronous communication. For this project we have been awarded the maximum grade of 30 cum laude/30.
- 2-3 Online players
- GUI: Play in a 3D rendered world
- Multiple parallel online games
- Advanced gods: Apart from the full rules and the basic gods, we implement advanced gods
- Normal or hardcore game-modes: In hardcore mode, illegal moves are allowed and make you loose the game. In normal mode, the allowed moves are displayed to the user which can only choose among them
-
10568949 Andrea Aspesi (@andreaaspesidev)
andrea1.aspesi@mail.polimi.it -
10580728 Matteo Bettini (@matteobettini)
matteo1.bettini@mail.polimi.it -
10560693 Mirko De Vita (@MirkoDeVita98)
mirko.devita@mail.polimi.it
Functionality | State |
---|---|
Basic rules | ✔️ |
Complete rules | ✔️ |
Socket | ✔️ |
GUI | ✔️ |
CLI | ✔️ |
Multiple games | ✔️ |
Advanced Gods | ✔️ |
-
In the deliveries folder there are two multi-platform jar files, one to set the Server up and the other one to start the Client.
-
The Server can be run with the following command, as default it runs on port 4567:
> java -jar SantoriniServer.jar
This command can be followed by these arguments:
- -port: followed by the desired port number between MIN_PORT and MAX_PORT as argument;
- -v: to activate logging on the console;
- -log: followed by a file name, to activate logging both in the console and in the chosen file;
- -help: to get help.
-
The Client can be run with the following command:
> java -jar SantoriniClient.jar
- This command sets the Client on Graphical User Interface(GUI) mode, but it can be followed by -cli if the Command Line Interface(CLI) is preferred.
- The Server's IP and port to connect to can be specified during the execution.
Use maven to build jar files for both the Client and the Server by choosing the appropriate Maven Profile.
To build the Server, issue:
> mvn clean
> mvn package -P Server
To build the Client, issue:
> mvn clean
> mvn package -P Client
After these processes both jars can be found in the builds folder.
Two game-modes are implemented:
- Normal: the Server sends the possible moves/builds to the Client so that they are displayed to the Player during his/her turn.
- Hardcore: in this mode there are no suggestions and the Player can lose if he/she does not obey to Gods' rules.
The model and card's packages have been entirely tested and documentation of the project has been written using JavaDocs:
This project is developed in collaboration with Politecnico di Milano and Cranio Creations.