๐ R-Type
January 6, 2025 ยท View on GitHub
Binary Names: r-type_server, r-type_client
Language: C++
Build Tool: CMake
๐ Table of Contents
- ๐ Project Overview
- โจ Key Features
- โ๏ธ Build and Run Instructions
- ๐ฆ Dependencies
- ๐ป Platform Support
- ๐ Documentation
- ๐ค Contributing
- ๐ License
- ๐ Contacts
๐ Project Overview
Advanced R-Type is a networked video game project inspired by the classic R-Type, reimagined as a multiplayer game where 1-4 players battle the evil Bydos together. This project involves creating:
- A multithreaded server that handles game logic and communication.
- A graphical client to display the game and handle player input.
The project emphasizes advanced software engineering practices, including modularity, cross-platform support, and efficient networking.
โจ Key Features
- ๐ฎ Multiplayer Support: Play with up to 4 players in a shared battle.
- ๐ ๏ธ Custom Game Engine: Designed with advanced architectural patterns like Entity-Component-System (ECS) and decoupled subsystems.
- ๐ก Binary Protocol: High-performance UDP communication for in-game interactions.
- ๐งฉ Extensible Gameplay:
- Modular design to support additional features and content.
- Plugin-friendly for future enhancements.
- ๐ฅ๏ธ Cross-Platform Compatibility: Runs on both Windows and Linux.
โ๏ธ Build and Run Instructions
๐ ๏ธ Prerequisites
- C++ Compiler: GCC (Linux) or MSVC (Windows).
- CMake: Ensure version 3.16 or higher.
- Optional: Package manager (e.g., Conan, Vcpkg) for dependencies.
๐จ Build Instructions
- Clone the repository:
git clone <repository-url> cd Advanced-R-Type``` - Build the project using CMake:
mkdir build && cd build cmake .. make```
โถ๏ธ Running the Game
- start the server:
./r-type_server - Launch the client:
./r-type_client
๐ฆ Dependencies
The project uses the following libraries:
- ๐ ๏ธ Asio or equivalent for networking (server).
- ๐จ SFML for rendering, input, and audio (client).
- โ๏ธ Optional: CMake FetchContent or a package manager like Conan or Vcpkg to manage dependencies.
All third-party dependencies must be bundled with the project or fetched during the build process.
๐ป Platform Support
- ๐ฅ๏ธ Windows: Compiled with MSVC.
- ๐ง Linux: Compiled with G++.
- ๐ Cross-compilation supported with CMake.
๐ Documentation
For a complete reference, see the documentation hosted online.
๐ Offline Documentation
If you do not have an internet connection, you can find an offline version of the documentation in the docs folder of the repository.
To access it:
- Navigate to the
docsdirectory in the project root. - Open the
getting-start.htmlfile in your browser.
The offline documentation includes:
-
Getting Started Guide
-
Engine Overview
-
Graphical Module
-
Protocol Reference
-
Server Details
-
Contribution Guide
This ensures you can still refer to key project details even without an internet connection. ๐
๐ค Contributing
We welcome contributions! ๐ To get started:
- ๐ด Fork the repository.
- ๐ฟ Create a feature branch.
- ๐จ Submit a pull request with a clear description of your changes.
Development Guidelines
- ๐ Use feature branches for development.
- ๐๏ธ Follow the provided coding conventions.
- โ Ensure all changes are documented and tested.
๐ License
This project is licensed under the MIT License. ๐ See the LICENSE file for more details.
๐ Contacts
For questions, suggestions, or feedback:
- ๐ง Team Contact: [antoine.le@epitech.eu], [tristan.delahousse@epitech.eu], [isaac.gonzalez-bottini@epitech.eu], [nicolas.rodiet@epitech.eu], [theo.fisch-dewailly@epitech.eu]