Das Entwerfen für die Leistung bedeutet, eine Handvoll Best Practices zu folgen, während du dein Erlebnis baust deines Erlebnisses. Im Vergleich zu der Suche und Reparatur von Leistungsproblemen im Laufe des Entwicklungsprozesses kann das Entwerfen für die Leistung früh viel Zeit und Mühe sparen.
Niedrige Endgeräte
Endgeräte, insbesondere mobile Geräte, haben schwere Speicherlimitierungen und sind wegen Fehlern aus dem Speicher (OOM) anfällig:
Wenn Sie unteren端设备 unterstützen mollen, wählen Sie eine Basisset von Geräten mit bestimmten Leistungseigenschaften, testen Sie Ihre Erfahrung auf ihnen im gesamten Entwicklungsprozess und achten Sie auf die Frame Rate und die Memoireutzung. Wenn Sie Problembereiche in Ihrer Erlebnisfinden, verwenden Sie diese Bereiche, um die Grenzen Ihrer Geräte zu identifizieren.
Zum Beispiel könnten Sie ein Erlebnis mit der Render</
Der Gerät-Emulator in Roblox Studio ist nützlich zum Überprüfen von Aspekt-Verhältnis und Steuerung, ist aber nicht genau für die Nutzung von Memória; wenn Sie ein Erlebnis in Studio testen, läuft der Server und der Client, so dass die Memória-Nutzung deutlich höher ist.
Im Allgemeinen kann das Testen auf einer Vielzahl von Geräten helfen, zu überprüfen, dass die Erfahrung Ihren visuellen und Leistungsanforderungen entspricht, bei verschiedenen Grafikqualitäts-Ebenen. Für ein detaillierteres Beispiel dafür, wie Sie Ihre Erfahrung für low-end-Mobile-Geräte optimieren können, sehen Sie Echtzeit-Bauen und Skripten-Optimierung .
Streaming und Teleportation
Instanz- Streaming lässt Roblox dynamisch 3D-Inhalte laden und entladen und ist eine großartige Option für die meisten Erlebnisse, insbesondere größere. Streaming verbessert die Anbindungszeiten, reduziert den Speicherfußabdruck und erhöht die Bildrate. Weitere Informationen finden Sie unter Leistungssteigerung.
Breche große Orte in kleinere Orte ein und verwende Teleportation, um Spieler zwischen ihnen zu bewegen.
Materialien und Duplikation
Eingebaute Materialien verwenden viel weniger Speicher als benutzerdefinierte Texturen, aber sie entsprechen vielleicht nicht deiner künstlerischen Vision. Versuche, Materialien zu verwenden, wenn möglich, um das Budget für die Texturen zu sparen, die für deine Erlebniszentral sind.
Wenn Sie Assets erstellen, verwandeln Sie sie in Pakete . Wenn Sie Pakete in Ihre Workflow integrieren, helfen Sie, das häufige Problem der Duplikate mit verschiedenen IDs zu vermeiden, was die Erfüllungbeeinträchtzen kann.
Wenn Sie Meshes und Texturen hinzufügen, verwenden und wiederverwenden Sie sie, anstatt doppelte Kopien zu importieren. Indem Sie die Größe, die Rotation und die Überlagerung anpassen, können Sie reiche, vielfältige Umgebungen erstellen, die nur wenige Zieh-Aufrufe erfordern. Weitere Informationen finden Sie unter Entfernen Sie doppelte Texturen.
Transparenz
- Vermeiden Sie Transparenzwerte, die nicht 0 (sichtbar) und 1 (unsichtbar) sind. Wenn Sie teilweise Transparenz verwenden, achten Sie besonders darauf, hohe Transparenz über Draw zu vermeiden.
Skripte
Wenn möglich, schreiben Sie Code basierend auf Ereignissen und nicht auf Per-Frame-Berechnungen. Bei 60 Ego-Shooterist das Gesamtbudget für jeden Frame 16,67 Millisekunden (ms). Selbst kleinere Per-Frame-Berechnungen können einen erheblichen Teil dieses Budgets verwenden.
Finden Sie Möglichkeiten, lange Code in verwaltbare Chunks zu unterteilen. Wenn ein Stück Code 100 ms dauert, um ausgeführt zu werden, und Sie es jedes Frame ausführen, kann Ihr Erlebnis nur 10 Ego-Shooterausführen. Wenn Sie sich entscheiden, den Code nur einmal pro Sekunde in einem Erlebnis auszuführen, das normalerweise 60 Ego-Shooterausführt, kommen 59 Ihrer Frames nach
Stattdessen untersuchen Sie, wie Sie den Codesaufbrechen können. Vielleicht können Sie 5 ms Arbeit pro Frame durchführen, verwenden Sie task.wait() und haben Sie die abgeschlossene Berechnung jede 20 Frames während der Aufrechterhaltung von 60 Ego-Shooter. Multithreading , manchmal auch Parallel Luau genannt, kann auch helfen.
Verwenden Sie die Methode RBXScriptConnection:Disconnect(), um Funktionen nicht unnötig am nächsten Mal zu verlassen, wenn ein Ereignis ausgelöst wird.
Rufen Sie die gleiche Methode jedes Mal auf, wenn Sie einen Wert benötigen. Rufen Sie die Methode einmal auf, speichern Sie den Wert und über schreiben Sie ihn dann, wenn nötig.
Lagere nicht alles in ReplicatedStorage. Der Client lädt alles, was in diesem Container ist, auf. Stattdessen verwende ServerStorage für alles, was der Client nicht zugänglich benötigt.