Das Identifizieren von Leistungsproblemen bedeutet im Allgemeinen, sich auf eine von drei Kategorien zu konzentrieren: Bildrate (Berechnung), Speicher oder Ladezeit.
Roblox bietet eine Vielzahl von Tools zur Identifizierung von Leistungsproblemen, von denen einige im Roblox-Client (und damit im Studio) verfügbar sind, während andere nur im Studio verfügbar sind. Während Sie das Verhalten des Clients direkt beobachten können, müssen Sie Tools verwenden, um Serverprobleme zu diagnostizieren.
Diagnosetools
| Tool | Beschreibung | Standort | Tastenkombination | Umgebung |
|---|---|---|---|---|
| Entwicklerkonsole | Eine Konsole mit Echtzeit-Protokollnachrichten, Fehlern und detaillierten Informationen zu Speicher, Netzwerk und Skriptleistung. Sie ist nützlich, um den Speicherverbrauch, wichtige Servergesundheitsstatistiken, Skriptleistungsstatistiken einzusehen und den Mikroprofiler des Clients oder Servers zu starten. | Studio Im Spiel | F9 | Studio-Testing Live-Sitzungen |
| Mikroprofiler | Ein Debugging-Tool, das aufschlüsselt, wie viel Rechenzeit für Aufgaben jedes Frame aufgewendet wird. Es kann Dumps für Analysen erstellen, die eine präzise Aufschlüsselung einzelner Frames zeigen, was es hilfreich macht, die spezifische Aufgabe zu identifizieren, die Leistungsprobleme verursacht. Sie können den Profiler entweder auf dem Client oder dem Server ausführen, je nachdem, wo das Problem liegt. | Studio Im Spiel | StrgAltF6 (⌘⌥F6) | Studio-Testing Live-Sitzungen |
| Szenenanalyse | Stellt auf einen Blick vergleichende Informationen über die Ressourcen bereit, die Ihre Client- und Server-Szenen verwenden, und welche Instanzen für die Ressourcennutzung verantwortlich sind. | Studio | N/A | Studio-Testing |
| Leistungsstatistiken | Eine Symbolleiste mit grundlegenden Leistungsstatistiken, einschließlich Speicherverbrauch, CPU, GPU, gesendeten und empfangenen Netzwerkdaten sowie Ping-Zeit. | Im Spiel | StrgAltF7 (⌘⌥F7) | Studio-Testing Live-Sitzungen |
| Debug-Statistiken | Überlagerungen mit detaillierten Informationen über Grafik, Physik, Netzwerkverkehr und FPS. | Studio Im Spiel | UmschaltStrgF1 (Umschalt⌘F1), UmschaltStrgF2 (Umschalt⌘F2), UmschaltStrgF3 (Umschalt⌘F3), UmschaltStrgF4 (Umschalt⌘F4), UmschaltStrgF5 (Umschalt⌘F5) | Studio-Testing Live-Sitzungen |
| Netzwerksimulation | Eigenschaften, die reale Netzwerkbedingungen wie Latenz, Jitter und Paketverlust simulieren, um Verbindungen zu testen. | Studio | AltS(⌥S) | Studio-Testing |
| Leistungs-Dashboard | Ein Dashboard mit aggregierten Diagrammen für den Speicherverbrauch des Clients und Servers, die Bildrate des Clients, die Herzschlagrate des Servers und die Absturzraten in Echtzeit. Es ist hilfreich, um Leistungsmerkmale über die Zeit zu analysieren. Siehe Leistung überwachen. | Creator Dashboard | N/A | Live-Sitzungen |
Serverberechnung
Der Server-Herzschlag ist für alle Spiele auf 60 FPS begrenzt, sodass niedrigere Werte auf ein Leistungsproblem hindeuten könnten. Um den Server-Herzschlag zu überprüfen:
Mit der Entwicklerkonsole - Gehen Sie zum Tab Server Jobs, erweitern Sie die Zeile Heartbeat und überprüfen Sie den Wert Steps Per Sec, der den Herzschlag Ihres Spiels darstellt.
Mit dem Mikroprofiler können Sie das Diagramm überprüfen, um zu sehen, ob das Frame länger als 16,67 ms benötigt.
Ein weiteres Symptom eines verschlechterten Server-Herzschlags ist eine erhöhte Latenz (allgemein als Ping bekannt). Je länger der Server für die Berechnung seiner Aufgaben jedes Frame benötigt, desto länger dauert es, Netzwerkdaten von und zu Clients zu verarbeiten. Um den durchschnittlichen Ping für alle Spieler, die mit einem Server verbunden sind, zu überprüfen, gehen Sie zum Tab Server Stats in der Entwicklerkonsole.
Client-Berechnung
Die standardmäßige Bildrate des Clients ist auf 60 FPS begrenzt. Benutzer können jedoch ihre Bildrate auf bis zu 240 FPS unter Windows erhöhen.
Die Bildrate variiert stark zwischen den Geräten. Ein leistungsstarker PC könnte beispielsweise in der Lage sein, ein Rechenproblem "mit Gewalt" zu lösen und dabei nur eine unmerkliche Abnahme der Bildrate zu erfahren. Wenn Sie auf Geräten mit niedrigerer Leistung testen, sind die Probleme tendenziell schwerwiegender und daher leichter zu bemerken.
Um die Bildrate Ihres Spiels zu überprüfen:
Drücken Sie im Client UmschaltF5, um die Zusammenfassung der Debug-Statistiken anzuzeigen.
Aktivieren Sie im Menü Fenster ⟩ Leistung die Option Stats, um die Debug-Statistiken zu aktivieren.
Mit dem Mikroprofiler können Sie das Diagramm überprüfen, um zu sehen, ob das Frame länger als 16,67 ms benötigt.
Serverspeicher
Versuchen Sie, die Speichernutzung des Servers unter 50 % zu halten. Der gesamte Serverspeicher verwendet die folgende Formel:
6,25 GiB + (100 MiB * größtanzahl_von_verbundenen_spielern)
Zum Beispiel hat ein Server mit 30 verbundenen Spielern ungefähr 9,18 GiB Gesamtspeicher. Server gewinnen Speicher, wenn Spieler sich verbinden, verlieren ihn jedoch nicht, wenn Spieler sich trennen. Wenn 10 Spieler das Spiel verlassen, hat der Server immer noch 9,18 GiB Speicher, anstatt auf 8,2 GiB zu schrumpfen.
Wenn Server heruntergefahren werden (zum Beispiel, wenn sie leer sind oder im Rahmen des Aktualisierungsprozesses), beginnen ihre Ersetzungen mit der Basismenge an Speicher und beginnen, sich zu skalieren, wenn Spieler sich verbinden.
Client-Speicher
Es gibt mehrere Möglichkeiten, die Speichernutzung für ein Spiel zu überprüfen:
- Öffnen Sie die Entwicklerkonsole und wechseln Sie zum Tab Speicher. Dieser Tab gibt eine Aufschlüsselung, wie Speicher zugewiesen wird. Verwenden Sie den Client statt des Studios, um die genauesten Ausgaben zu erhalten.
- Aktivieren Sie im Einstellungsmenü des Clients die Ansicht Leistungsstatistiken, um eine Überlagerung mit der gesamten Speichernutzung des Clients anzuzeigen.
Eine hohe Speichernutzung ist nicht unbedingt ein Hinweis auf ein Problem, aber einige Anzeichen, die darauf hindeuten, dass Sie möglicherweise näher untersuchen sollten, sind:
- Ein erheblicher Prozentsatz von Abstürzen des Clients, die im Leistungs-Dashboard angezeigt werden, insbesondere ein plötzlicher Anstieg, der mit einem Update zusammenfällt. Eine gewisse Anzahl von Abstürzen ist zu erwarten, aber Sie sollten untersuchen, ob Ihre Absturzraten über 2-3 % steigen.
- Ein Absturz tritt auf, während Sie auf einem Gerät testen, das Sie unterstützen möchten.
Ein erheblicher Anteil des Speicherverbrauchs eines Spiels auf dem Client stammt von Assets wie Bildern, Modellen und Audiodateien, die in den Speicher geladen werden. Überprüfen Sie in der Entwicklerkonsole die folgenden Bezeichnungen unter PlaceMemory:
- GraphicsMeshParts - Grafikspeicher, der durch Modelle verbraucht wird.
- GraphicsTexture - Grafikspeicher, der durch Texturen verbraucht wird.
- Sounds - Speicher, der durch Audiodateien verbraucht wird.
Ladezeiten
Es gibt keine integrierten Tools zur Überprüfung von Ladezeiten, aber da sie keine Millisekunden-Präzision erfordern, ist eine Stoppuhr in der Regel alles, was Sie benötigen, um Ihren aktuellen Maßstab zu verstehen und zu überprüfen, ob Sie eine wesentliche Verbesserung erzielt haben. Sie können ein Clientskript in ReplicatedFirst verwenden, um einen Eindruck davon zu bekommen, wie sich Ihre Änderungen auf die Ladezeiten auswirken, aber dieses Skript bietet keine vollständige, durchgehende Messung:
local startTime = os.clock()
game.Loaded:Connect(function()
local loadTime = os.clock() - startTime
local roundedLoadTime = math.round(loadTime * 10000) / 10000 -- vier Dezimalstellen
print("Spiel geladen in " .. roundedLoadTime .. " Sekunden.")
print("Anzahl der geladenen Instanzen: " .. #workspace:GetDescendants())
end)
Für weitere Einblicke aktivieren Sie Print Join Size Breakdown im Tab Netzwerk der Studio-Einstellungen, um die 20 größten Instanzen nach Größe und eine prozentuale Aufschlüsselung nach Instanztyp auszudrucken, wenn Sie das Spiel im Studio starten.
Ping
Die zwei primären Messungen des Pings (Latenz) sind Netzwerk-Ping und Daten-Ping.
Netzwerk-Ping ist die Zeit für die Hin- und Rückfahrt, die gemessen wird, wenn der Client ein Netzwerkdatenpaket sendet, bis er die Echoantwort des Servers erhält. Es ist ähnlich dem, was von der allgemeinen Ping-Netzwerkanwendung als time gemeldet wird.
Netzwerk-Ping ist in der Leiste für Leistungsstatistiken sichtbar. Er wird hauptsächlich von der Länge des Netzwerkpfads zwischen Client und Server beeinflusst und liegt außerhalb Ihrer Kontrolle. Sie können jedoch den Ping und andere Netzwerkbedingungen mithilfe von Netzwerksimulation während des Spieltests im Studio simulieren.
Daten-Ping ist die Zeit für die Hin- und Rückfahrt, die gemessen wird, wenn der Client Daten zuverlässig durch das Replikationssystem sendet, bis er eine Echoantwort vom Replikationssystem des Servers erhält. Er enthält die Zeit, die sowohl in den Replikationswarteschlangen des Clients als auch des Servers benötigt wird, sowie TCP-ähnliche Wiederübertragungen von verlorenen oder beschädigten Paketen.
Daten-Ping ist ähnlich dem Senden eines zuverlässigen Remote-Events vom Client, das auf dem Server empfangen wird, und dann das Senden eines zuverlässigen Remote-Events vom Server zum Client als Antwort. Da Daten-Ping auch die Zeit umfasst, die im Netzwerk zwischen Client und Server verbracht wird, ist er größer oder gleich dem Netzwerk-Ping.
Der durchschnittliche Daten-Ping für alle Spieler, die mit einem Server verbunden sind, ist im Tab Server Stats der Entwicklerkonsole sichtbar. Der Daten-Ping für einen einzelnen Client ist sichtbar, indem Sie ShiftF3 drücken, um die Netzwerk-Debug-Statistiken anzuzeigen.
Daten-Ping wird sowohl durch den Netzwerkpfad als auch durch Verzögerungen in der Replikationswarteschlange beeinflusst. Wenn der Server Replikationsdaten schneller generiert, als das Netzwerk sie senden kann (oder schneller, als der Client sie verarbeiten kann), muss das Daten in den Replikationswarteschlangen warten. Ein gewisser Unterschied zwischen Daten-Ping und Netzwerk-Ping ist aufgrund der Netzwerk-Wiederübertragungen und der Art und Weise, wie Netzwerkdaten von der Roblox-App verarbeitet werden, normal. Wenn jedoch der Daten-Ping erheblich höher ist als der Netzwerk-Ping, verwenden Sie den Mikroprofiler, um den Netzwerkverkehr einzusehen. Für Optimierungsvorschläge siehe Netzwerk und Replikation.