---
description: Documentation about the R-Type
---

# Introduction

## What is the R-TYPE project ?

The goal of this project is to make a copy of the R-TYPE game in C++.\
This project is cross-platform; working on Unix, macOS and Windows systems.\
\
Through this project, the idea is to discover the differences between Unix and Windows systems. However, we'll also be using many of the concepts we learned in our second year at Epitech, such as the proper use of the C++ language.



### What is  the client side ?

In the context of this project, the "client side" represents the core of what players will experience on their screens. It serves as the bridge between the user interface and the server, facilitating seamless interaction between players and the game world. Whether it's controlling your player's movements, coordinating with other players, or simply enjoying the immersive visuals and gameplay, the client side is where the magic happens.

#### Key responsibilities of the client side

* **User Interface Management**: The client side is responsible for rendering the user interface elements and ensuring they are presented in an engaging and user-friendly manner.
* **Server Communication**: It plays a crucial role in establishing and maintaining communication with the server. This includes transmitting player actions, receiving updates from the server, and synchronizing the game state.
* **Player Interaction**: When players want to navigate their in-game avatars or engage with other players, the client side acts as the conduit for these actions, creating a responsive and immersive gaming experience.

### What is the server side ?

The "server side" is the core of the game. It connects all the clients together to allow them to play in multiplayer mode. It has all rights over the clients and what is happening in the game. It will recieve all the clients' inputs and take the actions needed to update the game. After that, it will send back to the clients a set of commands to update the graphical interface.

#### Key responsabilities of the server side

* **Game management**: The server handles the movements of all the entities and update the game depending on the players' actions.
* **Client communication**: It communicates directly with all the connected clients to update them. This includes the position of entities, the assignation of a player to a room and many more.
