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.
| Platform | Compiler | Status |
|---|---|---|
| Linux | g++ | ✅ |
| macOS | g++ | ✅ |
| Windows | MSVC | ✅ |
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
Make sure you have the following dependencies installed on your system:
Important
When cloning the project, you should also initialize the submodules:
git clone --recurse-submodules git@github.com:bobis33/R-Type.gitIf you already cloned the project, you can initialize the submodules with:
git submodule update --init --recursive./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 ## servercmake -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 ## serverAPI 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:
- Client documentation
- Server documentation
- Network protocol specification
- Plugins documentation
- Modules documentation
- Comparative study
All dependencies are included as submodules in the third-party directory.
➡️ Want to contribute? See CONTRIBUTING.md.
This project is licensed under the MIT License - see the LICENSE file for details.