Cette démonstration montre comment utiliser le MicroProfiler pour trouver un aspect problématique d'une expérience et identifier la cause racine.Téléchargez l'expérience, Ouvrez à partir du fichier dans Studio, et suivez.
Identifier le problème
Après avoir ouvert l'expérience dans Studio, commencez à la tester avec F5 ou le bouton Jouer .
Le taux de rafraîchissement se sent décent, mais pas aussi lisse que ce devrait être pour une expérience de cette taille et de cette portée.Accédez à l'onglet Affichage et cliquez sur Résumé sous Statistiques.
Notez que le taux de cadence est inférieur à 60 images par seconde (FPS).
Ouvrez le MicroProfiler en appuyant sur CtrlAltF6 ( ⌘⌥F6 ).
Notez que les temps de cadre sont cohérents — les barres ont environ la même hauteur — donc tout ce qui provoque un faible taux de cadence est exécuté à chaque cadre au lieu de s'exécuter occasionnellement et de provoquer des pics de temps de cadence.
Pausez le MicroProfiler en appuyant sur CtrlP ( ⌘P ).La pause avec le raccourci clavier ouvre le mode détail.
Cliquez et faites glisser pour faire défiler le graphique.Notez comment une tâche spécifique dans les threads travailleurs semble utiliser beaucoup de temps de traitement par rapport au thread principal.Passez la souris sur RunService.Stepped et notez combien de temps cela prend pour rendre.
Les barres empilées dans la timeline indiquent une hiérarchie du code, donc gardez la souris sur les couches inférieures et inférieures pour essayer d'identifier le problème.
Remarquez l'étiquette LocalScript, qui indique le nom du script, et l'étiquette Raycast, qui indique que le problème pourrait être lié au lancer de rayons.
Créer des étiquettes de dépannage
Maintenant que le MicroProfiler a fourni un point de départ, vous pouvez résoudre le code problématique.
Arrêtez le test de lecture et filtrez la fenêtre Explorateur pour localscript trouver le fichier.
Une recherche pour raycast indique que cette partie du code est probablement la coupable de la mauvaise performance de l'expérience :
local RAYS_PER_SECOND = 1500local function onStepped()for _ = 1, RAYS_PER_SECOND dolocal startPosition = getRandomPosition()local endPosition = getRandomPosition()local direction = endPosition - startPositionWorkspace:Raycast(startPosition,endPosition)endendRunService.Stepped:Connect(onStepped)Spécifiquement, vous pouvez voir que le code lance 1 500 rayons par seconde dans des directions aléatoires.
Pour vérifier que cette partie du code cause le retard de rendu, enveloppez le contenu de la fonction avec debug.profilebegin() et debug.profileend() :
local function onStepped()debug.profilebegin("Raycast Spam")for _ = 1, RAYS_PER_SECOND dolocal startPosition = getRandomPosition()local endPosition = getRandomPosition()local direction = endPosition - startPositionWorkspace:Raycast(startPosition,endPosition)enddebug.profileend()end
Confirmer et résoudre le problème
Commencez à tester l'expérience et ouvrez à nouveau le microprofilateur.
Notez comment le MicroProfiler affiche désormais l'étiquette personnalisée, indiquant que cette fonction était en effet la cause racine.
Arrêtez le test de jeu.
Supprimez ou commentez la fonction onStepped() et la connexion RunService.Stepped:Connect(onStepped).
Commencez à tester à nouveau l'expérience et vérifiez à nouveau le résumé des statistiques de débogage.
Remarquez l'énorme amélioration de la vitesse de cadence et de la baisse correspondante des temps de cadence sur le graphique du profilomètre micro.