Giter Site home page Giter Site logo

javinyx / mastersofrenaissance Goto Github PK

View Code? Open in Web Editor NEW
7.0 2.0 1.0 86.48 MB

Digitalised version of the "Masters of Renaissance" board game. Final test of the Software Engineering course, Computer Science Engineering branch at Politecnico di Milano, A.Y. 2020/21.

Home Page: https://github.com/Javinyx/MastersOfRenaissance

Java 99.10% CSS 0.90%

mastersofrenaissance's Introduction

logo

Masters of Renaissance Board Game

Digitalised version of the "Masters of Renaissance" board game. Final test of the Software Engineering course, Computer Science Engineering branch at Politecnico di Milano, A.Y. 2020/21.

Game

The original board game is by Cranio Creations s.r.l. and allows at maximum 4 players to play together.

The digital version here aims to mimic the original one adding those extra comforts given by online gaming.

menu

main board

market board

Devs

AM13 team members: Javin Barone, Ottavia Belotti, Alessio Braccini
Professor Supervisor: Alessandro Margara

Advanced Features

Feature Status
Basic Rules Done
Full Rules Done
Command Line Interface Done
Graphical User Interface Done
Local Game Done
Multiple Games Done

drag & drop

JAR usage

The game is splitted into two JAR files, both can be downloaded form Deliverables directory.
Unless it is desired to play a local game, one Server app instance must be running before the client can actually start playing.

Both server and client app can run on Unix systems (Linux, macOS) or Windows system (on Powershell, cmd and WSL).

Server app

Run from console the MasterOfRenaissanceServer.jar file using the command:

java -jar MasterOfRenaissanceServer.jar

By default, if no extra argument is added in the command above, the server will listen for incoming connection on port 27001. Otherwise, the user can choose the custom port on console:

java -jar MasterOfRenaissanceServer.jar 2500

Client app

To start the client app, either click on the MasterOfRenaissance.jar file (GUI mode only) or use the console for more options:

  • GUI mode: java -jar MasterOfRenaissance.jar
  • CLI mode: java -jar MasterOfRenaissance.jar cli
  • CLI mode local game: java -jar MasterOfRenaissance.jar cli local

Game Initialization

Once the client app is running and the connection with the server is established, both CLI and GUI mode will ask the player for the in-game nickname and game size wished. The nickname must be unique within the lobby in which the player is put, but multiple players can share the same nickname if they're in different lobbies.

Players will be kept waiting until the lobby reaches the capacity asked upon starting the session. Once the server has gathered as many players as necessary, it starts the initialization phase: all players have to choose 2 Leader Cards among a set of four chosen randomly by the server for each of them. Furthermore, some players have the right to own "starting resources" and Faith Points based on their turn, so if the players are eligible, they should choose as many initial resources as stated by the server.

Once every player has ended the initial phase, the actual game can finally start. The server communicate who has to start, while the others will wait for their turn.

Mid-game Phase

Once it's the player turn, different actions can be done (some just once every turn):

  1. Buy resources from the shared market
  2. Buy a Development Card from the ones available at that moment
  3. Activate one or more Production Power given by the player's Development Cards owned
  4. Activate a Leader Card
  5. Discard a Leader Card still inactive
  6. Use an active Leader Card's power
  7. View opponents status
  8. View still available Development Cards

Actions 1 through 3 can be executed just once every turn and in mutual exclusion. Leader powers can be used at maximum twice each turn.

For more detailed rules, please refer to the official Masters of Renaissance Ruleset (IT).

SinglePlayer Mode

As a side note for the solo mode, all the rules above apply as well, plus some twists due to Lorenzo De Medici being your enemy. Each turn, the game draws an Action Token from a randomized deck which represents Lorenzo's move. There are three types of token:

  • Discard 2 Development Cards from the available pool, so they can not be purchased anymore
  • Move Lorenzo forward of 2 cells onto the Faith Track
  • Move Lorenzo forward of 1 cell onto the Faith Track and shuffle the Action Token deck

Ending of the match

Once the game has ended and a player has been declared as winner, all the players are disconnected.

Advanced Functionalities

Local Game

The player can choose to play locally. A single player match will be instantiated without the server communication, this means that all the game logic will be located into the player machine.

Multiple Games

Once the players have chosen the game size whished, the server will prioritize filling the already existing lobby of that exact size that are still waiting for other people to join in order to start. If no lobby of that size need to be filled at the moment, then it will proceed with the creation of a new lobby.

Once the player has been placed into a waiting lobby and that has been filled, then all the players in that lobby are moved into a new one for the ongoing game, this game lobby will keep track of all the players' connections for that party and for other parties of the same size as well without mixing them.
In fact, the game can finally start for those players in the game lobby, but in the meantime other players can register themselves for a game of the same size going thourgh the same process just described above.

mastersofrenaissance's People

Contributors

alessiobraccini avatar javinyx avatar ottaviabelotti avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

ottaviabelotti

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.