Mendesain untuk kinerja berarti mengikuti segelintir praktik terbaik saat Anda membangun pengalaman Anda .Dibandingkan dengan menemukan dan memperbaiki masalah kinerja nanti dalam proses pengembangan, merancang untuk kinerja lebih awal dapat menghemat banyak waktu dan usaha.
Perangkat kelas rendah
Perangkat kelas bawah, terutama perangkat seluler, memiliki batasan memori yang parah dan rentan terhadap kecelakaan karena kehabisan memori (OOM):
Jika Anda ingin mendukung perangkat kelas bawah, pilih setidaknya satu perangkat "baseline", uji pengalaman Anda di atasnya selama proses pengembangan, dan beri perhatian khusus pada tingkat frame dan penggunaan memori.Saat Anda menemukan area masalah dalam pengalaman Anda, gunakan area tersebut untuk mengidentifikasi batas perangkat Anda.
Sebagai contoh, Anda mungkin menguji pengalaman dengan Render ( ShiftF2 ) dan Ringkasan ( ShiftF2 ) statistik debug diaktifkan.Jika tingkat bingkai mulai turun di area yang sangat berantakan, Anda bisa memeriksa angka Draw (scene) dan menentukan bahwa Anda perlu tetap di bawah 1.000 panggilan serah dan 1.000.000 segi untuk pengalaman berjalan dengan baik di perangkat dasar Anda.
Atau Anda bisa memeriksa Konsol Pengembang ( ) dan perhatikan bahwa penggunaan memori agak tinggi kecuali Anda mengaktifkan streaming .Memiliki pemahaman yang jelas tentang batas perangkat dapat membantu Anda tetap di bawahnya saat Anda terus membangun pengalaman Anda.
Emulator perangkat di Roblox Studio berguna untuk memeriksa rasio aspek dan kontrol, tetapi tidak akurat untuk penggunaan memori; ketika Anda menguji pengalaman di Studio, ia menjalankan server dan klien, sehingga penggunaan memori meningkat secara signifikan.
Secara umum, pengujian pada berbagai perangkat dapat membantu Anda memeriksa apakah pengalaman sesuai dengan harapan visual dan kinerja Anda di berbagai tingkat kualitas grafis.Untuk contoh yang jauh lebih terperinci tentang bagaimana Anda mungkin berpikir tentang mengoptimalkan pengalaman Anda untuk perangkat seluler kelas rendah, lihat Optimisasi Pembangunan dan Skrip Dunia Nyata.
Streaming dan teleportasi
Streaming instansi memungkinkan Roblox secara dinamis memuat dan melepaskan konten 3D dan merupakan pilihan bagus untuk sebagian besar tempat, terutama yang lebih besar.Streaming meningkatkan waktu bergabung, mengurangi jejak memori, dan meningkatkan tingkat frame.Untuk informasi lebih lanjut, lihat Tingkatkan kinerja.
Pertimbangkan untuk memecah tempat besar menjadi lebih mudah diatur dan menggunakan teleportasi untuk memindahkan pemain di antara mereka.Pendekatan ini dapat mengurangi awal waktu bergabung, tetapi menetapkan waktu bergabung tambahan saat pemain berteleportasi dari tempat ke tempat.Manfaat penggunaan memori bervariasi tergantung pada ukuran tempat dan apakah Anda telah mengaktifkan streaming.
Bahkan mengabaikan pertimbangan kinerja, Anda mungkin menemukan bahwa memiliki beberapa tempat mempercepat proses pengembangan, terutama jika Anda secara teratur menambahkan konten baru ke pengalaman Anda atau merupakan bagian dari tim yang lebih besar.
Bahan dan duplikasi
Bahan bawaan menggunakan memori jauh lebih sedikit daripada teksur khusus, tetapi mungkin tidak cocok dengan visi artistik Anda.Cobalah menggunakan materi kapan pun dimungkinkan untuk menghemat anggaran memori untuk teksur yang menjadi inti pengalaman Anda.
Saat Anda membuat aset, konversi ke paket.Membuat paket menjadi bagian dari alur kerja Anda membantu menghindari masalah umum duplikasi aset dengan berbagai ID, yang dapat memengaruhi kinerja.
Saat Anda menambahkan meshes dan tekstur, gunakan dan gunakan kembali mereka daripada mengimpor salinan duplikat.Dengan menyesuaikan ukuran, memutar, dan tumpang tindih, Anda dapat membuat lingkungan kaya dan beragam yang membutuhkan sangat sedikit panggilan menggambar.Untuk informasi lebih lanjut, lihat Hapus tekstur duplikat.
Transparansi
- Hindari nilai transparansi selain 0 (terlihat) dan 1 (tidak terlihat).Ketika Anda menggunakan transparansi parsial, berhati-hatilah khusus untuk menghindari penarikan transparansi tinggi .
Pemograman
Setiap kali memungkinkan, tulis kode berbasis acara daripada perhitungan per-frame.Pada 60 FPS, anggaran total untuk setiap frame adalah 16,67 milidetik (ms).Bahkan perhitungan per-frame yang tampaknya kecil dapat menggunakan bagian yang signifikan dari anggaran itu.
Temukan cara untuk memecahkan kode berjalan lama menjadi potongan manajemen.Jika bagian kode membutuhkan waktu 100 ms untuk dieksekusi dan Anda menjalankannya setiap frame, pengalaman Anda hanya dapat berjalan pada 10 FPS.Jika Anda memutuskan untuk hanya menjalankan kode sekali per detik dalam pengalaman yang sebaliknya berjalan pada 60 FPS, 59 frame Anda tiba setelah 16,67 ms...dan kemudian satu setelah 100 ms, yang menyebabkan ketidakstabilan gerakan.
Sebagai gantinya, cari tahu bagaimana Anda bisa memecahkan kode.Mungkin Anda dapat melakukan 5 ms pekerjaan per frame, gunakan task.wait() , dan memiliki perhitungan selesai setiap 20 frame sementara masih mempertahankan 60 FPS.Multithreading , terkadang disebut Parallel Luau, juga dapat membantu.
Gunakan metode RBXScriptConnection:Disconnect() untuk menghentikan fungsi agar tidak dipanggil secara tidak perlu saat event berikutnya terbakar.
Jangan panggil metode yang sama setiap kali Anda membutuhkan nilai. Panggil metode sekali, simpan nilainya, lalu tulis ulang nanti sesuai kebutuhan.
Jangan menyimpan semuanya di ReplicatedStorage .Klien memuat semua yang ada di kontainer ini.Sebagai gantinya, gunakan ServerStorage untuk apa pun yang klien tidak membutuhkan akses.