Accueil TutorielsAstuces Optimiser le Poids de vos Jeux sous Unity en 5 Etapes

Optimiser le Poids de vos Jeux sous Unity en 5 Etapes

par Isaac

Il vous est sans doute arrivé de terminer un projet sous Unity, puis après la compilation vous rendre compte que le jeu est juste… trop lourd! Pas d’inquiétudes, votre jeu n’est juste pas assez bien optimisé!

Il est important de limiter au minimum le poids de vos projets, en particulier pour les appareils mobiles ou les stores d’applications imposent une certaine limite.

Voici donc quelques astuces pour optimiser et réduire la taille de vos projets sous Unity!

01. Identifier les Assets qui occupent le plus d’espace


La première étape pour réduire la taille de votre projet consiste à déterminer quels assets y contribuent le plus en terme d’espace, car ces assets sont les plus susceptibles d’être optimisés. Cette information est disponible dans l’editor log (journal de l’éditeur) juste après avoir compilé le build.

Pour y accéder, allez à la fenêtre de la console (menu: Window <Console), cliquez sur le petit panneau déroulant en haut à droite, puis sélectionnez Open Editor Log.

Le journal de l’éditeur fournit un récapitulatif des Assets Broken par type, puis répertorie tous les Assets individuels par ordre de contribution par rapport à leur taille. En règle générale, des éléments comme les textures, les sons et les animations prennent le plus d’espace, tandis que les scripts, niveaux et shaders en occupent généralement très peu.

Le journal de l’éditeur vous aide à identifier les ressources que vous souhaitez supprimer ou optimiser, mais vous devez prendre en compte les éléments suivants avant de commencer:

  • Unity recode les actifs importés dans ses propres formats internes, de sorte que le choix du type d’asset source n’est pas pertinent. Par exemple, si vous avez une texture Photoshop multicouche dans le projet, elle est aplatie et compressée avant le build.

    L’exportation de la texture sous forme de fichier .png ne fait donc aucune différence pour le poids final du build. Tenez vous donc au format qui vous convient le mieux pendant le développement.

  • Unity supprime la plupart des ressources inutilisées pendant le build, de sorte que vous ne gagnez rien en supprimant manuellement les ressources du projet. Les seuls assets qui ne sont pas supprimés sont les scripts (qui sont en général très petits) et les assets dans le dossier Resources (car Unity ne peut pas déterminer lesquels sont nécessaires et lesquels ne le sont pas).

    Dans cet esprit, vous devez vous assurer que les seuls assets dans le dossier Ressources sont ceux dont vous avez besoin pour le jeu. Vous pourriez être en mesure de remplacer les actifs dans le dossier Ressources par AssetBundles – cela signifie que Unity charge les assets dynamiquement, réduisant ainsi la taille du player.

02. Réduire le poids des textures


Les textures sont les éléments qui prennent généralement le plus d’espace. La première solution consiste à utiliser des formats de texture compressés.

Si cela ne réduit pas suffisamment la taille du fichier, essayez de réduire la taille physique (en pixels) des images de texture.

Pour ce faire, sans modifier le contenu source réel, sélectionnez la texture dans la vue Projet et dans l’inspecteur
fenêtre réduire la taille maximale (Max Size). Pour voir ce que ça donne dans le jeu, effectuez un zoom avant sur un objet GameObject qui utilise la texture, puis ajustez la taille maximale jusqu’à obtenir le parfait compromis entre le poids et l’esthétique visuelle.

Gardez à l’esprit que changer la taille maximale de la texture n’affecte pas votre texture, juste sa résolution dans le jeu. Par défaut, Unity compresse toutes les textures lors de l’importation.

0.3. Compresser les Meshs et Animations


Vous pouvez compresser les maillages et les clips d’animation importés afin qu’ils occupent moins d’espace dans votre fichier de jeu. Pour activer la compression du maillage, sélectionnez le maillage, puis dans la fenêtre Inspecteur définissez la compression de maillage (Mesh Compression) sur Faible, Moyen ou Elevé (Low, Medium or High).

