Identyfikacja problemów wydajnościowych

*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.

Identyfikacja problemów wydajnościowych zazwyczaj oznacza skupienie się na jednej z trzech kategorii: liczba klatek na sekundę (obliczenia), pamięć lub czas ładowania.

Roblox posiada szereg narzędzi do identyfikacji problemów wydajnościowych, z których część jest dostępna w kliencie Robloxa (a więc także w Studio), a część dostępna jest tylko w Studio. Podczas gdy możesz bezpośrednio obserwować zachowanie klienta, musisz korzystać z narzędzi do diagnozowania problemów po stronie serwera.

Narzędzia diagnostyczne

NarzędzieOpisLokalizacjaSkrót klawiszowyŚrodowisko
Konsola deweloperaKonsola z komunikatami logów w czasie rzeczywistym, błędami i szczegółowymi informacjami na temat pamięci, sieci i wydajności skryptów. Jest przydatna do przeglądania zużycia pamięci, kluczowych statystyk zdrowia serwera, statystyk wydajności skryptów oraz do uruchamiania klienta lub serwera MicroProfilera.
Studio

W Grze
F9
Testowanie w Studio

Sesje na żywo
MicroProfilerNarzędzie debugowania, które pokazuje, ile czasu obliczeniowego poświęca się na zadania w każdej klatce. Może generować zrzuty do analizy pokazujące precyzyjny podział poszczególnych klatek, co jest pomocne w identyfikacji konkretnego zadania powodującego problemy z wydajnością. Możesz uruchomić profiler na kliencie lub serwerze, w zależności od tego, która strona ma problem.
Studio

W Grze
CtrlAltF6 (F6)
Testowanie w Studio

Sesje na żywo
Analiza scenyZapewnia informacje porównawcze na pierwszy rzut oka o zasobach wykorzystywanych przez sceny klienta i serwera oraz które instancje są odpowiedzialne za to zużycie zasobów.StudioN/A
Testowanie w Studio
Statystyki wydajnościPasek narzędzi z podstawowymi statystykami wydajności, w tym zużyciem pamięci, CPU, GPU, danymi sieciowymi wysłanymi i odebranymi oraz czasem ping.
W Grze
CtrlAltF7 (F7)
Testowanie w Studio

Sesje na żywo
Statystyki debugowaniaNałożenie szczegółowych informacji na temat grafiki, fizyki, ruchu w sieci i FPS.
Studio

W Grze
ShiftCtrlF1 (ShiftF1), ShiftCtrlF2 (ShiftF2), ShiftCtrlF3 (ShiftF3), ShiftCtrlF4 (ShiftF4), ShiftCtrlF5 (ShiftF5)
Testowanie w Studio

Sesje na żywo
Symulacja sieciWłaściwości, które symulują rzeczywiste warunki sieciowe, takie jak opóźnienie, jitter i utrata pakietów, w celu przetestowania połączeń.
Studio
AltS(S)
Testowanie w Studio
Panel wydajnościPanel z łącznymi wykresami zużycia pamięci klienta i serwera, liczby klatek na sekundę klienta, pulsu serwera oraz wskaźników awarii w czasie rzeczywistym. Jest pomocny w analizie wzorców wydajności w czasie. Zobacz monitorowanie wydajności.
Panel twórcy
N/A
Sesje na żywo

Obliczenia serwera

Puls serwera jest ograniczony do 60 FPS dla wszystkich gier, więc niższe wartości mogą wskazywać na problem z wydajnością. Aby sprawdzić puls serwera:

  • Z użyciem Konsoli dewelopera - W zakładce Zadania serwera, rozwiń wiersz Puls i sprawdź wartość Kroki na sek., która reprezentuje puls twojej gry.

  • Z użyciem MicroProfilera, możesz sprawdzić wykres, aby zobaczyć, czy klatka zajmuje więcej niż 16.67 ms.

Innym objawem obniżonego pulsu serwera jest zwiększone opóźnienie (znane jako ping). Im dłużej serwer zajmuje czas na zakończenie obliczeń swoich zadań w każdej klatce, tym dłużej zajmuje mu przetwarzanie danych sieciowych wysłanych i odebranych od klientów. Aby sprawdzić średni ping dla wszystkich graczy połączonych z serwerem, przejdź do zakładki Statystyki serwera w Konsoli dewelopera.

Obliczenia klienta

Domyślny limit liczby klatek na sekundę dla klienta wynosi 60 FPS. Użytkownicy mogą jednak podnieść limit liczby klatek na sekundę do 240 FPS na systemie Windows.

Liczba klatek na sekundę różni się znacznie w zależności od urządzeń. Na przykład, komputer z wyższej półki może być w stanie "przeciążyć" problem obliczeniowy i jedynie doświadczyć niedostrzegalnego spadku liczby klatek na sekundę. Jeśli testujesz na urządzeniach o niższej wydajności, problemy zazwyczaj są poważniejsze i łatwiejsze do zauważenia.

Aby sprawdzić liczbę klatek na sekundę w twojej grze:

  • W kliencie, naciśnij ShiftF5, aby wyświetlić podsumowanie statystyk debugowania.

  • Z menu OknoWydajność w Studio przełącz na Statystyki, aby włączyć statystyki debugowania.

  • Z użyciem MicroProfilera, możesz sprawdzić wykres, aby zobaczyć, czy klatka zajmuje więcej niż 16.67 ms.

Pamięć serwera

Staraj się utrzymać zużycie pamięci serwera poniżej 50%. Całkowita pamięć serwera korzysta z poniższego wzoru:

6.25 GiB + (100 MiB * największa_liczba_połączonych_graczy)

