Entwerfen für Leistung

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Das Entwerfen für Leistung bedeutet, einer Handvoll Best Practices zu folgen , wenn du dein Erlebnis baust. Im Vergleich zu der Suche und Behebung von Leistungsproblemen später im Entwicklungsprozess kann das frühe Design für Leistung viel Zeit und Mühe sparen.

Geräte der unteren Ebene

Geräte der unteren Preisklasse, insbesondere mobile Geräte, haben schwere Speicherbeschränkungen und sind anfällig für Abstürze aufgrund von Speicherfehlern (OOM):

  • Wenn du Geräte der unteren Ebene unterstützen möchtest, wähle mindestens ein "Basisgerät", teste deine Erfahrung darauf während des gesamten Entwicklungsprozesses und achte genau auf die Framerate und den Speicherverbrauch.Wenn du Problembereiche in deiner Erfahrung findest, nutze diese Bereiche, um die Grenzen deines Geräts zu identifizieren.

    Zum Beispiel könnten Sie ein Erlebnis mit dem Render ( ShiftF2 ) und Zusammenfassung ( ShiftF2 ) debug-Statistiken aktiviert testen.Wenn die Bildrate in einem besonders überladenen Bereich beginnt zu sinken, könnten Sie die Zeichnen (Szene) -Zahlen untersuchen und feststellen, dass Sie unter 1.000 Ziehaufrufen und 1.000.000 Dreieckszahlen bleiben müssen, damit die Erfahrung auf Ihrem Basisgerät gut funktioniert.

    Oder du könntest die Entwickler-Konsole ( F9 ) untersuchen und feststellen, dass der Speicherverbrauch ein bisschen hoch ist, es sei denn, du aktivierst Streaming.Ein klares Verständnis der Gerätegrenzen kann dir helfen, unter ihnen zu bleiben, während du dein Erlebnis weiter aufbaust.

  • Der Geräteemulator in Roblox Studio ist nützlich für die Überprüfung der Aspektverhältnis und der Steuerelemente, ist aber nicht genau für den Speicherverbrauch; wenn du ein Erlebnis in Studio testest, läuft der Server und der Client, so dass der Speicherverbrauch signifikant höher ist.

Im Allgemeinen kann das Testen auf einer Vielzahl von Geräten helfen, zu überprüfen, dass das Erlebnis Ihren visuellen und leistungstechnischen Erwartungen auf verschiedenen Grafikqualitätsstufen entspricht.Für ein viel detaillierteres Beispiel, wie du vielleicht darüber nachdenken würdest, dein Erlebnis für Low-End-Mobilgeräte zu optimieren, siehe Echte Welt-Building und Skript-Optimierung.

Streaming und Teleportation

  • Instanzstreaming lässt Roblox dynamisch 3D-Inhalte laden und entladen und ist eine großartige Option für die meisten Orte, insbesondere größere.Streaming verbessert die Verbindungszeiten, reduziert den Speicherverbrauch und erhöht die Framerate.Für weitere Informationen, siehe Verbessere die Leistung.

  • Betrachte es, große Orte in kleinere zu zerlegen und Teleportation zu verwenden, um Spieler zwischen ihnen zu bewegen.Dieser Ansatz kann die anfänglichen Join-Zeiten reduzieren, verhängt aber zusätzliche Join-Zeiten, wenn Spieler von einem Ort zum anderen teleportieren.Die Vorteile der Speicherverwendung variieren je nach Größe des Ortes und ob du Streaming aktiviert hast.

    Selbst wenn du die Leistungserwägungen ignorierst, könntest du feststellen, dass die Anzahl von Orten den Entwicklungsprozess vereinfacht, insbesondere, wenn du regelmäßig neue Inhalte zu deiner Erfahrung hinzufügst oder Teil eines größeren Teams bist.

Materialien und Duplikation

  • Eingebaute Materialien verwenden weit weniger Speicher als benutzerdefinierte Texturen, aber sie könnten Ihrer künstlerischen Vision nicht entsprechen.Versuche, Materialien so oft wie möglich zu verwenden, um das Speicherbudget für die Texturen zu konservieren, die für deine Erfahrung zentral sind.

  • Wenn du Assets erstellst, konvertiere sie in Pakete.Pakete zu Teil deines Workflows zu machen, hilft, das häufige Problem der doppelten Assets mit unterschiedlichen IDs zu vermeiden, die die Leistung beeinträchtigen können.

  • Wenn du Meshes und Texturen hinzufügst, verwende und wiederverwende sie, anstatt doppelte Kopien zu importieren.Durch Größenänderung, Drehung und Überlappung können Sie reiche, unterschiedliche Umgebungen erstellen, die sehr wenige Zeichrufe erfordern.Für weitere Informationen, siehe Entferne doppelte Texturen.

Transparenz

Skripte

  • Wann immer möglich, schreiben Sie Ereignis-basierten Code anstelle von Per-Frame-Berechnungen.Bei 60 FPS beträgt das Gesamtbudget für jeden Frame 16,67 Millisekunden (ms).Sogar scheinbar unbedeutende Berechnungen pro Frame können einen erheblichen Teil dieses Budgets verwenden.

  • Finde Wege, um langlebigen Code in verwaltbare Schnüppel zu zerlegen.Wenn ein Stück Code 100 ms zum Ausführen braucht und du es jeden Frame ausführst, kann deine Erfahrung nur mit 10 FPS laufen.Wenn du dich dazu entscheidest, den Code nur einmal pro Sekunde in einem Erlebnis auszuführen, das sonst mit 60 FPS läuft, erreichen 59 deiner Frames nach 16,67 ms ...und dann eine nach 100 ms, die zu einem störenden Stottern führt.

    Stattdessen untersuche, wie du den Code aufbrechen kannst.Vielleicht können Sie 5 ms Arbeit pro Frame ausführen, verwenden task.wait() und haben die abgeschlossene Berechnung alle 20 Frames, während Sie immer noch 60 FPS beibehalten.Multithreading, manchmal als Parallel-Luau bezeichnet, kann auch helfen.

  • Verwende die RBXScriptConnection:Disconnect()-Methode, um zu verhindern, dass Funktionen beim nächsten Feuern eines Ereignisses unnötig aufgerufen werden.

  • Rufe nicht jedes Mal die gleiche Methode auf, wenn du einen Wert benötigst. Rufe die Methode einmal auf, speichere den Wert und überschreib sie dann bei Bedarf später.

  • Lagere nicht alles in ReplicatedStorage.Der Client lädt alles ein, was in diesem Container ist.Verwende stattdessen ServerStorage für alles, worauf der Client keinen Zugriff benötigt.