The aim of the project was to create a digital version of the board game "MyShelfie" by CranioCreations. The project specifications required implementing the aforementioned game using the Java language and a Model View Controller architectural pattern and enabling games among multiple locally connected hosts through a text-based interface and an optional graphical interface.
The following UML (Unified Modeling Language) diagrams represent the class diagram as initially designed and the final representation of the class organization, reflecting the various design iterations carried out during these months.
The updated UML pays special attention to:
- Model
- Controller
- View
- Network/Client
- Network/Messages
- Network/Server
Below are the SERVER and CLIENT JAR files created for the project submission.
Below is the documentation for the Java source code, available in JAVADOC format.
| Libraries | Explanation |
|---|---|
| JavaFx | Java graphical library |
| JUnit | Java framework dedicated to unit testing |
| Maven | Dependency management and build tool for Java projects |
| Gson | Java library enabling conversion of Java objects to JSON format |
Among the various options offered by the instructors, we have selected the following:
- Full rules
- RMI and Socket
- GUI developed with JavaFX
Regarding additional features, we've decided to implement three of them, choosing the following:
- Chat
- Persistence
- Resilience
The JAR files, as mentioned above, are divided into Client and Server. To execute them, you need to have a Java VM installed on your device, preferably version 19.0.2 to minimize compatibility issues related to JavaFX. The Client includes both the graphical and text-based interfaces. The default settings are GUI and Socket, and you can run the file using the following commands
java -jar client.jarIf you wish to modify the display and/or connection settings, you can execute the JAR file with the --cli and --rmi parameters as follows:
java -jar client.jar --cli --rmiFor a better command-line experience, it is recommended to use terminals that support UTF-8 encoding.
If trought the GUI the gaming experience is not smooth, it is recommended to run the Client with the following parameters in order to increase xx:
java -Dprism.maxvram="8G" -jar client.jarTo run the Server, you need to execute the following commands:
java -jar server.jar --PingTimexxxxWhere the placeholder "xxxx" represents the desired ping time in milliseconds (ms).
