GÉREZ VOTRE MONDE
Test et optimisation

Guide d'optimisation

14min

Mémoire

  • ZEPETO est structuré pour précharger les ressources utilisées dans le monde en mémoire.
  • Basé sur 1.7.0 dans le monde, les appareils de spécification les plus bas sont l'iPhone 8 (2 Go de RAM) et le Galaxy S8 (4 Go de RAM).
  • Par conséquent, nous devons faire en sorte que cela ne dépasse pas 2 Go.
    • L'équipement de spécification minimale peut être modifié plus tard.
  • Dans le cas d'un monde multijoueur, la mémoire doit être gérée en tenant compte du nombre maximum de personnes car chaque personnage a de la mémoire.



Comment vérifier les indicateurs de performance

Comment vérifier les indicateurs de performance dans un environnement mobile

  • Veuillez utiliser le Profilage d'Exécution officiel fourni par ZEPETO.

📘 Veuillez vous référer au guide suivant. [Profileur de temps d'exécution]



Comment vérifier les indicateurs de performance pour les serveurs multijoueurs mondiaux dans votre environnement de développement local

Si vous utilisez VS Code comme éditeur de script, vous pouvez vérifier divers indicateurs de performance tels que l'utilisation du CPU, l'utilisation de la mémoire, et plus encore pour votre serveur d'environnement de développement local via le plugin.

📘 Veuillez vous référer au guide suivant sur la façon de configurer VS Code comme éditeur de script dans Unity.



1) Recherchez et installez Flame Chart Visualizer pour les profils JavaScript dans le panneau [Extension] sur le côté gauche de l'écran VSCode.

Document image




  • Les indicateurs de performance de l'environnement de développement local vérifiés par le plugin peuvent différer de l'environnement de service réel. Veuillez l'utiliser pour comprendre les tendances de performance approximatives et les problèmes de performance potentiels de la logique du serveur multijoueur mondial.
  • Si le répertoire de travail de VS Code n'est pas défini sur le projet mondial, le plugin ne fonctionnera pas correctement. Assurez-vous de sélectionner le bon dossier de projet dans le panneau [Explorateur].



2) Allez dans le panneau [Exécuter et Déboguer] dans VS Code et changez le type de débogage en Script Multijoueur Zepeto.

Document image




3) Appuyez sur le bouton Lecture sur l'écran Unity pour exécuter le monde, et appuyez sur le bouton [Démarrer le débogage] dans VS Code pour commencer le débogage à l'exécution.

Vous pouvez vérifier les indicateurs de performance du serveur multijoueur en temps réel dans le panneau [Exécuter et déboguer].

Document image




👍 ASTUCE

  • Vous pouvez ajouter les indicateurs de performance suivants en cliquant sur le bouton Basculer les graphiques de performance visibles dans le panneau [Exécuter et déboguer].
    • Utilisation du CPU
    • Mémoire utilisée
    • Mémoire totale
    • Taille de l'ensemble résident
    • Mémoire externe
    • Mémoire ArrayBuffer
Document image




Directives d'optimisation recommandées

Veuillez optimiser selon les critères suivants pour garantir que le monde publié fonctionne avec les spécifications minimales.

  • L'appareil avec spécifications minimales (avec 2 Go de RAM) plante lorsque :
    • Le profileur d'exécution > La mémoire allouée dépasse 550 Mo en moyenne.
      • Document image
        
    • Lorsque le monde est réellement en cours d'exécution, non seulement les ressources du monde, mais aussi divers processus fonctionnent en mémoire, il est donc recommandé de laisser un peu d'espace dans la mémoire allouée.
  • Pour les mondes multijoueurs, il y a une allocation de mémoire par personnage, donc vous devez gérer la mémoire en fonction du nombre maximum de joueurs.
    • Mémoire moyenne par personnage ZEPETO : 35 Mo
      • Si vous utilisez un mannequin de type personnage ZEPETO, il occupe la même mémoire que lorsqu'un personnage Zepeto entre.
      • Pour des raisons d'optimisation, nous recommandons d'utiliser le type de mannequin Simple si possible.
    • Moyenne de 280 Mo lorsque jusqu'à 8 personnes entrent
      • Ce sont des chiffres moyens ; veuillez tester votre mémoire allouée en ayant réellement le nombre maximum de personnes entrer avant le lancement, si possible.

