๐Ÿš€ 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

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

  1. Clone the repository:
    git clone <repository-url>
    cd Advanced-R-Type```
    
    
  2. 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:

  1. Navigate to the docs directory in the project root.
  2. Open the getting-start.html file 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:

  1. ๐Ÿด Fork the repository.
  2. ๐ŸŒฟ Create a feature branch.
  3. ๐Ÿ“จ 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: