View on GitHub


Software Engineering I project - B.Sc. thesis - PC-based board game of Lorenzo Il Magnifico by CranioCreations

Welcome to the Lorenzo il Magnifico game by MJM wiki! In this wiki you will be able to find some general information and requirements for our project.


  1. How to start the application
  2. Fifth player solution
  3. Game Customizability
  4. Specifications Covered
  5. Server Implementation

High level UML


How to start our application:

In order to start our application you should follow these few upcoming steps:

N.B. You can modify the max number of players by going to it.polimi.ingsw.ps19.constant.NetworkConstants and modifying the MAXPLAYERS constant up to 5 (to activate the fifth player). The server will enqueue the waiting players and it will wait a certaint time (taken from file) until all the players are connected or the timeout expires as requested by the specifications.

Fifth Player Solution:

We decided to add a little “spicy flavour” to the game by adding the figure of Satan into the game: his goal is to punish other players by subtracting them victory points. He has 99 victory points, and once per round he decides which player to punish preventing them to overcome him.

That Logo represents our first name first capital letter Matteo, Jimmy (yes, that is how it’s pronunciated that strange name), Mirko

Game Customizability

Customizability of development cards

In our game, development cards have a limited customizability range based on the card Type:

Board customizability

Customizability of development cards

In our game, development cards have a limited customizability range based on the card Type:

Specifications covered

Game specific requirements:

We implemented the complete set of rules, including the advanced rules. Then we tried out our personal idea of a fifth player and implemented it. So generally we should have covered all the game specific requirements.

Game agnostic requirements:

We used the MVC pattern to make a neater distributed system structure with one server handling many clients, implementing both socket and rmi and being able to manage these two different technologies at the same time exploiting Java functionalities. We then implemented the CLI and GUI in order to interact with the user, and this again is completely transparent to the user who can freely choose one from the other before starting to play. About the optional game-agnostic requirements we implemented the login based section, but unfortunately we didn’t have the opportunity to finish the part regarding the statistics so we didn’t add this functionality.

Server implementation

Singleton pattern with private constructor and getInstance() method to prevent any other instantiation of the server. When created the Server starts the listening on both Socket port and RMI.

MatchHandler – the Controller - MVC

Github page created by Mirko Mantovani on 05/05/2018