A modular, cross-platform game engine prototype featuring a classic R-Type style space shooter. Built with a dynamic module architecture using ZeroMQ for inter-module communication.
- Modular Architecture: Dynamic module loading with isolated subsystems
- Cross-Platform: Supports Linux and Windows
- Multiplayer: Server-authoritative networking with client prediction
- Lua Scripting: Game logic powered by Lua/Sol2 ECS
- 3D Rendering: OpenGL-based renderer with SFML window management
- Physics: Bullet3 physics engine integration
- Sound: SFML-based audio system with music and effects
- Git
- CMake (≥ 3.15)
- C++17 compiler (GCC/Clang on Linux, MSVC on Windows)
- vcpkg (included as submodule)
# Clone the repository
git clone --recursive https://github.com/thinkboosted/R-type-Clone.git
cd R-type-Clone
# Build using the helper script
python3 build.py
# Run the game
cd build
./r-type_client local # Solo mode
./r-type_server 4242 & # Start server (multiplayer)
./r-type_client 127.0.0.1 4242 # Connect as clientFor detailed build instructions, see 📦 Installation Guide.
| Document | Description |
|---|---|
| 📦 Installation Guide | Complete build instructions for Linux & Windows |
| 🤝 Contributing Guide | How to contribute to the project |
| 🏗️ Architecture Overview | Engine architecture and module system |
| 📡 Network Protocol | Client-server communication protocol |
| 📨 Message Channels | ECS pub/sub channel reference |
| 📖 API Reference | Doxygen-generated API documentation |
R-type-Clone/
├── src/
│ ├── engine/ # Core engine code
│ │ ├── app/ # Application base classes
│ │ ├── modules/ # Dynamic modules (Renderer, Sound, Physics, etc.)
│ │ └── modulesManager/ # Module loading and lifecycle
│ └── game/ # R-Type game implementation
│ ├── client/ # Client application
│ └── server/ # Server application
├── assets/
│ ├── scripts/ # Lua game scripts
│ │ └── space-shooter/ # Main game logic
│ ├── textures/ # Game textures
│ ├── models/ # 3D models
│ └── sounds/ # Audio files
├── docs/ # Documentation
├── cmake/ # CMake modules
└── vcpkg.json # vcpkg dependencies manifest
| Key | Action |
|---|---|
W / ↑ |
Move Up |
S / ↓ |
Move Down |
A / ← |
Move Left |
D / → |
Move Right |
SPACE |
Shoot |
ESC |
Pause Menu |
Managed via vcpkg:
- SFML - Window management and audio
- GLEW - OpenGL extension loading
- ZeroMQ / cppzmq - Inter-module messaging
- Lua / Sol2 - Scripting engine
- Bullet3 - Physics simulation
- Asio - Networking
- MsgPack - Binary serialization
- Google Test - Unit testing
This project is licensed under the MIT License - see the LICENSE file for details.
- Original R-Type game by Irem
- EPITECH for the project specification
