Guide de Contribution¶
Comment contribuer au projet R-Type.
Code de Conduite¶
Nous nous engageons à fournir un environnement accueillant et respectueux pour tous les contributeurs.
- Soyez respectueux et inclusif
- Acceptez la critique constructive
- Concentrez-vous sur ce qui est le mieux pour la communauté
- Montrez de l'empathie envers les autres membres
Comment Contribuer¶
1. Fork et Clone¶
# Fork sur GitHub, puis clone
git clone https://github.com/VOTRE_USERNAME/rtype.git
cd rtype
# Ajouter le remote upstream
git remote add upstream https://github.com/original-org/rtype.git
2. Créer une Branche¶
# Mettre à jour develop
git checkout develop
git pull upstream develop
# Créer une branche
git checkout -b feature/ma-feature
# ou
git checkout -b fix/mon-bugfix
3. Développer¶
# Configurer (installe vcpkg + dépendances)
./scripts/build.sh
# Compiler
./scripts/compile.sh
# Tester
./scripts/test.sh
4. Commit¶
# Format du commit (conventional commits)
git commit -m "type(scope): description"
# Exemples
git commit -m "feat(server): add wave manager"
git commit -m "fix(client): resolve rendering issue"
git commit -m "docs(api): update GameWorld documentation"
5. Push et PR¶
Puis créer une Pull Request sur GitHub.
Conventional Commits¶
Format¶
Types¶
| Type | Description |
|---|---|
feat |
Nouvelle fonctionnalité |
fix |
Correction de bug |
docs |
Documentation |
style |
Formatage, pas de changement de code |
refactor |
Refactoring sans nouvelle feature ni fix |
perf |
Amélioration de performance |
test |
Ajout/modification de tests |
chore |
Maintenance (build, CI, etc.) |
Scopes¶
| Scope | Description |
|---|---|
server |
Code serveur |
client |
Code client |
network |
Protocole réseau |
audio |
Système audio |
graphics |
Rendu graphique |
docs |
Documentation |
ci |
CI/CD |
Exemples¶
feat(server): implement enemy wave system
Add WaveManager class to handle enemy spawning:
- 5 waves of increasing difficulty
- Boss at wave 5
- Configurable spawn patterns
Closes #42
---
fix(client): resolve memory leak in audio manager
VoiceChat component was not properly releasing
PortAudio resources on disconnect.
Fixes #123
---
docs(api): add GameWorld class documentation
- Add UML diagram
- Document all public methods
- Add usage examples
Pull Request¶
Template¶
## Description
[Description claire des changements]
## Type de changement
- [ ] Bug fix
- [ ] Nouvelle feature
- [ ] Breaking change
- [ ] Documentation
## Checklist
- [ ] Mon code suit les conventions du projet
- [ ] J'ai testé mes changements localement
- [ ] J'ai ajouté des tests si nécessaire
- [ ] J'ai mis à jour la documentation si nécessaire
- [ ] Tous les tests passent
## Screenshots (si applicable)
## Issues liées
Closes #XXX
Review Process¶
- CI doit passer - Jenkins build et tests
- Au moins 1 approval - Review par un mainteneur
- Pas de conflicts - Branche à jour avec develop
- Squash and merge - Pour un historique propre
Issues¶
Bug Report¶
## Description
[Description du bug]
## Reproduction
1. Étape 1
2. Étape 2
3. ...
## Comportement attendu
[Ce qui devrait se passer]
## Comportement actuel
[Ce qui se passe]
## Environnement
- OS: [ex: Ubuntu 24.04]
- Version: [ex: v1.0.0]
- Compilateur: [ex: Clang 16]
## Logs/Screenshots
[Si applicable]
Feature Request¶
## Description
[Description de la feature]
## Motivation
[Pourquoi cette feature serait utile]
## Solution proposée
[Comment vous imaginez l'implémentation]
## Alternatives considérées
[Autres approches possibles]
Architecture Décisions¶
Pour tout changement architectural significatif, créer un ADR :
# ADR-XXX: Titre
## Status
Proposed | Accepted | Deprecated | Superseded
## Context
[Pourquoi cette décision est nécessaire]
## Decision
[La décision prise]
## Consequences
### Positive
- ...
### Negative
- ...
Communication¶
Canaux¶
| Canal | Usage |
|---|---|
| GitHub Issues | Bugs, features |
| GitHub Discussions | Questions, idées |
| Pull Requests | Code review |
Labels¶
| Label | Description |
|---|---|
bug |
Bug confirmé |
enhancement |
Nouvelle feature |
documentation |
Doc uniquement |
good first issue |
Bon pour débutants |
help wanted |
Besoin d'aide |
priority: high |
Priorité haute |
priority: low |
Priorité basse |
Setup Développement¶
Prérequis¶
# Ubuntu/Debian
sudo apt install build-essential cmake ninja-build git clang
# vcpkg est installé automatiquement par build.sh
Build Rapide¶
# 1. Clone
git clone https://github.com/org/rtype.git
cd rtype
# 2. Configure + Build
./scripts/build.sh
./scripts/compile.sh
# 3. Test
./scripts/test.sh
# 4. Run
./artifacts/server/linux/rtype_server
./artifacts/client/linux/rtype_client
Cross-Compile Windows¶
# Installer MinGW
sudo apt install mingw-w64
# Build pour Windows
./scripts/build.sh --platform=windows
./scripts/compile.sh
Reconnaissance¶
Tous les contributeurs sont listés dans le fichier CONTRIBUTORS.md et mentionnés dans les release notes.
Merci de contribuer au projet R-Type !