Ce guide montre comment utiliser le MicroProfiler pour trouver un aspect problématique d'un jeu et identifier la cause principale. Téléchargez le jeu, Ouvrir à partir du fichier dans Studio, et suivez les instructions.
Identifier le problème
Après avoir ouvert le jeu dans Studio, commencez à le tester avec F5 ou le bouton Jouer.
La fréquence d'images semble correcte, mais pas aussi fluide qu'elle devrait l'être pour un jeu de cette taille et portée. Appuyez sur CtrlShiftF5 (⌘ShiftF5) pour afficher la superposition du Résumé des performances.

Notez que la fréquence d'images est inférieure à 60 images par seconde (FPS).
Ouvrez le MicroProfiler en appuyant sur CtrlAltF6 (⌘⌥F6).

Notez que les temps de trame sont cohérents—les barres sont à peu près de la même hauteur—donc ce qui cause la faible fréquence d'images s'exécute à chaque trame plutôt que de s'exécuter occasionnellement et de provoquer des pics de temps de trame.
Mettez le MicroProfiler en pause en appuyant sur CtrlP (⌘P). Mettre en pause avec le raccourci clavier ouvre le mode détaillé.
Cliquez et faites glisser pour faire défiler le graph. Notez qu'une tâche particulière dans les threads de travail semble utiliser beaucoup de temps de traitement par rapport au thread principal. Survolez RunService.Stepped et notez combien de temps cela prend pour rendre.

Des barres empilées dans la chronologie indiquent une hiérarchie de code, alors continuez à survoler des couches de plus en plus basses pour essayer d'identifier le problème.


Notez l'étiquette LocalScript, qui indique le nom du script, et l'étiquette Raycast, qui indique que le problème pourrait être lié au raycasting.
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 jeu et filtrez la fenêtre Explorer pour localscript afin de trouver le fichier.

Une recherche de raycast indique que cette portion de code est probablement responsable de la mauvaise performance du jeu :
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 portion de code cause le retard de rendu, enveloppez le contenu de la fonction avec debug.profilebegin() et debug.profileend() :
local function onStepped()debug.profilebegin("Spam de Raycast")for _ = 1, RAYS_PER_SECOND dolocal startPosition = getRandomPosition()local endPosition = getRandomPosition()local direction = endPosition - startPositionWorkspace:Raycast(startPosition,endPosition)enddebug.profileend()end
Confirmer et corriger le problème
Commencez à tester le jeu, et ouvrez à nouveau le MicroProfiler.
Notez comment le MicroProfiler affiche maintenant l'étiquette personnalisée, indiquant que cette fonction était en effet la cause principale.

Arrêtez le test de jeu.
Supprimez ou commentez la fonction onStepped() et la connexion RunService.Stepped:Connect(onStepped).
Commencez à tester le jeu à nouveau, et vérifiez le Résumé des performances à nouveau.

Notez l'énorme amélioration de la fréquence d'images et la baisse correspondante des temps de trame dans le graphique du MicroProfiler.