A modern multiplayer recreation of the classic arcade shooter R-Type, built with C++ and featuring a robust client-server architecture. Experience intense space combat with smooth multiplayer gameplay, stunning visuals, and immersive audio.
- 🎮 Classic Arcade Gameplay - Faithful recreation of the iconic R-Type experience
- 🌐 Multiplayer Support - Battle enemies together with friends in networked sessions
- 🎨 Modern Graphics - Smooth rendering powered by Raylib
- 🔊 Immersive Audio - Dynamic sound effects and music using SFML
- 🎯 Lua Scripting - Customizable game waves and behaviors on the server
- 💾 Persistent Data - Player statistics and game data stored in PostgreSQL
- 🏗️ Modular Architecture - Extensible design with dynamic library loading
R-Type is a horizontal scrolling shooter where players pilot a spacecraft through waves of enemies, dodging obstacles and destroying foes. This implementation brings the classic game into the modern era with network multiplayer capabilities, allowing players to team up and face challenging enemy patterns together.
The project is split into two main components:
- Client - Handles rendering, input, audio, and user interface
- Server - Manages game logic, networking, and data persistence
- C++20 compatible compiler
- CMake (3.10 or higher)
- vcpkg for dependency management
- PostgreSQL (for server only)
- Lua (included via dependencies)
- Build all libraries:
./scripts/build-all-libs.sh- Build the client or server:
# Build client
./scripts/build.sh build client
# Build server
./scripts/build.sh build server- Run the client:
./r-type_clientFor detailed server setup instructions including database configuration, please refer to the server README.
For comprehensive technical documentation, architecture details, API references, and development guides, visit our GitBook:
The documentation covers:
- System architecture
- Protocol specifications
- Component documentation
- Development workflows
- API references
We welcome contributions! Please read our Contributing Guidelines before submitting pull requests.
Key points:
- Follow our code style conventions
- Use conventional commits
- Create branches from Jira tasks
- Ensure all code is reviewed before merging
This project was developed by:
- Alan Cunin - Project Manager
- Aymeric Bretin
- Enzo Maillefer
- Florian Peridy
- Maël Bertocchi - Technical Lead
This project is part of an Epitech academic project.
