
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.