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]
- Host: GitHub
- URL: https://github.com/estevesx10/client-server-multiplayer-game
- Owner: EstevesX10
- License: mit
- Created: 2024-08-31T18:01:58.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-08T23:27:50.000Z (about 1 year ago)
- Last Synced: 2025-03-09T17:11:17.176Z (7 months ago)
- Topics: javascript, node-js, socket-io
- Language: JavaScript
- Homepage:
- Size: 7.52 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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 responseThis 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`