Der Roblox MicroProfiler: Performance-Probleme und Lag effektiv analysieren

Melden

Der MicroProfiler ist eines der mächtigsten, aber oft missverstandenen Werkzeuge auf Roblox. Er hilft dir dabei, exakt herauszufinden, warum dein Spiel ruckelt, Frames verliert oder einfriert. Während die normale Performance-Anzeige (Shift + F5) dir nur sagt, dass die Framerate sinkt, visualisiert der MicroProfiler, wer die Schuld daran trägt (z. B. Skripte, Physik oder Rendering).

In diesem Tutorial lernst du Schritt für Schritt, wie du den MicroProfiler aktivierst, liest und für deine Spieloptimierung nutzt.


1. Den MicroProfiler öffnen und schließen

Du kannst den Profiler sowohl im Roblox Studio als auch im regulären Roblox-Client verwenden.

  • Tastenkombination:
    • Windows: Strg + F6
    • Mac: Cmd + F6
  • Alternativ über das Menü:
    • Drücke Esc > Gehe auf Einstellungen (Settings) > Scrolle nach unten zu MicroProfiler und schalte ihn auf Ein (On).

Tipp: Mit Strg + F6 kannst du zwischen einer kompakten Balkenanzeige am oberen Bildschirmrand und dem vollständigen Interface umschalten.


2. Die Benutzeroberfläche verstehen

Sobald der Profiler aktiv ist, siehst du am oberen Bildschirmrand eine Reihe horizontaler Balken, die von rechts nach links wandern.

  • Jeder Balken entspricht einem Frame (Einzelbild):
    • Für flüssige 60 FPS muss ein Frame in unter 16,6 Millisekunden (ms) berechnet werden.
    • Für 120 FPS muss er in unter 8,3 ms berechnet werden.
  • Die Budget-Linie (Orange/Rot):
    • Wenn die Balken unter dieser Linie bleiben, läuft das Spiel flüssig.
    • Ragt ein Balken deutlich nach oben heraus (Spike), gab es in diesem Frame einen spürbaren Ruckler.

3. Einen Frame einfrieren und pausieren

Um die Ursache eines Lag-Spikes zu analysieren, musst du das Geschehen anhalten:

  1. Drücke Strg + P (Mac: Cmd + P), wenn der Ruckler auftritt.
  2. Der Profiler pausiert und zeigt dir einen detaillierten Zeitstrahl (Timeline) des aktuellen Geschehens.
  3. Navigation im pausierten Profiler:
    • Mausrad: Hinein- und Herauszoomen.
    • Linksklick + Ziehen: Entlang der Zeitachse nach links oder rechts scrollen.
    • Klick auf einen Block: Zeigt unten links Details wie Name und exakte Dauer (in ms) des Prozesses an.

4. Die Daten interpretieren: Wer verursacht den Lag?

Die detaillierte Ansicht ist hierarchisch aufgebaut (wie ein Stammbaum von oben nach unten). Ein übergeordneter Block teilt sich in viele kleinere Unterprozesse auf. Suche immer nach den breitesten Blöcken – sie verbrauchen die meiste Zeit.

Hier sind die häufigsten Kategorien:

A. Skript-Lag (Script / Heartbeat / Stepped)

  • Symptom: Breite Blöcke unter Prozessen wie RunService.Heartbeat, Stepped oder RenderStepped.
  • Ursache: Deine Luau-Skripte verbrauchen zu viel Rechenzeit pro Frame (z. B. schwere Berechnungen in einer while true do-Schleife ohne task.wait(), ineffiziente Algorithmen).

B. Physik-Lag (worldStep / Physics)

  • Symptom: Große Abschnitte unter dem Label worldStep.
  • Ursache: Zu viele ungesicherte (unanchored) Parts, komplexe Kollisionsprüfungen (CanCollide = true), MeshParts mit CollisionFidelity = Default statt Box oder Hull.

C. Rendering-Lag (Render / Scene / UpdateLighting)

  • Symptom: Breite Blöcke unter Rendering-Threads.
  • Ursache: Zu hohe Mesh-Polygon-Dichte, zu viele Schattenquellen (CastShadow), übermäßiger Einsatz transparenter Objekte oder zu viele komplexe Partikeleffekte.

5. Profi-Tipp: Eigenen Code markieren (debug.profilebegin)

Manchmal siehst du im MicroProfiler nur, dass irgendein Skript laggt, weißt aber nicht, welches. Hierfür kannst du benutzerdefinierte Labels in deinen Code einfügen:

-- Beginn der Messung
debug.profilebegin("MeinSchwererAlgorithmus")

-- Hier steht der Code, den du testen möchtest:
for i = 1, 100000 do
    local test = math.sqrt(i)
end

-- Ende der Messung
debug.profileend()

Wenn du den MicroProfiler jetzt pausierst (Strg + P) und heranzoomst, siehst du einen Block mit dem Namen "MeinSchwererAlgorithmus". So kannst du exakt feststellen, wie viele Millisekunden dieser spezifische Codeblock verbraucht hat.


6. Client- vs. Server-Profilierung

Standardmäßig zeigt der MicroProfiler nur an, was auf dem Client (auf deinem Gerät) passiert. Wenn der Server laggt, siehst du das dort nicht direkt.

  • Server-Dump erstellen:
    1. Öffne das Menü des MicroProfilers (im erweiterten Modus).
    2. Klicke oben auf Dump > Server > 1 Frame (oder mehrere).
    3. Roblox speichert eine HTML-Datei auf deinem PC (unter %localappdata%\Roblox\logs).
    4. Öffne diese HTML-Datei in deinem Browser, um zu sehen, was der Roblox-Server in diesem Moment berechnet hat.

Zusammenfassung zur Fehlerbehebung

  1. Strg + F6 drücken, um das Tool zu öffnen.
  2. Warten, bis ein Lag-Spike auftritt.
  3. Schnell Strg + P drücken, um das Bild einzufrieren.
  4. Den höchsten/breitesten Block suchen:
    • Breites worldStep? Physik und Kollisionen optimieren.
    • Breites Render? Meshes, Schatten und Lichter reduzieren.
    • Breites Script? Eigene Schleifen und Berechnungen überarbeiten.
0