La compression des Mesh et Animation utilise la quantification, ce qui signifie que ces derniers prendront moins de place, mais pourraient présenter certaines inexactitudes. Expérimentez pour savoir lequel des niveaux de compression est optimal pour vos modèles.

04. Les  DLL


Par défaut, Unity inclut uniquement les DLL suivantes dans le lecteur intégré:

  • mscorlib.dll
  • Boo.Lang.dll
  • UnityScript.Lang.dll
  • UnityEngine.dll

Lors du build, vous devez éviter les dépendances sur System.dll ou System.Xml.dll. Unity ne les inclut pas dans le lecteur intégré par défaut, mais si vous utilisez leurs classes, elles sont incluses. Ces DLL ajoutent environ un mégaoctet à la taille de stockage du lecteur. Si vous avez besoin des XML dans votre jeu, vous pouvez utiliser une bibliothèque comme Mono.Xml.zip comme une alternative plus petite aux bibliothèques du système. Alors que la plupart des conteneurs génériques sont contenus dans mscorlib, Stack et quelques autres sont dans System.dll, vous devriez donc les éviter si possible.

05. Réduire la taille de la bibliothèque mobile .NET


Unity prend en charge deux niveaux de compatibilité API .NET pour certains périphériques mobiles: .NET 2.0 et un sous-ensemble de .NET 2.0. Sélectionnez le niveau approprié pour votre build dans les paramètres du lecteur.

Le profil API .NET 2.0 est similaire à l’API .NET 2.0 complète. La plupart des library routines sont entièrement implémentées. Cette option offre donc la meilleure compatibilité avec le code .NET préexistant. Cependant, pour de nombreux jeux, la bibliothèque complète n’est pas nécessaire et le code superflu occupe un espace mémoire précieux.

Pour éviter le gâchis de mémoire, Unity prend également en charge le profil de l’API de sous-ensemble .NET 2.0. Celui ci est très similaire au profil Mono « monotouch », tant les limitations du profil « monotouch » s’appliquent également au profil .NET 2.0 Subset d’Unity. Voir la documentation du projet Mono sur les limitations de MonoTouch pour plus d’informations.

De nombreuses library routines qui ne sont généralement pas nécessaires dans les jeux sont exclues de ce profil afin d’économiser de la mémoire. Cependant, cela signifie également que le code avec des dépendances sur ces routines ne fonctionne pas correctement. Cette option peut être une optimisation utile, mais vous devez vérifier que le code existant fonctionne toujours après son application.

06. Bonus : Des Astuces en Vrac

RollOver, contributeur sur le forum Openclassroom nous livre également quelques astuces pour réduire le poids de nos projets sous Unity :

. Eviter les assets 3D téléchargeables ultra-bien modélisés : plus il y a de polygone, plus le modèle 3D devient lourd.

 

. Contrôler les fichiers de texture qui arrivent avec les assets 3D : via Unity, sélectionnez vos textures et choisissez dans le menu inspector les dimensions en pixel que vous voulez y appliquer – à l’export, Unity compressent les texture dans un format unique en fonction de ces préférences, vous gagnerez donc en poids sans modifier les fichiers de vos textures.

 

. Compresser la vidéo en fonction de sa dimension à l’écran du joueur : Préférer le codec H264 compressé avec le meilleur rapport qualité poids possible. Choisir un bitrate encoding en CBR – (jouer avec le Mbps peut permettre de gagner en poids).


Source : https://docs.unity3d.com/Manual/ReducingFilesize.html

https://openclassrooms.com/forum/sujet/unity-optimiser-le-poids-d-un-jeu

CECI POURRAIT VOUS INTERESSER...

Laisser un Commentaire

* En utilisant ce formulaire, vous acceptez le stockage et le traitement de vos données par ce site