Changelog - Fixes de Compilation
2026-02-08 - Correction des erreurs de compilation Epic
Problème
Le plugin compilait localement mais échouait sur les serveurs d'Epic/FAB avec des erreurs de types non définis.
Cause Racine
Unreal Engine 5.5+ a retiré les "transitive includes" (includes implicites). Les headers qui étaient automatiquement inclus via d'autres headers ne le sont plus.
Erreurs Rencontrées
1. error C2065: 'GEngine': undeclared identifier
Fichier: ElysMusicEngineBPLibrary.cpp
Solution: Ajout de #include "Engine/Engine.h"
2. error C2027: use of undefined type 'UWorld'
Fichiers: ERP_MusicSubsystem.cpp, ERP_MusicVolume.cpp, ERP_StingerVolume.cpp
Solution: Ajout de #include "Engine/World.h"
3. error C2027: use of undefined type 'UGameInstance'
Fichiers: ERP_MusicVolume.cpp, ERP_StingerVolume.cpp, ERP_MusicSubsystem.cpp
Solution: Ajout de #include "Engine/GameInstance.h"
4. error C2027: use of undefined type 'FTimerManager'
Fichier: ERP_MusicSubsystem.cpp
Solution: Ajout de #include "TimerManager.h"
Fichiers Modifiés
-
ElysMusicEngineBPLibrary.cpp
- Ajout:
#include "Engine/Engine.h"
- Ajout:
-
ERP_MusicSubsystem.cpp
- Ajout:
#include "Engine/GameInstance.h" - Ajout:
#include "Engine/World.h" - Ajout:
#include "TimerManager.h"
- Ajout:
-
ERP_MusicVolume.cpp
- Ajout:
#include "Engine/GameInstance.h"
- Ajout:
-
ERP_StingerVolume.cpp
- Ajout:
#include "Engine/GameInstance.h"
- Ajout:
Outils Ajoutés
1. Script de Test de Compilation (test_compilation.ps1)
Script PowerShell pour tester la compilation localement avant soumission.
Utilisation:
# Test une version
.\test_compilation.ps1 -UEVersion 5.4
# Test plusieurs versions
.\test_compilation.ps1 -TestVersions @("5.0", "5.4", "5.5", "5.6", "5.7")
# Build propre
.\test_compilation.ps1 -UEVersion 5.6 -CleanOutput
Fonctionnalités:
- ✅ Détecte automatiquement les installations UE
- ✅ Compile avec RunUAT BuildPlugin
- ✅ Génère des logs détaillés
- ✅ Affiche les dernières 50 lignes d'erreur
- ✅ Vérifie les binaires générés
- ✅ Support de multiples versions UE
2. Workflow CI/CD GitHub Actions
Fichiers:
.github/workflows/unreal-build.yml- Workflow principal.github/workflows/ci.yml- Mise à jour (validation structure)
Validations:
- ✅ Structure du plugin (.uplugin, dossiers requis)
- ✅ Pas de binaires dans le repo
- ✅ Conventions de nommage ERP
- ✅ Vérification des includes manquants
- ✅ Dépendances de module
- ✅ Linting Markdown
Note: La CI ne compile PAS le plugin (UE est trop lourd). Utiliser test_compilation.ps1 localement.
Documentation Ajoutée
-
Documentation/CompilationTesting.md
- Guide complet d'utilisation du script
- Résolution des problèmes courants
- Checklist de pré-soumission
-
CONTRIBUTING.md
- Guidelines pour les contributeurs
- Conventions de code et nommage
- Process de PR avec tests de compilation obligatoires
-
README.md
- Section "Pour les développeurs" ajoutée
- Lien vers le guide de compilation
Tests de Validation
✅ UE 5.6 - Compilation réussie
✅ UE 5.7 - Compilation réussie
Checklist pour la Prochaine Soumission
- Tester avec
test_compilation.ps1sur UE 5.0-5.7 - Vérifier qu'il n'y a pas de warnings
- Tester en jeu dans chaque version
- Vérifier que les binaires sont dans
.gitignore - Valider avec
prepare_fab_package.py --validate - Soumettre à Epic/FAB
Leçons Apprises
-
Toujours inclure les headers explicitement
- Ne jamais compter sur les includes transitifs
- UE 5.5+ est strict sur les includes
-
Tester localement avant soumission
- Epic utilise potentiellement des versions UE différentes
- Le script de compilation local reproduit leur build
-
CI != Compilation
- La CI GitHub Actions valide la structure, pas la compilation
- Les tests de compilation doivent être locaux
-
Règles d'or pour les includes:
// Utilisez GEngine? -> #include "Engine/Engine.h"
// Utilisez UWorld? -> #include "Engine/World.h"
// Utilisez UGameInstance? -> #include "Engine/GameInstance.h"
// Utilisez FTimerManager? -> #include "TimerManager.h"
Prochaines Étapes
- Installer UE 5.0-5.5 pour tests complets
- Tester le plugin dans chaque version
- Mettre à jour le numéro de version dans
.uplugin - Soumettre avec confiance à Epic/FAB
Date: 2026-02-08
Auteur: Elys Allesiardo
Status: ✅ Résolu et validé