MicroProfiler

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

MicroProfiler to narzędzie do optymalizacji wydajności i rozwiązywania problemów w Roblox Studio oraz kliencie Roblox. Dostarcza szczegółowe, wizualne informacje o czasie dla wszystkich zadań silnika, które są wykonywane podczas klatki, takich jak animowanie postaci, aktualizacja fizyki, uruchamianie skryptów i renderowanie geometria. Możesz zidentyfikować, które zadania zostały wykonane w danej klatce, jak długo te zadania trwały i czy któreś z nich uniemożliwiły ci osiągnięcie celów czasu klatki.

Czas klatek

Aby używać MicroProfilera, musisz zrozumieć związek między czasem klatki a liczbą klatek.

  • Czas klatki to czas, jaki zajmuje renderowanie klatki na ekranie, zazwyczaj mierzony w milisekundach.
  • Liczba klatek to liczba klatek renderowanych na ekranie, zazwyczaj mierzona w klatkach na sekundę (FPS).

Niższe czasy klatek oznaczają wyższą liczbę klatek. Podziel 1 000 milisekund (1 sekunda) przez czas klatki, aby uzyskać liczbę klatek.

Średni czas klatkiKlatek na sekundę
33.33 ms30 FPS
16.67 ms60 FPS
8.33 ms120 FPS
4.17 ms240 FPS

Aby zapewnić płynność rozgrywki, nie wystarczy mieć wysokiej liczby klatek. Potrzebujesz spójnych czasów klatek. Na przykład, jeśli 59 klatek przybywa w 10 milisekundach, a jedna klatka w 410 milisekundach, gracze odczuwają ogromne, szarpane opóźnienie, mimo że gra działa z prędkością 60 FPS. Jeśli wszystkie klatki zajmują mniej więcej ten sam czas na renderowanie, twoja gra będzie wydawać się znacznie płynniejsza z powodu tej spójności, szczególnie przy niższych liczbach klatek.

MicroProfiler koncentruje się wyłącznie na czasie klatki. Jego celem jest pomoc w identyfikacji szczytów czasu klatki i tego, co je spowodowało.

Otwórz MicroProfilera

Otwieranie MicroProfilera różni się w zależności od platformy:

  • W kliencie mobilnym otwórz menu Ustawienia i włącz MicroProfilera. Następnie z maszyny deweloperskiej w tej samej sieci, użyj przeglądarki internetowej, aby przejść do podanego adresu IP i portu.

    Interfejs użytkownika MicroProfilera na urządzeniu mobilnym.

    Zrzut ekranu pokazuje adres IP 172.18.56.105 i port 1338, więc przechodzisz do 172.18.56.105:1338. W zależności od konfiguracji sieci twojego urządzenia, możesz zobaczyć wiele adresów IP. Jeśli jeden nie działa, spróbuj następnego.

  • W kliencie desktopowym naciśnij CtrlF6 (F6).

  • W Studio naciśnij CtrlF6 (F6).

Ogólnie rzecz biorąc, klient mobilny to najlepsze miejsce do profilowania twojej gry. Większość graczy w Robloxie korzysta z telefonów i tabletów, a te urządzenia mają poważne ograniczenia termiczne i energetyczne, które ograniczają ich wydajność. Jeśli twoja gra działa dobrze na średniej klasy tablecie z Androidem, prawie na pewno działa o wiele lepiej na komputerze stacjonarnym do gier.

Podstawy MicroProfilera

MicroProfiler składa się z dwóch podstawowych komponentów: wykresu czasu klatki i szczegółowej osi czasu zadań.

  • Wykres czasu klatki znajduje się na górze interfejsu i pokazuje, jak długo każda klatka zajmowała na renderowanie. Wyższe słupki oznaczają dłuższe czasy klatek.
  • Oś czasu pokazuje wszystkie pojedyncze zadania, które zostały wykonane podczas klatki. Szersze słupki reprezentują zadania, które zajęły więcej czasu na wykonanie.

Typowy przepływ pracy w MicroProfilerze polega na używaniu wykresu czasu klatki do identyfikacji szczytu (wyższy słupek), a następnie na używaniu osi czasu do zidentyfikowania, które zadania spowodowały ten szczyt. Następnie możesz sprawdzić odniesienie tagów w celu uzyskania informacji o zadaniu i sposobie poprawy jego wydajności.

