Les projets peuvent rencontrer des difficultés d’évolutivité à mesure que leur code, leurs ressources et la taille de leur équipe augmentent. Pour garantir le bon fonctionnement de votre projet, Epic Games propose, en complément de l’UE, une gamme d’outils permettant de :
Distribuer le moteur et votre projet à votre équipe.
Réduire les temps de compilation et d’empaquetage.
Réduire l'espace occupé par votre projet sur le disque dur.
Réduire le temps de synchronisation pour extraire le code et les ressources mis à jour du contrôle de version.
Mettre en place un pipeline de build automatisé.
Mettre en place un pipeline de tests automatisés.
Tout cela permet de réduire les frictions ressenties par chaque membre de l'équipe lorsqu'il travaille avec l’Unreal Engine, mais aussi de réduire le temps d'itération pour construire, tester et modifier les fonctionnalités.
Gérer votre projet avec un logiciel de contrôle de version
Le contrôle des versions est un élément essentiel de tout projet de développement de jeu. Un serveur de contrôle de version stocke une copie centralisée et officielle du code et des fichiers de votre projet, tandis que les clients de contrôle de version permettent aux membres de l'équipe d'accéder à ces fichiers et de les mettre à jour. Un "référentiel" est un regroupement de versions distinctes des fichiers stockés sur un serveur de contrôle de version, et les "espaces de travail" sont les répertoires côté client qui stockent chacun la copie du client d'un référentiel particulier.
L'intégration du contrôle de version permet de :
Télécharger une copie du projet sur une machine locale.
Examiner et valider le code et les ressources.
Séparer les groupes de travail afin d'éviter les conflits.
Extraire, verrouiller et libérer des fichiers pour éviter que plusieurs membres de l'équipe ne travaillent sur le même fichier.
Comparer (diff) et fusionner des fichiers.
En outre, le contrôle de version conserve une liste des modifications apportées au référentiel, ce qui permet de revenir facilement à une version antérieure des ressources ou du code si une modification pose des problèmes.
L'UE prend en charge les intégrations de contrôle de version suivantes :
Perforce
Git avec GitLFS
Subversion
Diversion
La mise en place d'un tel système pour votre projet devrait être la première chose à faire avant que quiconque ne commence à travailler sur les ressources ou le code. Tous sont acceptables, mais Epic Games utilise principalement Perforce, et de nombreuses fonctionnalités de ce guide tournent autour de l'intégration de Perforce dans l’UE. Une fois que votre projet dispose d'un référentiel, vous pouvez l'intégrer au navigateur de contenu pour extraire et gérer des fichiers directement depuis l’Unreal Editor.
Pour plus d'informations sur l'utilisation du contrôle de version avec l'UE, consultez la page [contrôle de la source](understanding-the-basics\source-control) et la section [Collaboration et contrôle de version](setting-up-your-production-pipeline\collaboration-in-unreal-engine).
Distribuer votre projet avec Unreal Game Sync
Unreal Game Sync (UGS) est un client qui s'interface avec Perforce, Unreal Build Tool et votre EDI (le cas échéant) pour permettre aux membres de l'équipe de télécharger ou de compiler facilement des versions de travail de votre projet. Une fois l'UGS configuré, les utilisateurs peuvent sélectionner leur fichier .uproject, afficher une liste des builds de ce projet et rechercher des builds dont le fonctionnement a été vérifié. Si vous avez installé un EDI, vous pouvez alors extraire et compiler les fichiers sources à l'aide d'une seule commande. Si ce n'est pas le cas, vous pouvez rechercher des builds contenant des binaires pré-intégrés et les télécharger à la place.
Pour plus d'informations, consultez documentation d'UGS.
Créer des fichiers d’installation hors ligne pour votre équipe
Si vous avez forké et personnalisé les sources de votre moteur, vous pouvez créer un build installé, et l'empaqueter comme un programme d’installation hors ligne d'Unreal Engine. Pour en savoir plus sur la création de fichiers d’installation hors ligne, consultez les pages Créer des builds installés et Référence des builds installés.
Réduire la compilation C++ excessive avec les modules Unreal Engine et ICWYU
Plus il y a de code C++ dans votre projet, plus il faudra de temps pour le compiler à partir de votre EDI. Il est donc normal que les temps de compilation en C++ augmentent au cours d'un projet. Pour les projets particulièrement importants, cela peut réduire le temps d'itération des programmeurs.
L'architecture de l'UE divise le code en modules pour atténuer ce problème. Lorsque vous organisez votre code en modules, seul le code du module sur lequel vous travaillez est recompilé, tandis que les autres modules restent intacts. L'utilisation de modules présente également d'autres avantages, que vous pouvez découvrir dans la section Modules de l’Unreal Engine et sur la page Modules de l'éditeur.
La base de code de l'UE utilise également un paradigme Include What You Use (Inclure ce que vous utilisez, IWYU), qui peut également réduire les temps de construction en utilisant plus efficacement les instructions #include et les déclarations en aval. Pour plus d'informations, voir la page Inclure ce que vous utilisez.
Créer des builds automatisés avec UAT, BuildGraph et Horde
Bien que vous puissiez empaqueter des projets à partir d'Unreal Editor, la commande BuildCookRun de Unreal Automation Tool (UAT) est le mécanisme sous-jacent de création de builds empaquetés. Elle peut être utilisée via n'importe quelle interface en ligne de commande adaptée à votre système d'exploitation. L’UAT dispose de nombreux scripts qui peuvent aider à automatiser le processus de build dans des scénarios où il n'est pas viable d'utiliser une interface graphique, comme la mise en place d'un serveur de build pour compiler automatiquement chaque soumission à votre système de contrôle de version. Vous pouvez créer votre propre pipeline de build automatisé avec la commande BuildCookRun d'UAT pour une approche directe et simple. Vous pouvez également utiliser BuildGraph pour mettre en place un système plus détaillé de build automatisé.
Horde est une suite d’intégration continue robuste, construite sur le framework de BuildGraph. Elle comprend un large éventail d’outils permettant de surveiller l’état des builds, d’intégrer des logiciels de suivi des tâches, de gérer des appareils de test à distance, et de fournir des analyses détaillées ainsi que des journaux. En outre, Horde prend également en charge Unreal Build Accelerator (UBA), qui permet d'améliorer la vitesse de compilation en répartissant le travail sur plusieurs serveurs ou postes de travail.
Si vous souhaitez personnaliser votre pipeline de build, consultez la section Système de build Unreal qui fournit une référence complète sur les outils d'automatisation et de build.
Accélérer le temps de préparation grâce au mode de préparation multi-processus
Lorsque vous générez un build, l’UE prépare les ressources de votre projet pour la plateforme cible, en les convertissant dans un format compatible et en appliquant les paramètres de compression que vous avez définis. Normalement, il s'agit d'un processus unique, mais pour accélérer le temps de préparation, vous pouvez activer la préparation multiprocessus et configurer le nombre de processus de préparation simultanés que vous souhaitez utiliser. Voir le guide Préparation multiprocessus pour plus d'informations.
Rationaliser la gestion des ressources grâce aux ressources virtuelles
Lorsque le nombre et la taille des ressources de votre projet augmentent, cela peut ralentir considérablement le temps nécessaire aux membres de l'équipe pour mettre à jour leur projet à partir du contrôle des sources, et augmenter l'espace disque utilisé par une copie locale du projet.
Pour y remédier, l’Unreal Engine prend en charge les ressources virtuelles. Elles séparent les données principales des ressources des métadonnées qu’elles utilisent pour s'afficher dans le navigateur de contenu de votre éditeur. Lorsque les membres de votre équipe synchronisent le projet, ils ne synchronisent que les métadonnées, qui utilisent beaucoup moins d'espace que la ressource complète. Lorsqu'ils ont besoin d'accéder à la ressource pour la visualiser ou la modifier, l’UE extrait ses données brutes du référentiel de votre équipe ou d'un cache de données dérivées (CDD) à la demande.
Pour plus d'informations, voir la documentation Ressources virtuelles.
Réduire les temps de compilation des shaders de l'éditeur grâce au cache de données dérivées
De nombreuses ressources de l'UE utilisent des données dérivées. Par exemple, lorsque vous créez des matériaux, Unreal doit ensuite compiler les shaders pour que ceux-ci puissent s'afficher complètement. Les fichiers de votre système de contrôle de version contiennent les instructions nécessaires à la création du shader, qui sont communes à toutes les plateformes et propices à l'édition ; les données dérivées existent en tant que concept et mécanisme distincts, à la fois parce que leur stockage dans le même fichier que leurs données d'origine peut alourdir votre référentiel et parce que le format exact d'un shader compilé peut être différent selon le matériel et le système d'exploitation que vous utilisez. À mesure que votre projet ou votre équipe s'agrandit, ce processus peut devenir fastidieux lorsque vous devez récupérer des modifications importantes, en particulier si vous devez retélécharger votre projet à partir de zéro.
Les caches de données dérivées (CDD) servent de référentiel secondaire pour ce type de données dérivées. Lorsqu'un utilisateur compile ou prépare une ressource, il ajoute les données dérivées au CDD. Ensuite, lorsque d'autres utilisateurs disposant d'un matériel compatible synchronisent la ressource, l’UE peut extraire à la fois la ressource et ses données dérivées, ce qui signifie qu'il n'est pas nécessaire de la recompiler à partir de zéro. Contrairement au contrôle de version, les CDD ne conservent généralement pas toutes les versions de tous les fichiers soumis, mais seulement les données les plus récentes jusqu'à une limite spécifiée. Dans les rares cas où quelqu'un aurait besoin de consulter une version très ancienne du projet, les données dérivées peuvent toujours être régénérées. Vous pouvez déployer une grande variété de CDD partagés à différents endroits en fonction de votre personnel, et définir des règles d’accès afin que les membres de l’équipe utilisent les sources les plus rapides et les plus fiables.
Pour plus d'informations sur l'utilisation des CDD, voir la documentation sur le cache de données dérivées. L’UE prend en charge plusieurs méthodes d'hébergement d'un CDD partagé, mais nous recommandons Zen Storage Server.
Développer vos tests avec des tests automatisés
L'UE dispose d'une variété de frameworks de tests automatisés pour le test du code dans différents contextes. Ils peuvent vous aider à détecter les bogues dans votre code plus tôt, tout en laissant aux testeurs QA davantage de marge pour se concentrer sur les problèmes liés à l’expérience utilisateur. Pour plus d'informations, voir la section Framework de test d'automatisation.