A modern, enterprise-grade game engine and complete multiplayer gaming framework built with C++20
Features โข Gallery โข Installation โข Documentation โข Games
- ๐ Description
- โจ Features
- ๐จ Gallery
- ๐ป Requirements
- ๐ฆ Dependencies
- ๐ Documentation
- ๐ฅ Contributors
- ๐ ๏ธ Installation Guide
- ๐ฎ Games
- ๐ License
- โค๏ธ Coded with Love
The R-Type Project is a comprehensive game development ecosystem centered around the TKD Engine (TekyoDrift Engine), a production-ready, modular game engine designed specifically for networked multiplayer applications. This project demonstrates enterprise-grade software architecture principles through its implementation of complete game prototypes and development tools.
Built entirely in modern C++20, the project encompasses:
- ๐ฏ TKD Engine: A dual-mode (client/server) game engine with robust networking capabilities
- ๐ฎ Complete Games: Two fully functional game implementations showcasing engine capabilities
- ๐ง Development Tools: Specialized utilities for asset management, resource packing, and debugging
- ๐ Network Architecture: High-performance client-server multiplayer system with real-time synchronization
- ๐๏ธ Modular Design: Reusable components following SOLID principles and modern C++ best practices
The engine leverages cutting-edge technologies including Entity-Component-System (ECS) architecture, Asio-based networking, SFML graphics, and experimental OpenVR integration for virtual reality experiences. Designed with cross-platform compatibility, performance optimization, and developer productivity in mind, the TKD Engine provides a solid foundation for building complex, networked multiplayer games.
- Modern C++20 Architecture: Leveraging latest language features for type safety, performance, and maintainability
- Dual-Build System: Single codebase producing both client (with graphics) and server (headless) executables
- Entity-Component-System (ECS): Flexible, composition-based game object management with runtime behavior modification
- Thread-Safe Components: Built-in concurrency primitives and synchronization for parallel execution
- Memory Management: RAII principles, smart pointers, and deterministic resource management
- Cross-Platform Support: Consistent behavior across Linux, Windows, and macOS
- High-Performance UDP Protocol: Custom binary protocol optimized for minimal bandwidth and latency
- Asio-Powered I/O: Asynchronous, non-blocking network operations for maximum throughput
- Reliable Transmission Layer: ACK/NACK system with automatic retransmission and duplicate detection
- Client-Server Architecture: Dedicated server support with multiple concurrent client connections
- Real-Time Synchronization: Delta compression and snapshot interpolation for smooth gameplay
- Network Statistics: Built-in monitoring for latency, packet loss, and bandwidth utilization
- Type-Safe Packet System: Automatic serialization/deserialization with virtual dispatch
- SFML-Based Pipeline: Modern OpenGL backend with shader support
- Component-Based Rendering: Modular rendering system with material and texture management
- Camera System: Multi-viewport support with 2D/3D transformations
- Sprite & Animation Management: FlipBook system for 2D sprite animations
- Shader System: Custom shader support for advanced visual effects
- ImGui Integration: Immediate-mode GUI for debug tools and in-game interfaces
- 3D Positional Audio: Spatial sound processing with listener management
- Multi-Format Support: WAV, OGG, FLAC audio playback
- Audio Streaming: Efficient streaming for large audio files
- Effect Processing: Real-time audio effects and filters
- Sound Source Management: Multiple simultaneous audio sources with priority system
- Comprehensive Math Library: Vectors (2D/3D/4D), matrices, quaternions, transforms
- Geometric Primitives: Rectangles, circles, spheres, planes, boxes, capsules, rays
- Collision Detection: AABB, OBB, sphere, and ray-based collision systems
- Interpolation Functions: Linear, spherical, cubic, and custom interpolation utilities
- Color Management: 8-bit and floating-point color spaces with conversion utilities
- TKDPack: Asset packaging utility for bundling resources into optimized
.pakarchives with compression - TKDEmbed: Binary-to-C++ header converter for compile-time asset embedding
- TKDGraph: Visual debugging and profiling tools with ImGui-based interface
- Testing Framework: Comprehensive unit tests using Catch2
- Logging System: Multi-level logging (Debug, Info, Warning, Error, Critical) with file output
- Actor-Component Model: Flexible game object composition with inheritance and polymorphism
- World Management: Scene organization, level loading, and object lifecycle management
- Time Management: Delta time calculation, fixed timestep support, and time scaling
- Input System: Unified keyboard, mouse, and gamepad input handling with action mapping
- Event System: Type-safe event broadcasting and subscription
- Configuration Management: INI-based configuration with runtime modification
- Save/Load System: Binary and JSON serialization for game state persistence
- OpenVR Integration: Steam VR support for HTC Vive, Valve Index, and compatible headsets
- VR Camera System: Head-mounted display tracking and stereoscopic rendering
- Motion Controllers: Hand tracking and controller input
- Room-Scale Experiences: Chaperone system integration for safe VR gameplay
- Resource Handles: Smart pointer-based asset management with automatic lifetime tracking
- Pak File System: Custom archive format for efficient asset distribution
- Hot Reloading: Runtime asset reloading for rapid iteration during development
- Texture Atlas Support: Sprite sheet management with automatic sub-texture extraction
- Async Loading: Background asset loading to prevent frame drops
| VR Camera Tracking & Rendering | Motion Controller Integration |
๐ฅ Note: Video demonstrations showcasing experimental VR features with the TKD Engine
| Component | Specification |
|---|---|
| Operating System | Windows 10/11, Ubuntu 20.04+, macOS 11+ |
| Processor | Dual-core 2.0 GHz |
| Memory | 4 GB RAM |
| Graphics | OpenGL 3.3 compatible GPU |
| Storage | 500 MB available space |
| Network | Broadband internet connection (for multiplayer) |
| Component | Specification |
|---|---|
| Operating System | Windows 11, Ubuntu 22.04+, macOS 12+ |
| Processor | Quad-core 3.0 GHz or higher |
| Memory | 8 GB RAM or more |
| Graphics | Dedicated GPU with OpenGL 4.5 support |
| Storage | 1 GB available space (SSD recommended) |
| Network | Low-latency broadband connection |
- CMake 3.21 or higher
- Python 3.7+ with pip
- C++ Compiler with C++20 support:
- Linux: GCC 10+ or Clang 12+
- Windows: Visual Studio 2019+ or MinGW-w64
- macOS: Xcode 12+ or Clang 12+
- Git for version control
- Conan 2.x package manager
The R-Type project utilizes the following third-party libraries, automatically managed through Conan:
| Library | Version | Purpose |
|---|---|---|
| SFML | 2.6.2 | Graphics, windowing, audio, and input handling |
| Asio | 1.36.0 | Asynchronous networking and I/O operations |
| ImGui | 1.91.8 | Immediate-mode graphical user interface |
| ImGui-SFML | 2.6.1 | SFML rendering backend for ImGui |
| nlohmann_json | 3.12.0 | Modern JSON serialization and parsing |
| Catch2 | 3.10.0 | Modern C++ testing framework |
| Library | Version | Purpose |
|---|---|---|
| OpenGL | system | Hardware-accelerated graphics rendering |
| GLEW | 2.2.0 | OpenGL extension loading library |
| Mesa GLU | 9.0.3 | OpenGL utility library (Linux/macOS) |
| Library | Version | Purpose |
|---|---|---|
| OpenVR | 1.16.8 | Virtual reality headset integration |
| Library | Version | Purpose |
|---|---|---|
| zlib | 1.3.1 | Data compression for asset archives |
All dependencies are automatically downloaded, configured, and linked during the build process via Conan package manager. No manual installation required.
Comprehensive documentation is available in the Documentation/ directory:
- Project Overview - Executive summary, architecture, and technical stack
- Getting Started - Quick start guide and first steps
- Features - Detailed feature descriptions and technical capabilities
- Directory Layout - Project structure and organization
- Changelog - Version history and release notes
- Contributing - Contribution guidelines and coding standards
- License - Licensing information
Located in Documentation/Engine/:
- Engine Overview - TKD Engine architecture and design
- Building the Engine - Compilation instructions and configuration
- Usage Examples - Code samples and tutorials
- Testing - Unit testing and quality assurance
Detailed API documentation for each engine module in Documentation/Engine/Modules/:
- Core - Foundation systems, containers, mathematics, concurrency
- Runtime - Actor-component system, world management, game loop
- Network - Client-server architecture, packet system, protocols
- Renderer - Graphics pipeline, materials, shaders, cameras
- Audio - Sound management, 3D audio, streaming
- Config - Configuration system and engine settings
- Static - Engine initialization and bootstrapping
- Debug - Logging, profiling, and debugging utilities
Complete API references in Documentation/Engine/Scripting References/:
- Actors - Base actor classes, cameras, pawns, HUD
- Animations - 2D animations, flipbooks, state machines
- Assets - Resource management, pak files, loading system
- Audio - Audio buffers, sources, effects, listeners
- Controllers - Player and AI controller systems
- Math - Vectors, matrices, quaternions, transforms, geometry
- Network - Networking classes, packets, binary serialization
- Renderer - Rendering components, materials, shaders
- Widgets - UI system and widget classes
Located in Documentation/Tools/:
- TKDPack - Asset packaging tool documentation
- TKDEmbed - Binary embedding utility guide
- TKDGraph - Visual debugging tool manual
This project is the result of collaborative effort from our talented development team:
| Mallory SCOTTON |
| Project Leader ยท Lead Engine Developer |
| Nathan FIEVET | Hugo CATHELAIN |
| Team Coordinator ยท Engine & Network Developer | Game Engine Developer |
| Ossan MSOILI | Raphael OSTIER |
| Game Developer | Game Developer |
๐ก Contributions Welcome!
See our Contributing Guide and Code of Conduct
The easiest way to build R-Type is using our automated build scripts that handle all dependencies and configuration:
chmod +x Scripts/Build.sh
./Scripts/Build.sh.\Scripts\Build.batThese scripts automatically:
- โ Install system dependencies (pipx, cmake, build tools)
- โ Install and configure Conan package manager
- โ Set up the build environment
- โ Configure CMake with optimal settings
- โ Build the project with all games and tools
If you prefer manual control over the build process:
Linux (Ubuntu/Debian):
sudo apt update
sudo apt install build-essential cmake python3-pip pipx gitLinux (CentOS/RHEL/Fedora):
sudo yum groupinstall "Development Tools"
sudo yum install cmake python3-pip git
python3 -m pip install --user pipxmacOS:
# Install Homebrew if not present
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install dependencies
brew install cmake pipx gitWindows:
- Install Visual Studio 2019+ with "Desktop development with C++" workload
- Install CMake and add to PATH
- Install Python 3.7+ with pip
- Install Git for Windows
Linux/macOS:
pipx install conan
pipx ensurepathWindows:
python -m pip install conanconan profile detect --forcegit clone https://github.com/mallory-scotton/rtype.git
cd rtypeconan install . \
--output-folder=Build \
--build=missing \
--settings=build_type=Release \
--settings=compiler.cppstd=20 \
-c tools.system.package_manager:mode=installcmake -B Build -S . -DCMAKE_BUILD_TYPE=Releasecmake --build Build --config ReleaseAfter successful compilation, executables are located in Build/bin/:
# Run R-Type game server
./Build/bin/RTypeGameServer
# Run R-Type game client
./Build/bin/RTypeGameClient
# Run TKDPack tool
./Build/bin/TKDPack --helpBuild/
โโโ bin/ # Executable files
โ โโโ RTypeGameClient # R-Type client executable
โ โโโ RTypeGameServer # R-Type server executable
โ โโโ BeatSaberGameClient # BeatSaber client executable
โ โโโ BeatSaberGameServer # BeatSaber server executable
โ โโโ TKDEngineClient # Engine client library test
โ โโโ TKDEngineServer # Engine server library test
โ โโโ TKDEngineTests # Engine unit tests
โ โโโ TKDPack # Asset packing tool
โ โโโ TKDEmbed # Binary embedding tool
โโโ lib/ # Shared libraries (.dll, .so, .dylib)
โโโ Assets/ # Game assets (copied from Games/)
โ Conan profile detection fails
Solution:
conan profile detect --forceIf this persists, manually create a profile:
conan profile path default
# Edit the file and ensure C++20 is setโ Missing C++20 support
Solution:
- Ensure your compiler supports C++20:
- GCC 10+
- Clang 12+
- MSVC 2019 (19.29)+
- Update your compiler if necessary
- Verify CMake detects the correct compiler:
cmake --versionand check compiler output
โ Permission errors with Conan
Solution:
- Do NOT use
sudowith Conan commands (except for system package installation) - Conan should always run as your regular user
- Ensure your user has write permissions to the Conan cache directory (
~/.conan2/)
โ Build dependencies missing
Solution:
- Run the automated build script which handles all dependencies
- On Linux, install development packages:
sudo apt install build-essential cmake - On macOS, ensure Xcode Command Line Tools are installed:
xcode-select --install - On Windows, verify Visual Studio C++ tools are installed
โ SFML or other library linking errors
Solution:
- Clean the build directory:
rm -rf Build/ - Re-run Conan install with
--build=missingflag - Ensure all dependencies are built for the same architecture (x64)
Need Additional Help?
- Check the Documentation
- Review build logs for specific error messages
- Open an issue on GitHub
This project uses clang-format-19 for consistent code style.
Installation:
# Ubuntu/Debian
sudo apt install clang-format-19
# macOS
brew install clang-format
# Windows (via Chocolatey)
choco install llvmUsage:
# Format single file
clang-format-19 -i path/to/file.cpp
# Format all C++ files
find . -name "*.cpp" -o -name "*.hpp" | xargs clang-format-19 -iVS Code Integration:
Add to .vscode/settings.json:
{
"C_Cpp.clang_format_path": "clang-format-19",
"C_Cpp.clang_format_style": "file",
"editor.formatOnSave": true,
"[cpp]": {
"editor.defaultFormatter": "ms-vscode.cpptools"
}
}The R-Type project includes two complete game implementations showcasing the TKD Engine's capabilities:
Version: 1.0.0
Genre: Side-Scrolling Shooter
Mode: Networked Multiplayer
Status: โ
Stable Release
A complete recreation of the classic R-Type arcade shooter featuring networked multiplayer gameplay. Demonstrates the engine's capabilities in 2D game development, real-time networking, and client-server architecture.
- โจ Classic Gameplay: Faithful recreation of R-Type mechanics
- ๐ Multiplayer Support: Up to 4 simultaneous players via client-server architecture
- ๐ฎ Real-Time Synchronization: Smooth gameplay with delta compression and interpolation
- ๐จ Sprite Animation System: FlipBook-based 2D animations
- ๐ฅ Particle Effects: Explosions, weapon effects, and environmental particles
- ๐ต Audio Integration: Music and sound effects with 3D positional audio
- ๐ Scoring System: Player statistics and leaderboards
- ๐ฆ Pak File Assets: Optimized asset loading using TKDPack format
- Entity-Component-System for game object management
- Custom network protocol with reliable UDP transmission
- State synchronization with snapshot interpolation
- Client-side prediction for responsive controls
- Server-authoritative gameplay preventing cheating
# Start dedicated server
cd Build/bin
./RTypeGameServer --port 4242
# Start client and connect
./RTypeGameClient --server localhost --port 4242Configuration:
- Server settings:
Build/bin/Data/server.ini - Client settings:
Build/bin/Data/client.ini
Version: 0.0.1
Genre: VR Rhythm Game
Mode: Single Player (Experimental)
Status: ๐ง In Development
An experimental VR rhythm game prototype showcasing the TKD Engine's OpenVR integration capabilities. Features head-mounted display tracking, motion controller support, and 3D audio for immersive gameplay.
- ๐ฅฝ VR Support: OpenVR integration for SteamVR-compatible headsets
- ๐ฏ Motion Controllers: Hand tracking and gesture recognition
- ๐ต Rhythm Gameplay: Music-synchronized obstacle generation
- ๐จ 3D Rendering: Stereoscopic rendering for VR displays
- ๐ Spatial Audio: 3D positional audio for immersive sound
- ๐ Room-Scale: Chaperone system integration
- OpenVR SDK integration for HMD and controller tracking
- Custom VR camera system with stereoscopic projection
- Motion controller input mapping
- Performance optimization for 90Hz VR rendering
- Experimental physics-based sword mechanics
Requirements:
- SteamVR-compatible VR headset (HTC Vive, Valve Index, Oculus Rift, etc.)
- SteamVR runtime installed
- Motion controllers
# Ensure SteamVR is running, then start the game
cd Build/bin
./BeatSaberGameClientThis project is licensed under the MIT License - see the LICENSE.md file for complete details.
MIT License
Copyright (c) 2025 TekyoDrift
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
This project uses several open-source libraries, each with their own licenses:
- SFML - zlib/libpng License
- Asio - Boost Software License 1.0
- ImGui - MIT License
- Catch2 - Boost Software License 1.0
- OpenVR - BSD 3-Clause License
- nlohmann_json - MIT License
Made with โค๏ธ by the TekyoDrift Team
Building the future of game development, one commit at a time.