Conception pour les performances

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Concevoir pour la performance signifie suivre une poignée de meilleures pratiques lorsque vous construisez votre expérience.Par rapport à la recherche et à la correction des problèmes de performance plus tard dans le processus de développement, la conception pour la performance peut vous faire gagner beaucoup de temps et d'effort.

Appareils de bas de gamme

Les appareils de bas niveau, notamment les appareils mobiles, ont de graves limitations de mémoire et sont sensibles aux écrasements en raison d'erreurs de mémoire insuffisante (OOM) :

  • Si vous souhaitez prendre en charge des appareils de moins haut niveau, choisissez au moins un appareil « de base », testez votre expérience dessus tout au long du processus de développement et prêtez une attention toute particulière à la fréquence des cadences et à l'utilisation de la mémoire.Au fur et à mesure que vous trouvez des zones de problème dans votre expérience, utilisez ces zones pour identifier les limites de votre appareil.

    Par exemple, vous pouvez tester une expérience avec le Render ( > ) et les statistiques de débogage de résumé activées ( ).Si le taux de cadence commence à baisser dans une zone particulièrement encombrée, vous pouvez examiner les chiffres de dessiner (scène) et déterminer que vous devez rester en dessous de 1 000 appels de dessin et de 1 000 000 triangles pour que l'expérience se déroule bien sur votre appareil de base.

    Ou vous pouvez examiner la console de développeur ( F9 ) et noter que l'utilisation de la mémoire est un peu élevée à moins que vous n'activiez streaming .Comprendre clairement les limites des appareils peut vous aider à rester en dessous d'elles tout en poursuivant la construction de votre expérience.

  • L'émulateur de périphérique dans Roblox Studio est utile pour vérifier la proportionnalité des aspects et les contrôles, mais n'est pas précis pour l'utilisation de la mémoire ; lorsque vous testez une expérience dans Studio, il exécute le serveur et le client, la consommation de mémoire étant donc significativement plus élevée.

Plus généralement, les tests sur une variété d'appareils peuvent vous aider à vérifier que l'expérience correspond à vos attentes visuelles et de performance à différents niveaux de qualité graphique.Pour un exemple beaucoup plus détaillé de la façon dont vous pourriez penser à optimiser votre expérience pour les appareils mobiles de bas niveau, voir optimisation du bâtiment et du script du monde réel.

Diffusion et téléportation

  • Diffusion en instance permet à Roblox de charger et décharger dynamiquement du contenu 3D et est une excellente option pour la plupart des endroits, notamment les plus grands.Le streaming améliore les temps de jointure, réduit l'empreinte mémoire et augmente le taux de cadence.Pour plus d'informations, voir améliorer les performances.

  • Considérez la rupture de grands endroits en plus gérables et l'utilisation de téléportation pour déplacer les joueurs entre eux.Cette approche peut réduire le temps de jointure initial , mais impose des temps de jointure supplémentaires lorsque les joueurs se téléportent d'un endroit à un autre.Les avantages en matière d'utilisation de la mémoire varient en fonction de la taille de l'endroit et si vous avez activé le streaming.

    Même en ignorant les préoccupations de performance, vous pourriez trouver que disposer de plusieurs endroits simplifie le processus de développement, notamment si vous ajoutez régulièrement de nouveaux contenus à votre expérience ou faites partie d'une équipe plus large.

Matériaux et duplication

  • Les matériaux intégrés utilisent beaucoup moins de mémoire que les textures personnalisées, mais ne peuvent pas correspondre à votre vision artistique.Essayez d'utiliser des matériaux chaque fois que cela est possible afin de conserver le budget de mémoire pour les textures qui sont centrales à votre expérience.

  • Lorsque vous créez des ressources, convertissez-les en packages.Faire des packages partie de votre flux de travail aide à éviter le problème commun des ressources en double avec différents ID, ce qui peut nuire aux performances.

  • Lorsque vous ajoutez des mailles et des textures, utilisez-les et réutilisez-les plutôt que d'importer des copies en double.En redimensionnant, en tournant et en chevauchant, vous pouvez créer des environnements riches et variés qui nécessitent très peu d'appels de dessin .Pour plus d'informations, voir Supprimer les textures en double .

透明ité transparence

  • Évitez les valeurs de transparence autres que 0 (visible) et 1 (invisible).Lorsque vous utilisez la transparence partielle, veillez à éviter un surcroît de transparence élevé.

Programmation

  • Lorsque cela est possible, écrivez du code événementiel plutôt que des calculs par cadre.A 60 FPS, le budget total pour chaque cadre est de 16,67 millisecondes (ms).Même les calculs de cadence apparemment mineurs peuvent utiliser une partie importante de ce budget.

  • Trouvez des moyens de diviser le code de longue exécution en morceaux gérables.Si un morceau de code prend 100 ms à s'exécuter et que vous l'exécutez à chaque cadre, votre expérience ne peut fonctionner qu'à 10 FPS.Si vous décidez de ne faire fonctionner le code qu'une fois par seconde dans une expérience qui fonctionne autrement à 60 FPS, 59 de vos cadres arrivent après 16,67 ms...et puis un après 100 ms, ce qui provoque un ralentissement saccadé.

    Au lieu de cela, explorez comment vous pouvez diviser le code.Peut-être que vous pouvez effectuer 5 ms de travail par cadre, utiliser task.wait() , et avoir le calcul terminé toutes les 20 images tout en maintenant 60 FPS.Multithreading , parfois appelé Parallel Luau, peut également aider.

  • Utilisez la méthode RBXScriptConnection:Disconnect() pour empêcher les fonctions d'être appelées inutilement la prochaine fois qu'un événement se déclenche.

  • Ne pas appeler la même méthode à chaque fois que vous avez besoin d'une valeur. Appelez la méthode une fois, stockez la valeur, puis écrasez-la plus tard si nécessaire.

  • Ne stockez pas tout dans ReplicatedStorage .Le client charge tout ce qui se trouve dans ce conteneur.Au lieu de cela, utilisez ServerStorage pour tout ce dont le client n'a pas besoin d'accès.