Software Engineering Project 2020-2021
Maestri del Rinascimento is the final test of "Software Engineering" course of "Computer Science Engineering" held at Politecnico di Milano (2020/2021). It has been evaluated "30/30L".
Teacher: Pierluigi San Pietro
Group: SP10
Students:
Table of Contents
- Project specification
- Implemented Features
- Usage
- Communication Protocol
- Game GIFs
- Game Screenshots
- Software Used
- License
Project specification
The project consists of a Java version of the board game Maestri del Rinascimento, made by Cranio Creations.
You can find the full game here and the rules here.
The final version includes:
- initial UML diagram;
- final UML diagram, generated from the code by automated tools;
- working game implementation, which has to be rules compliant;
- source code of the implementation;
- source code of unit tests.
Implemented Features
Functionality | Status |
---|---|
Basic rules | 🟢 |
Complete rules | 🟢 |
Socket | 🟢 |
GUI | 🟢 |
CLI | 🟢 |
Multiple games | 🟢 |
Persistence | 🟢 |
Disconnection resilience | 🟢 |
Legend
🔴 Not Implemented 🟡 Implementing 🟢 Implemented
Usage
Windows/Linux/MacOS
- Open the command line
- Clone the repository
- In the repository's directory, run:
java -jar Maestri.jar [mode] [port] [ip] [nickname]
Modes:
Shortcut | Name | Description |
---|---|---|
-c |
-cli |
Starts the CLI and connects to server with port |
-g |
-gui |
Starts the GUI and connects to server with port |
-s |
--server |
Starts server with port |
Mode argument can be run without further arguments(TCP port & nickname). In such case or in case of mssing arguments these will be asked later.
Game GIFs
Note that the following GIFs related to the GUI show the state of the game when it was delivered for evaluation. Due to copyright reasons, the assets, which were provided without permission of making them freely available, have been later substituted with ones made by ourselves.
GUI
Game Turn | Real time updates |
---|---|
CLI
Game Screenshots
CLI
GUI
Note that the following screenshots related to the GUI show the state of the game when it was delivered for evaluation. Due to copyright reasons the assets, which were provided without permission of making them freely available, have been later substituted with ones made by ourselves.
- We implemented a 3D gui based on a simplified model of the server's state machine. The user can freely see their board, using W and S to cycle between Board view, Market view, and Frontal view, which covers every game component. While looking from the Frontal view, the player can use D and S keys to rotate around the table, with 90 degree steps. Both the CLI and GUI implement real time updates on the game state. Common elements, such as CardShop and ResourceMarket are shared between all players, each players sees them in front of their board but they are actually synchronized
- The CLI we made can contain vertical, horizontal lists of elements and custom drawn elements. Each list can contain other lists or elements. The user can select an option from each list or sublist and our input handler checks if the input is correct or asks to retype if it is not. A simplified standalone version of the CLI can be found here.
Testing
-
All unit test have been automated when possible. For some network functionalities it has been necessary to perform some manual QA instead of a mock test , for which it would have required too many stubs (being a stateful protocol) so we choose manual Quality Assurance.
-
All the model classes have been extensively covered, along with most of the controller's classes when possible. Some functionalities regarding production output conversion and leader activation do not have an automated test, but our manual tests led us to assert that the functionalities implemented are stable in all cases.
-
Clicking repeatedly during the drag and drop action may cause issues.
-
All the unit test have been run before each commit
Software Used
sequencediagram.org - sequence diagrams
Draw.io - UML diagrams
Intellij IDEA Ultimate - main IDE
Copyright and License
Maestri del Rinascimento is copyrighted 2020.
Licensed under the MIT License. You may not use this software except in compliance with the License.