# Cupid Server - Matchmake with Dedicated Servers. NOT RELAYS Cupid is a Matchmaking backend that can open game instances on demand. Just like making rooms in a relay server, This will open Game instance for each room so the Rooms can be dedicated servers instead of making the players the host. This consists of two parts, This is the server backend written in NodeJS. Client will communicate with this and this will manage rooms and game instances. # How to install To install the server application, Download the repo or clone it using git command.
``git clone https://github.com/Sewmina7/CupidServer.git`` Then get inside the directory where the ``app.js`` is locted, and enter
``node app``
to run the application. ** Make sure to Allow the API listening port and Port range for Rooms. For default config:
``sudo ufw allow 1601 && sudo ufw allow 2000:3000/tcp && sudo ufw allow 2000:3000/udp``
(You can open only the chosen Protocol if you are worried about safety when opening both) # Configuration Inside the directory, There is a file called ``settings.json`` . Default Settings are like this ``` { "port":1601, "password":"xyz@123", "game_exe":"/root/Unity/CupidSample/Builds/Linux/Cupid.x86_64", "minimum_players": 2, "maximum_players": 5, "waiting_time": 30000, "port_range_min":2000, "port_range_max":3000, "log_level":3 } ``` Let me explain what each parameter does. ``port`` : The port on server which will listen to clients. This port must be open / allowed by firewall (ex: ``ufw allow 1601``)

``password`` : API key to validate the client. You can enter a safe phrase to make it secure.

``game_exe`` : Where the ``Server Build`` Of the game is located. This is the file which will be opened when making a new room. (This instance is passed the argument ``-port``. Look on Unity implementation for further details.

``minimum_players`` : Minimum players required to start a new Room.

``maximum_players`` : Limit of players that can be on a single Room.

``waiting_tiem`` : Time (in miliseconds) before the Room expires. Each room will only last this amount of time

``port_range_min`` : Lower bound of the Port range available for Rooms.

``port_range_max`` : Higher bound of the Port range available for Rooms.

``log_level`` : What the application will spit. ( 0:only necessary, 1:debug, 2:verbose )