Przykład szczytu czasu klatki.

Wykres czasu klatki

Wysokość każdego słupka wskazuje liczbę milisekund, które zajęły ukończenie klatki. Nowsze klatki znajdują się po prawej stronie. Najedź kursorem na klatkę, aby uzyskać podstawowe informacje dotyczące użycia CPU i GPU.

Wykres czasu klatki Microprofilera, pokazujący niebieskie klatki i szczegółowe informacje o klatkach.
  • Pomarańczowe słupki to klatki, w których Czas Ściany Zadań przekracza Czas Ściany Renderowania. W tych klatkach co najmniej jeden z wątków roboczych, które wykonują takie czynności jak uruchamianie skryptów, obliczanie fizyki i odtwarzanie animacji, zajmował więcej czasu na wykonanie niż główny wątek renderowania.

    Jeśli gra nie osiąga celów czasu klatki i ma dużą liczbę pomarańczowych klatek, to powszechnymi przyczynami są skrypty, fizyka i animacje. Zobacz Poprawa wydajności.

  • Niebieskie słupki to klatki, w których Czas Ściany Renderowania przekracza Czas Ściany Zadań. W tych klatkach główny wątek renderowania zajmował więcej czasu niż jakiekolwiek wątki robocze.

    Jeśli gra nie osiąga celów czasu klatki i ma dużą liczbę niebieskich klatek, to wskazuje na wąskie gardło w renderowaniu. Powszechnymi przyczynami są nadmierna gęstość obiektów, ruch obiektów oraz oświetlenie. Zobacz Poprawa wydajności.

  • Czerwone słupki to klatki, w których spełnione są dwa warunki:

    • Czas Ściany Renderowania przekracza Czas Ściany Zadań
    • Czas Oczekiwania GPU jest większy niż 2,5 milisekundy

    Czerwone słupki są mniej powszechne niż pomarańczowe i niebieskie i często są wynikiem nadmiernej złożoności obiektów, rozmiaru tekstur i efektów wizualnych. Optymalizacja jest podobna do niebieskich słupków. Zobacz Poprawa wydajności.

Mniejsze zadania na końcu klatki mogą czasami zaburzać Czas Ściany Zadań i Czas Ściany Renderowania, co jest dobrą przyczyną, aby skupić się bardziej na czasie klatki niż na kolorach klatki. Nie ma "dobrego" koloru, do którego trzeba zmierzać. Mieszanka pomarańczowych, niebieskich i czerwonych nie jest problematyczna, o ile osiągasz swoje cele czasu klatki. Jeśli nie osiągasz celów czasu klatki, kolory mogą wskazywać, gdzie należy zoptymalizować.

Oś czasu

  • Kliknij lewym przyciskiem myszy i przeciągnij, aby przesunąć oś czasu. Na maszynie z wieloma rdzeniami CPU być może będziesz musiał przesunąć w górę lub w dół, aby znaleźć wątek wykonujący konkretne zadanie.

    Lewy bok szczegółowego widoku Microprofilera, z wierszami dla wątków.
  • Przewijanie powiększa i pomniejsza oś czasu. Połączone z etykietami milisekund u góry osi czasu, możesz uzyskać poczucie, jak długo trwało dane zadanie w absolutnym sensie, ale również jak długo trwało w odniesieniu do innych zadań.

    Szczegółowy widok Microprofilera z licznymi poziomymi etykietami.
  • Zielony nałożony kolor na wykresie słupkowym wskazuje liczbę klatek, które są aktualnie widoczne na osi czasu — poziom powiększenia. Kliknij lewym przyciskiem myszy na słupku klatki, aby przejść do tej pozycji na osi czasu.

    Może być konieczne dostosowanie poziomu powiększenia, ale najeżdżając na słupek, podświetlisz klatkę na osi czasu. Jasnoszare linie dzielą klatki.

    Wykres słupkowy MicroProfilera z zielonym nałożonym kolorem, aby pokazać poziom powiększenia.
  • Etykiety, które pojawiają się bezpośrednio pod inną etykietą, wskazują na zadania, które są realizowane jako część zadania wyższego poziomu.

    Zamiast zadania nadrzędnego, zazwyczaj chcesz zająć się najgorzej wykonującymi zadaniami podrzędnymi; zadanie nadrzędne nie może być krótsze niż suma jego zadań podrzędnych.

  • Kliknij prawym przyciskiem myszy na etykietę, aby powiększyć oś czasu do dokładnie czasu trwania tego zadania.

  • Jeśli ilość informacji jest przytłaczająca, użyj menu Grupy lub Wątki, aby filtrować oś czasu. Na przykład, możesz chcieć zobaczyć tylko zadania Render w głównym wątku.

    Widok na najeżdżenie na etykietę, z wyróżnioną grupą.
  • Użyj CtrlF (F), aby skoczyć do wystąpienia zadania, które zajmuje najwięcej czasu w zrzucie. Na przykład computeLightingPerform uruchamia się w każdej klatce klienta. Jeśli przeszukujesz go w zrzucie z 128 klatkami, możesz skoczyć do klatki, w której zajęło najwięcej czasu na ukończenie.

