r-type  0.0.0
R-Type main
Loading...
Searching...
No Matches
R-Type

CI - GitLeaks CI - R-Type CD - Doxygen documentation CD - Mirror

This project reimagines R-Type using a modular game engine entirely written in C++23.
It features:

  • A multithreaded server
  • A graphical client
  • A plugin-based engine (audio, rendering, networking)
  • A custom Entity–Component–System (ECS)

Each subsystem (client, server, and engine) is completely decoupled and communicates via well-defined interfaces.

Supported Platforms

Platform Compiler Status
Linux g++
macOS g++
Windows MSVC

Project Structure

flowchart LR
subgraph App
subgraph client [Client]
A[Client]
A -->|.a/.lib| B[Engine]
B -->|.a/.lib| C[ECS]
A -->|.so/.dll| D[IGameClient]
B -->|.so/.dll| E[IAudio]
B -->|.so/.dll| F[INetworkClient]
B -->|.so/.dll| G[IRenderer]
end
subgraph server [Server]
H[Server]
H -->|.so/.dll| I[IGameServer]
H -->|.so/.dll| J[INetworkServer]
end
A <==>|TCP/UDP| H
end

Prerequisites

Make sure you have the following dependencies installed on your system:

Build and Run

Important
When cloning the project, you should also initialize the submodules:
git clone --recurse-submodules git@github.com:bobis33/R-Type.git
If you already cloned the project, you can initialize the submodules with:
git submodule update --init --recursive

Unix (Linux, macOS)

./scripts/unix/build.sh release
## Or
cmake -S . -B cmake-build-release -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc
cmake --build cmake-build-release -- -j4
## Then
./cmake-build-release/bin/r-type_client ## client
./cmake-build-release/bin/r-type_server ## server

Windows

cmake -S . -B cmake-build-release -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=Release
cmake --build cmake-build-release --config Release
## Then
cmake-build-release\bin\r-type_client.exe ## client
cmake-build-release\bin\r-type_server.exe ## server

Documentation

API documentation is generated using Doxygen and deployed on GitHub Pages. You can find the same documentation as PDF here. More specific documentation for each part of the project can be found in their respective directories:

External Libraries

All dependencies are included as submodules in the third-party directory.

Contributing

➡️ Want to contribute? See CONTRIBUTING.md.

License

This project is licensed under the MIT License - see the LICENSE file for details.