Mendesain untuk kinerja berarti mengikuti beberapa praktik terbaik saat Anda membangun pengalaman Anda. Dibandingkan dengan menemukan dan memperbaiki masalah kinerja nanti dalam proses pengembangan, mendesain untuk kinerja lebih awal dapat menghemat banyak waktu dan upaya.
Perangkat Low-End
Perangkat low-end, khususnya perangkat mobile, memiliki batasan memori yang serius dan mungkin terjadi kesalahan karena kesalahan memori (Error OOM) :
Jika Anda ingin mendukung perangkat端的低端, pilih set perangkat dasar dengan beberapa karakteristik kinerja, tes pengalaman Anda di atasnya selama proses pengembangan, dan berhati-hatilah dengan tingkat frame dan penggunaan memori. Saat Anda menemukan area masalah dalam pengalaman Anda, gunakan area tersebut untuk mengidentifikasi batas perangkat Anda.
Misalnya, Anda dapat menguji pengalaman d
Emulator perangkat di Roblox Studio berguna untuk memeriksa aspek rasio dan kendali, tetapi tidak akurat untuk penggunaan memori; ketika Anda menguji pengalaman di Studio, itu mengeksekusan server dan klien, jadi penggunaan memori lebih tinggi.
Lebih umumnya, menguji di berbagai perangkat dapat membantu Anda memeriksa bahwa pengalaman mencocokkan harapan visual dan performa Anda di berbagai tingkat kualitas grafis. Untuk contoh yang jauh lebih rinci tentang cara Anda mungkin berpikir tentang optimasi pengalaman Anda untuk perangkat low-end, lihat Real World Building and Scripting Optimization .
Pemotongan dan Teleportasi
Instalasi streaming memungkinkan Roblox untuk memuat dan menghapus 3D konten dan merupakan pilihan yang bagus untuk kebanyakan pengalaman, terutama yang lebih besar. Streaming meningkatkan waktu bergabung, mengurangi penggunaan memori, dan meningkatkan tingkat frame. Untuk informasi lebih lanjut, lihat Meningkatkan Kinerja.
Membagi tempat-tempat besar menjadi lebih mudah diatur dan menggunakan teleportasi untuk mengirim pemain di antara mereka.
Materi dan Duplikasi
Bahan bawaan menggunakan lebih sedikit memori daripada tekstur kustom, tetapi mungkin tidak cocok dengan pandangan artistik Anda. Coba gunakan bahan setiap kali mungkin untuk menghemat anggaran memori untuk tekstur yang merupakan bagian dari pengalaman Anda.
Saat Anda membuat aset, konversi mereka menjadi paket . Membuat paket menjadi bagian dari workflow Anda menghindari masalah umum masalah duplikasi dengan ID yang berbeda, yang dapat menyebabkan masalah kinerja.
Saat Anda menambahkan meshes dan tekstur, gunakan dan reuse mereka daripada mengimpor salinan ganda. Dengan menyesuaikan, berputar, dan overlay, Anda dapat membuat lingkungan yang kaya, bervariasi yang memerlukan sangat sedikit panggilan menggambar . Untuk lebih banyak informasi, lihat Hapus Duplikasi Tekstur .
Transparansi
- Hindari nilai transparansi selain 0 (terlihat) dan 1 (tidak terlihat). Saat Anda menggunakan transparansi parcial, pastikan untuk menghindari penarikan transparansi tinggi.
Skrip
Saat mungkin, tulis kode yang didorong oleh acara daripada per-frame计算。在60 FPS,每个 frame total budget 16.67 milidetik (ms)。即使 tampaknya kecil per-frame计算 dapat menggunakan sebagian besar dari budget itu。
Temukan cara untuk membagi kode berjalan panjang menjadi potongan-potongan yang dapat diatur. Jika potongan kode memakan waktu 100ms untuk dieksekusi dan Anda menjalankannya setiap frame, pengalaman Anda hanya dapat dijalankan di 10 FPS. Jika Anda memutuskan untuk menjalankan kode hanya sekali per detik dalam pengalaman
Sebagai gantinya, selidiki cara Anda dapat memecahkan kode. Mungkin Anda dapat melakukan 5 ms pekerjaan per frame, menggunakan task.wait() , dan memiliki kalkulasi yang selesai setiap 20 frame sambil tetap menjaga 60 FPS. Multithreading , kadang-kadang disebut Parallel Luau, juga dapat membantu.
Gunakan metode RBXScriptConnection:Disconnect() untuk mencegah fungsi panggilan berlebihan lain kali acara diaktifkan.
Jangan panggil metode yang sama setiap kali Anda memerlukan nilai. Panggil metode sekali, simpan nilai, dan kemudian tulis ulang setelah perlu.
Jangan menyimpan semuanya di ReplicatedStorage . Klien memuat semua yang ada di kontainer ini. Sebaliknya, gunakan ServerStorage untuk apa pun yang klien tidak memerlukan akses ke.