Skip to content

raprapchh/R-TYPE

Repository files navigation

R-Type - Epitech Project

R-Type Banner

🚀 Introduction

This project is a recreation of the classic R-Type arcade game, developed as part of the Advanced C++ Knowledge (B-CPP-500) module at Epitech. It features a custom game engine built on an Entity Component System (ECS) architecture and a networked multiplayer mode using UDP for real-time communication. The client is powered by SFML.


✨ Features

  • Custom ECS Engine: A high-performance, data-oriented architecture separating Entities, Components, and Systems.
  • Networked Multiplayer: Real-time gameplay supporting multiple players via a custom UDP protocol.
  • Game States: Includes Menu, Lobby, and Gameplay states.
  • Configuration: Data-driven design with configuration files.

♿ Accessibility

We believe games are for everyone. This project includes specific features to ensure inclusivity:

  • Colorblind Modes: Support for Deuteranopia, Protanopia, and Tritanopia (toggle available in Settings).

🛠️ Prerequisites

Before building the project, ensure you have the following installed:

  • C++ Compiler (supporting C++20)
  • CMake (v3.20 or newer)
  • Git

Note: This project is self-contained. All dependencies (SFML, Asio, Catch2) are managed automatically via vcpkg and FetchContent. No manual library installation is required.

However, some system-level tools are required for vcpkg to build dependencies (specifically alsa):

  • Fedora/RedHat: sudo dnf install autoconf libtool
  • Debian/Ubuntu: sudo apt install autoconf libtool
  • Arch Linux: sudo pacman -S autoconf automake libtool
  • Alpine: apk add autoconf automake libtool

🏗️ Quick Start

1. Clone and Build for Linux

git clone git@github.com:EpitechPGE3-2025/G-CPP-500-PAR-5-2-rtype-3.git
cd G-CPP-500-PAR-5-2-rtype-3

# Setup vcpkg (if not already done by build.sh)
git clone https://github.com/microsoft/vcpkg.git
./vcpkg/bootstrap-vcpkg.sh -disableMetrics

# Using the helper script (recommended)
chmod +x ./build.sh
./build.sh

# Or manually with CMake
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build build --parallel

🎮 Usage

After building, the binaries are located in ./bin/linux/.

2. Run the Game

# Start the server
./bin/linux/r-type_server [PORT]

# Start the client (in another terminal)
./bin/linux/r-type_client [IP] [PORT]

3. Run the Installer for Windows

First Download the Installer in the last release

Execute it in Admin mode

And you should be connected to wifi in private mode (In wifi configs)

4. Run the Game on Windows

Usually the binaries are installed in C:\Program\R-Type\

you can then start the server .exe

for the client you might want to use PowerShell if you want to play with another pc, otherwise you can use the client.exe in the same folder as the server.exe

# Start the client (in PowerShell)
.\r-type_client.exe [IP] [PORT]

🕹️ Controls

Action Key Description
Move Up Move spaceship up
Move Down Move spaceship down
Move Left Move spaceship left
Move Right Move spaceship right
Shoot Space Fire standard projectile
Dev Console F3 Toggle FPS/Ping/CPU metrics
Lagometer L Toggle Lagometer

Note: You can customize your controls in the Settings menu from the main menu.


📂 Project Architecture

The codebase is modularized for clarity and scalability:

  • server/: Handles game logic, authoritative state, and UDP communication.
  • client/: Manages rendering (SFML), input handling, and interpolation.
  • ecs/: The core Entity Component System library (Entities, Components, Systems).
  • shared/: Common resources, network protocols, and data structures.
  • config/: JSON configuration files for game balancing.
  • documentation/: Developer guides and technical documentation.

👥 Authors

Epitech Paris

  • Raphaël Chanliongco
  • Hubert Touraine
  • Jean-Baptiste Boshra
  • Gabin Rudigoz
  • Ylan Cuvier
  • Swann Grandin


Epitech Logo

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors