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.
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.
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.
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
.
Before proceeding with the projects execution
, ensure that you thoroughly review the Dependencies file. 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.
To start the Web Application and interact with the project, make sure to execute:
nodemon backend.js
And access the Localhost on port 3000.
Here's a quick look on how the Home Page of the Web Application looks like.
Here are two brief gameplay samples
showcasing how the interface functions with two players in the game environment.
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
.
EnemyGameplayShowcase.mov
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.
PlayerGameplay.Showcase.mov
README.md by Gonçalo Esteves