Wątki

Podobnie jak wiele programów, Roblox wykorzystuje wiele wątków do wykonywania sekwencji zadań jednocześnie. MicroProfiler wyświetla nazwę wątku po lewej stronie osi czasu.

Lewy bok szczegółowego widoku Microprofilera, z wierszami dla wątków.

Istnieją trzy ważne typy wątków:

  • Główny ("RBX Main"): Obsługuje zadania renderowania oparte na CPU. Przetwarza dane wejściowe, Humanoids, animacje/interpolacje, własność fizyki, dźwięk oraz oczekujące wznowienia skryptów. Również aktualizuje interfejsy Studio i koordynuje inne wątki.

  • Wątek roboczy ("RBX Worker"): Pomaga głównemu wątkowi w sieci, fizyce i znajdowaniu ścieżek. Ze względu na liczbę rdzeni w nowoczesnych CPU, prawdopodobnie masz wiele wątków roboczych, z których większość jest w stanie uśpienia w danym momencie.

  • Renderowanie ("GPU"): Podąża za logiką "przygotuj, wykonaj, zaprezentuj". Komunikuje się z jednostką przetwarzania grafiki (GPU) urządzenia.

    • Przygotuj: Informacje z głównego wątku są używane do aktualizacji modeli renderowania.
    • Wykonaj: Wydawaj polecenia renderowania, w tym 2D interfejsy.
    • Zaprezentuj: Synchronizuje się z GPU.

Niestandardowe profile skryptów

Jeśli twoje skrypty wykonują skomplikowane zadania, możesz profilować krytyczne części kodu, aby upewnić się, że nie zajmują zbyt wiele czasu. Owiń kod w debug.profilebegin() i debug.profileend(), aby zmierzyć wszystko wykonane pomiędzy tymi wywołaniami funkcji i utworzyć etykietę na osi czasu MicroProfilera.


local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Ciężka praca")
-- Przykład ciężkiej pracy: zamień dwie zmienne 200 000 razy
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)
Wiele etykiet na MicroProfilerze, z niestandardową etykietą zajmującą większość czasu przetwarzania.

Na podstawie trwałości na osi czasu możesz stwierdzić, że funkcja wykorzystuje dużo czasu przetwarzania w porównaniu do innych zadań.

Zapisz dane klatek

Jeśli chcesz zapisać zestaw danych klatek do późniejszego przeglądu (lub do podzielenia się z kimś innym), użyj przycisku Zapisz do pliku. MicroProfiler zapisuje dane klatek do samodzielnego pliku HTML o nazwie microprofile-<data>-<czas>.html.

Przycisk zapisu do pliku w interfejsie internetowym.

W kliencie desktopowym lub w Studio użyj menu Zrzut. W obu przypadkach MicroProfiler automatycznie zapisuje plik w katalogu logów Roblox:

  • W systemie Windows sprawdź %LOCALAPPDATA%\Roblox\logs.

    Jeśli korzystasz z aplikacji Universal Windows Platform (UWP), sprawdź \Users\<nazwa_użytkownika>\AppData\Local\Packages\ROBLOXCORPORATION.ROBLOX_<hash>\LocalState\logs\.

  • W systemie macOS sprawdź ~/Library/Logs/Roblox.

Profilowanie serwera