FPS (Images Par Seconde)

  • La limite maximale de FPS est de 30FPS.



Capacité

  • La capacité du package est limitée à 1 Go.
  • Avec la fonctionnalité de mouvement inter-mondes fournie par World 1.8.0, vous pouvez résoudre indirectement la partie capacité.



Méthode d'optimisation



Qu'est-ce qui peut être amélioré concernant les ressources

  • Veuillez supprimer les dossiers de paquets inutilisés et les fichiers inutilisés également.
  • Veuillez ajuster le nombre d'objets dans le projet et le nombre d'arbres/piscines dans le terrain.



Qu'est-ce qui peut être amélioré concernant le code

  • Utilisation des Coroutines : yield ne produit pas de déchets, mais créer de nouveaux waitForSeconds produira des déchets. Par conséquent, créez et utilisez les objets.
  • Dans Update ( ), les parties qui n'ont pas besoin d'être appelées à chaque image sont remplacées afin qu'elles puissent être appelées toutes les n images.
  • Évitez d'appeler des fonctions de logique lourde dans Awake( ) OnEnable( ) Start( ).
  • Évitez de laisser Update ( ) et LateUpdate ( ) même pour des fonctions vides.
  • Évitez d'ajouter des composants à l'exécution. Si nécessaire, il est plus efficace d'instancier le prefab.
  • GameObject.Find, GameObject.GetComponent, et Camera.main sont coûteux, donc ne les appelez pas depuis Update() mais appelez-les depuis Start() si nécessaire.
  • Instancier et détruire produisent des déchets et des collectes de déchets qui ralentissent le processus. Au lieu de cela, essayez de les réutiliser avec des pools.
  • Renderer.material utilise Renderer.sharedMaterial chaque fois que cela est possible pour accéder au matériau de l'objet lié, car il est trop coûteux de créer une nouvelle copie et de la retourner.



Qu'est-ce qui peut être amélioré dans l'interface utilisateur

  • Selon l'objectif, divisez le canevas et définissez le canevas qui n'est pas utilisé comme invisible.
  • Limitez les GraphicRaycasters et effacez la cible de Raycast. Effacez le GraphicRaycaster du canevas et insérez le Graphic Raycaster séparément dans des éléments individuels, tels que des boutons.
  • Si vous n'avez pas besoin de Raycast Target dans le texte ou les images, supprimez-le.
  • Évitez d'utiliser des groupes de mise en page à moins qu'il ne s'agisse d'une interface utilisateur dynamique. Utilisez l'ancre pour l'organiser.
  • Les grandes listes et les vues en grille sont coûteuses, donc évitez de les utiliser.
  • Lors de l'utilisation de l'interface utilisateur en plein écran, cachez tout sauf ce canevas. Cela élimine le besoin pour la caméra de rendre la scène 3D. Cela cache également les canevas inutiles.
  • Abaissez l'Application.targetFrameRate car vous n'avez pas besoin de mettre à jour chaque 60 fps lors de l'utilisation de l'interface utilisateur en plein écran.
  • Ne laissez pas d'espace vide pour la caméra de rendu du canevas qui utilise l'espace mondial, et remplissez-le avec la caméra que vous utilisez.
    • Si vous laissez un vide, Unity remplira automatiquement camera.main.



Qu'est-ce qui peut être amélioré concernant l'audio

  • Changer le clip audio en mono.
  • Permet l'utilisation de fichiers WAV. Tout fichier de musique compressé sera décompressé puis recompressé pendant le temps de construction. La qualité du fichier musical est dégradée pendant ce processus.
  • Compresser le clip et réduire le taux de compression.
  • Utiliser la plupart des fichiers avec Vorbis, et changer le son court en ADPCM.
  • Ne pas dépasser 22 050 Hz.
  • Sélectionner le type de chargement approprié.
    • Pour les fichiers musicaux de taille 200 ko ou moins, décompresser au chargement.
    • Pour les fichiers musicaux de taille 200 ko ou plus, rester compressé en mémoire.
  • Définir les fichiers volumineux et la musique de fond pour le streaming.
  • Les fichiers musicaux muets ne se terminent pas simplement en changeant le volume à zéro, donc assurez-vous qu'ils sont détruits.