Na przykład serwer z 30 połączonymi graczami ma około 9.18 GiB całkowitej pamięci. Serwery zyskują pamięć, gdy gracze się łączą, ale nie tracą jej, gdy gracze się rozłączają. Jeśli 10 graczy odejdzie, serwer nadal ma 9.18 GiB pamięci zamiast skurczyć się do 8.2 GiB.

Gdy serwery są zamykane (na przykład, gdy są puste lub w ramach procesu aktualizacji), ich zamienniki zaczynają od podstawowej ilości pamięci i zaczynają się zwiększać w miarę łączenia się graczy.

Pamięć klienta

Istnieje kilka sposobów, aby sprawdzić zużycie pamięci w grze:

  1. Otwórz Konsolę dewelopera i przełącz się na zakładkę Pamięć. Ta zakładka daje podział na to, jak pamięć jest przydzielana. Używaj klienta zamiast Studio, aby uzyskać najdokładniejsze dane.
  2. Włącz widok Statystyk wydajności z menu ustawień w kliencie, aby zobaczyć nałożenie z całkowym zużyciem pamięci klienta.

Wysokie zużycie pamięci niekoniecznie oznacza problem, ale niektóre wskazówki sugerujące, że warto to zbadać, to:

  • Znaczący procent awarii klienta pokazujących się w Panelu wydajności, szczególnie nagły wzrost, który zbiegł się z aktualizacją. Oczekiwany jest pewien poziom awarii, ale powinieneś zbadać, czy wskaźniki awarii wzrosły powyżej 2-3%.
  • Awaria występuje podczas testowania na urządzeniu, które chcesz wspierać.

Znacząca część zużycia pamięci gry przez klienta pochodzi z zasobów, takich jak obrazy, meshe i pliki audio, ładowane do pamięci. W Konsoli dewelopera sprawdź następujące etykiety w sekcji PlaceMemory:

  • GraphicsMeshParts - Pamięć graficzna zużywana przez meshe.
  • GraphicsTexture - Pamięć graficzna zużywana przez tekstury.
  • Sounds - Pamięć zużywana przez pliki audio.

Czasy ładowania

Nie ma wbudowanych narzędzi do sprawdzania czasów ładowania, ale ponieważ nie wymagają one precyzji na poziomie milisekund, zazwyczaj wystarczy zegar stopera, aby zrozumieć swój aktualny poziom odniesienia i sprawdzić, czy dokonano znacznej poprawy. Możesz użyć skryptu klienta w ReplicatedFirst, aby uzyskać pewne pojęcie o tym, jak twoje zmiany wpływają na czasy ładowania, ale ten skrypt nie zapewnia pełnego pomiaru end-to-end:


local startTime = os.clock()
game.Loaded:Connect(function()
local loadTime = os.clock() - startTime
local roundedLoadTime = math.round(loadTime * 10000) / 10000 -- cztery miejsca po przecinku
print("Gra załadowana w " .. roundedLoadTime .. " sekundach.")
print("Liczba załadowanych instancji: " .. #workspace:GetDescendants())
end)

Aby uzyskać dodatkowe informacje, włącz Rozbicie rozmiaru dołączenia z zakładki Sieć w Ustawieniach Studio, aby wydrukować 20 największych instancji według rozmiaru i rozbicie procentowe według typu instancji, gdy rozpoczynasz grę w Studio.

Ping

Dwie podstawowe miary pingu (opóźnienia) to ping sieciowy i ping danych.

Ping sieciowy to czas podróży tam i z powrotem mierzony od wysłania pakietu danych sieciowych przez klienta do momentu, gdy otrzyma on echo odpowiedzi serwera. Jest to podobne do tego, co byłoby zgłaszane jako time przez ogólne narzędzie ping.

Ping sieciowy jest widoczny w pasku Statystyk wydajności. Jest głównie dotknięty długością ścieżki sieciowej między klientem a serwerem i jest poza twoją kontrolą. Możesz jednak symulować ping i inne warunki sieciowe używając symulacji sieci podczas testowania w Studio.

Ping danych to czas podróży tam i z powrotem mierzony od momentu, gdy klient wysyła dane niezawodnie przez system replikacji do momentu, gdy otrzymuje echo odpowiedzi z systemu replikacji serwera. Zawiera czas spędzony zarówno w kolejkach replikacji klienta, jak i serwera, a także retransmisje przypominające TCP utraconych lub uszkodzonych pakietów.

Ping danych jest podobny do wysłania niezawodnego zdarzenia zdalnego z klienta, otrzymania go na serwerze, a następnie wysłania niezawodnego zdarzenia zdalnego z serwera do klienta w odpowiedzi. Ponieważ ping danych obejmuje również czas spędzony w sieci między klientem a serwerem, jest większy lub równy pingowi sieciowemu.

Średni ping danych dla wszystkich graczy połączonych z serwerem jest widoczny w zakładce Statystyki serwera w Konsoli dewelopera. Ping danych dla konkretnego klienta jest widoczny przy użyciu ShiftF3, aby wyświetlić statystyki debugowania sieci.

Ping danych jest dotknięty zarówno długością ścieżki sieciowej, jak i opóźnieniami kolejek replikacji. Gdy serwer generuje dane replikacji szybciej, niż sieć jest w stanie je wysłać (lub szybciej, niż klient jest w stanie je przetworzyć), dane muszą czekać w kolejkach replikacyjnych. Pewna różnica między pingiem danych a pingiem sieciowym jest normalna z powodu zarówno retransmisji sieciowych, jak i sposobu przetwarzania danych sieciowych przez aplikację Roblox. Jeśli jednak ping danych jest znacznie wyższy niż ping sieciowy, użyj MicroProfilera, aby zobaczyć ruch sieciowy. W celu uzyskania sugestii dotyczących optymalizacji, zobacz sieci i replikację.

©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.