Oprócz profilowania klienta, możesz uchwycić krótkie zrzuty aktywności serwera:

  1. W kliencie desktopowym dołącz do gry, do której masz uprawnienia edycyjne.

  2. Otwórz Konsolę Dewelopera za pomocą CtrlF9 (F9).

  3. W menu rozwijanym wybierz MicroProfiler.

  4. W zakładce Serwer określ liczbę klatek do uchwycenia (maksymalnie 60) oraz liczbę sekund opóźnienia przed rozpoczęciem zrzutu (maksymalnie 4).

  5. Kliknij Rozpocznij nagrywanie serwera.

    Ekran MicroProfilera Konsoli Dewelopera.

    Po kilku sekundach Konsola Dewelopera podaje ścieżkę do pliku, która jest taka sama jak w przypadku standardowego zrzutu.

Funkcje tylko w sieci

MicroProfiler ma dwa interfejsy użytkownika: interfejs internetowy (mobilny i zrzuty) oraz interfejs desktopowy (klient i Studio). Zalecamy używanie interfejsu internetowego, gdy to możliwe. Ogólnie obydwa działają podobnie, ale interfejs internetowy ma kilka dodatkowych funkcji:

  • Użyj menu Rentgen do włączenia lub wyłączenia kodowania kolorami dla alokacji pamięci.

    Widok MicroProfilera w sieci z włączonym trybem rentgenowskim.
    • Jaśniejsze klatki w głównym wykresie słupkowym wskazują na wyższą alokację pamięci.
    • Jaśniejsze części wykresu podglądu i jaśniejsze etykiety na osi czasu wskazują części klatki z wyższą alokacją pamięci.
    • W trybie rentgenowskim naciśnij C, aby pokazać całkowity rozmiar alokacji pamięci, a nie liczbę alokacji.
  • Użyj menu Eksport do wyeksportowania wykresu ognia CPU lub pamięci, wyspecjalizowanej wizualizacji, która agreguje wszystkie stosy wywołań zawartych w zrzucie, zachowując hierarchię rodzic-dziecko i rozmiarując je w oparciu o czas trwania. Wykresy ognia są szczególnie przydatne do identyfikacji zadań, które nie powodują, że przegapisz swoje cele czasu klatki (a zatem są trudne do zauważenia), ale powtarzają się na tyle często, że ich czas przetwarzania staje się istotny.

    Wykres ognia MicroProfilera w interfejsie internetowym.

    Możesz również tworzyć wykresy ognia w Studio, chociaż tylko dla skryptów (czasu wykonania i alokacji pamięci). W porównaniu do wykresów ognia opartych na sieci, te w Studio są od góry do dołu, a nie od dołu do góry i obsługują znacznie dłuższe czasy uchwycenia.

    Wykres ognia MicroProfilera w Studio.
  • Przeciągnij i upuść drugi plik zrzutu do interfejsu internetowego, aby wygenerować wykres ognia różnicowego, co może pomóc w identyfikacji ulepszeń lub regresji wydajności twojej gry w czasie. Kliknij Połącz i porównaj, aby wyeksportować nowy plik HTML.

    Generator wykresu ognia różnicowego MicroProfilera, pokazujący lewą i prawą stronę.

    Wykres ognia różnicowego podkreśla zrzut (lewy lub prawy), który zużywa więcej CPU lub pamięci, a jaśniejsze kolory wskazują większą różnicę.

    Wykres ognia różnicowego MicroProfilera.

Funkcje tylko na komputerze

Na osi czasu desktopowej kliknij lewym przyciskiem myszy etykietę, aby dodać ją do wykresu liniowego w prawym dolnym rogu. Wykres pokazuje czas, jaki zajmuje zadanie w każdej klatce. Korzystając z tego wykresu, możesz testować wydajność tylko określonych zadań w swojej grze. Po zakończeniu kliknij prawym przyciskiem myszy wykres, aby go ukryć.

Wykres pokazujący, jak długo zadania trwają na klatkę.

Ten wykres jest synchronizowany z głównymi słupkami profilera. Obecnie wybrany zakres klatek jest podświetlony na zielono na wykresie. Możesz również kliknąć w dowolnym miejscu na tym wykresie, aby ponownie dostosować widok głównego profilu do tej konkretnej klatki, co jest pomocne przy znajdowaniu szczytów w widoku szczegółowym.

©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.