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
- Read the Contributing Guide
- Explore the Game Engine Architecture
For Game Development
- Understand the ECS Architecture
- Learn about Entity and Components
- Explore the Game Engine class
For Debugging
- Set up the Logger System
- Configure Log Levels
- 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
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
🛠️ 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
📖 Need Help?
- Getting Started: Check the documentation guide
- Contributing: Read how to contribute
- Questions: See the FAQ below
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.