Skip to content

Welcome to R-Type Docs

About R-Type

R-Type is a modern C++ game engine project built from scratch. It demonstrates advanced software engineering practices including:

  • Entity Component System (ECS) architecture for flexible game logic
  • Multithreaded logging system for production debugging
  • Client-Server network architecture for multiplayer gameplay
  • Modular design with clear separation of concerns

🚀 Quick Start

For New Contributors

  1. Read the Contributing Guide
  2. Explore the Game Engine Architecture

For Game Development

  1. Understand the ECS Architecture
  2. Learn about Entity and Components
  3. Explore the Game Engine class

For Debugging

  1. Set up the Logger System
  2. Configure Log Levels
  3. Use Categories to filter logs

📚 Documentation Sections

Section Purpose
Game Engine & Architecture Core engine design and ECS system
Logger Logging system configuration and usage
Tests Testing framework and best practices
Build System CPM dependency management rationale
Client Client-side implementation details
Server Server-side implementation details and protocol
Contributing How to contribute and documentation guidelines

🎯 Key Concepts

Entity Component System (ECS)

A data-oriented architecture where:

  • Entities are identifiers for game objects
  • Components store data associated with entities
  • Systems process components and implement logic

Learn more about ECS →

Game Engine

The GameEngine class orchestrates the entire system:

  • Manages entities and components
  • Coordinates system execution
  • Maintains game state

Learn more about Game Engine →

Logging

Thread-safe logging with:

  • Multiple severity levels (Trace → Critical)
  • Category filtering for noise reduction
  • Colored console and file output

Learn more about Logging →


🛠️ Build & Setup

The project uses CPM (C++ Package Manager) for dependency management:

git clone https://github.com/eliestroun14/R-Type.git
cd R-Type
mkdir build && cd build
cmake ..
make

Learn why we use CPM →


📖 Need Help?


FAQ

Q: What is an Entity?
A: An Entity is a unique identifier representing a game object (player, enemy, projectile, etc.).

Q: How do I add a new Component?
A: See the Component Manager documentation.

Q: How do I configure logging?
A: Check the Logger Configuration guide.

Q: Why CPM and not Conan/vcpkg?
A: See the CPM Design Rationale.


📝 License

This project is part of the EPITECH curriculum. See Expectations for details.