An open API service indexing awesome lists of open source software.

https://github.com/estevesx10/client-server-multiplayer-game

Client-Server Multiplayer based Game [Project focused on developing strong foudations on the Client-Server Model using JavaScript, NodeJS and Socket.io]
https://github.com/estevesx10/client-server-multiplayer-game

javascript node-js socket-io

Last synced: 25 days ago
JSON representation

Client-Server Multiplayer based Game [Project focused on developing strong foudations on the Client-Server Model using JavaScript, NodeJS and Socket.io]

Awesome Lists containing this project

README

          


# Client-Server Multiplayer Game



























## Project Overview

This project composes of a **client-server based multiplayer game** where players control ``spaceships`` in a shared universe, engaging in **real-time battles**. The ``goal`` was to create an immersive and competitive environment where ``multiple players`` can **connect**, **control their ships**, as well as partake in strategic **space combat**.

It focuses on both ``frontend`` and ``backend`` **development**, with special emphasis on **efficient communication between clients and the server**, ensuring a seamless gaming experience for all players.

## Client-Server Model

### Description
The ``Client-Server Model`` is composed by:

- A **Client** -> Sends a request to a server over a network
- A **Server** -> Processes the clients request and sends back a response

This model forms the ``foundation of cloud computing`` and allows developers to scale infrastructure up or down with **minimal downtime**, as well as deploy applications closer to **end users**.

### How it Works

A ``client`` is an **application that runs on a device** (such as a laptop or smartphone), while a ``server`` is a device that **provides services to the client**.

The client and server **communicate over** a ``network``, where the **client sends requests** for data or services to the **server**, which processes these requests and then **returns the requested data or services** to the client.

The ``client/server model`` is used to access **cloud services**, such as **computing power**, **storage**, and **applications**. ``Clients`` can range from **web browsers** to **mobile apps**, and ``servers`` can include **virtual machines**, **containers**, or **serverless functions**.



### Limitations

While this model has **many benefits**, it presents some ``limitations`` that can affect its **performance**, particularly during ``high traffic`` or demand periods.

One of the most **significant limitations of the client/server model** is that a server can get **overloaded with requests** from clients, which can cause the server to **slow down or even crash**, resulting in ``downtime or errors``.

## Project Dependencies

Before proceeding with the ``projects execution``, ensure that you thoroughly review the [Dependencies file](https://github.com/EstevesX10/Client-Server-Multiplayer-Game/blob/main/DEPENDENCIES.md). It provides a **comprehensive description** of the ``Anaconda environment``, including all required **packages** and their specific **versions**.

Moreover, some external dependencies were properly **detailed** within this file, so it's important to **follow the setup steps** carefully.

## Project Execution

To **start the Web Application** and interact with the project, make sure to execute:

nodemon backend.js

And access the [Localhost](http://localhost:3000/) on port 3000.

## Project Demo

### Home Page

Here's a quick look on how the Home Page of the Web Application looks like.



### Game Interface

Here are ``two brief gameplay samples`` showcasing how the interface functions with **two players in the game environment**.

#### Enemy Gameplay

This next video demonstrates how the ``movements`` and ``projectiles`` of **enemy players** are **updated on the game board** across **other players' devices**, highlighting the game's ``multiplayer features``.



#### Player Gameplay

Additionally, this sample provides an **enhanced view of the game board** and all the players on it, along with a ``leaderboard`` that **updates in real-time** as players eliminate opponents, reflecting their **current scores**.




`README.md by Gonçalo Esteves`