Mengidentifikasi masalah kinerja umumnya berarti menyelami salah satu dari tiga kategori: laju bingkai (komputasi), memori, atau waktu muat.
Roblox memiliki sejumlah alat untuk mengidentifikasi masalah kinerja, beberapa di antaranya tersedia di klien Roblox (dan oleh karena itu Studio) dan beberapa hanya tersedia di Studio. Sedangkan Anda dapat mengamati perilaku klien secara langsung, Anda harus menggunakan alat untuk mendiagnosis masalah server.
Alat diagnostik
| Alat | Deskripsi | Lokasi | Jalur keyboard | Lingkungan |
|---|---|---|---|---|
| Developer Console | Sebuah konsol dengan pesan log waktu nyata, kesalahan, dan informasi detail tentang memori, jaringan, dan kinerja skrip. Ini berguna untuk melihat konsumsi memori, statistik kesehatan server utama, statistik kinerja skrip, dan untuk meluncurkan MicroProfiler klien atau server. | Studio In-Game | F9 | Pengujian Studio Sesi Langsung |
| MicroProfiler | Sebuah alat debug yang memecah berapa banyak waktu komputasi yang dihabiskan pada tugas setiap bingkai. Ini dapat menghasilkan dump untuk analisis yang menunjukkan pemecahan tepat dari bingkai individu, menjadikannya berguna untuk mengidentifikasi tugas spesifik yang menyebabkan masalah kinerja. Anda dapat menjalankan profiler di klien atau server, tergantung pada sisi mana yang memiliki masalah. | Studio In-Game | CtrlAltF6 (⌘⌥F6) | Pengujian Studio Sesi Langsung |
| Analisis Adegan | Memberikan informasi komparatif sekilas tentang sumber daya yang digunakan oleh adegan klien dan server Anda dan instance mana yang bertanggung jawab atas penggunaan sumber daya tersebut. | Studio | N/A | Pengujian Studio |
| Statistik Kinerja | Sebuah toolbar dengan statistik kinerja dasar, termasuk konsumsi memori, CPU, GPU, data jaringan yang dikirim dan diterima, serta waktu ping. | In-Game | CtrlAltF7 (⌘⌥F7) | Pengujian Studio Sesi Langsung |
| Statistik Debug | Overlay dengan informasi detail tentang grafis, fisika, lalu lintas jaringan, dan FPS. | Studio In-Game | ShiftCtrlF1 (Shift⌘F1), ShiftCtrlF2 (Shift⌘F2), ShiftCtrlF3 (Shift⌘F3), ShiftCtrlF4 (Shift⌘F4), ShiftCtrlF5 (Shift⌘F5) | Pengujian Studio Sesi Langsung |
| Simulasi Jaringan | Properti yang mensimulasikan kondisi jaringan dunia nyata seperti latensi, jitter, dan kehilangan paket untuk menguji koneksi. | Studio | AltS(⌥S) | Pengujian Studio |
| Dasbor Kinerja | Sebuah dasbor dengan grafik agregat untuk penggunaan memori klien dan server, laju bingkai klien, detak jantung server, dan tingkat crash secara waktu nyata. Ini berguna untuk menganalisis pola kinerja dari waktu ke waktu. Lihat memantau kinerja. | Dasbor Pembuat | N/A | Sesi Langsung |
Komputasi server
Detak jantung server dibatasi pada 60 FPS untuk semua permainan, jadi nilai yang lebih rendah mungkin menunjukkan masalah kinerja. Untuk memeriksa detak jantung server:
Dengan Developer Console - Di tab Server Jobs, perluas baris Heartbeat dan periksa nilai Steps Per Sec, yang mewakili detak jantung permainan Anda.
Dengan MicroProfiler, Anda dapat memeriksa grafik untuk melihat apakah bingkai memerlukan waktu lebih dari 16,67 ms.
Gejala lain dari detak jantung server yang menurun adalah peningkatan latensi (umumnya dikenal sebagai ping). Semakin lama server menyelesaikan komputasinya setiap bingkai, semakin lama waktu yang diperlukan untuk memproses data jaringan yang dikirim dan diterima dari klien. Untuk memeriksa rata-rata ping untuk semua pemain yang terhubung ke server, pergi ke tab Server Stats di Developer Console.
Komputasi klien
Batas laju bingkai klien default adalah 60 FPS. Namun, pengguna dapat meningkatkan batas laju bingkai mereka hingga 240 FPS di Windows.
Laju bingkai berbeda secara liar antar perangkat. Misalnya, PC kelas atas mungkin dapat "memaksakan" masalah komputasi dan hanya mengalami penurunan laju bingkai yang tidak terlihat. Jika Anda menguji di perangkat kelas bawah, masalah cenderung lebih parah dan lebih mudah untuk diperhatikan.
Untuk memeriksa laju bingkai permainan Anda:
Di klien, tekan ShiftF5 untuk menampilkan ringkasan statistik debug.
Dari menu Window ⟩ Performance Studio, aktifkan Stats untuk mengaktifkan statistik debug.
Dengan MicroProfiler, Anda dapat memeriksa grafik untuk melihat apakah bingkai memerlukan waktu lebih dari 16,67 ms.
Memori server
Cobalah untuk menjaga penggunaan memori server di bawah 50%. Total memori server menggunakan rumus berikut:
6,25 GiB + (100 MiB * jumlah_pemain_tehubung_terbesar)
Sebagai contoh, server dengan 30 pemain terhubung memiliki total memori sekitar 9,18 GiB. Server mendapatkan memori ketika pemain terhubung, tetapi tidak kehilangan memori ketika pemain terputus. Jika 10 pemain keluar, server tetap memiliki 9,18 GiB memori alih-alih menyusut menjadi 8,2 GiB.
Ketika server dimatikan (misalnya, ketika mereka kosong atau sebagai bagian dari proses pembaruan), penggantinya mulai dengan jumlah memori dasar dan mulai mengembangkan ukuran saat pemain terhubung.
Memori klien
Ada beberapa cara untuk memeriksa penggunaan memori untuk sebuah permainan:
- Buka Developer Console dan beralih ke tab Memory. Tab ini memberikan pemecahan bagaimana memori dialokasikan. Gunakan klien daripada Studio untuk mendapatkan bacaan yang paling akurat.
- Aktifkan tampilan Statistik Kinerja dari menu pengaturan di klien untuk melihat overlay dengan total penggunaan memori klien.
Penggunaan memori yang tinggi tidak selalu menunjukkan masalah, tetapi beberapa indikasi bahwa Anda mungkin perlu menyelidiki lebih lanjut adalah:
- Persentase yang signifikan dari kerusakan klien yang terlihat di Dasbor Kinerja, terutama lonjakan mendadak yang bertepatan dengan pembaruan. Beberapa kerusakan diharapkan, tetapi Anda harus menyelidiki jika tingkat kerusakan Anda meningkat di atas 2-3%.
- Kerusakan terjadi saat menguji di perangkat yang ingin Anda dukung dalam permainan Anda.
Sebagian besar konsumsi memori sebuah permainan di sisi klien berasal dari aset, seperti gambar, mesh, dan file audio, yang dimuat ke dalam memori. Di Developer Console, periksa label berikut di bawah PlaceMemory:
- GraphicsMeshParts - Memori grafis yang dikonsumsi oleh mesh.
- GraphicsTexture - Memori grafis yang dikonsumsi oleh tekstur.
- Sounds - Memori yang dikonsumsi oleh file audio.
Waktu muat
Tidak ada alat bawaan untuk memeriksa waktu muat, tetapi karena mereka tidak memerlukan ketelitian tingkat milidetik, stopwatch biasanya sudah cukup untuk memahami dasar saat ini dan memeriksa apakah Anda telah membuat perbaikan yang substansial. Anda dapat menggunakan skrip klien di ReplicatedFirst untuk mendapatkan gambaran tentang bagaimana perubahan Anda mempengaruhi waktu muat, tetapi skrip ini tidak memberikan pengukuran lengkap, dari ujung ke ujung:
local startTime = os.clock()
game.Loaded:Connect(function()
local loadTime = os.clock() - startTime
local roundedLoadTime = math.round(loadTime * 10000) / 10000 -- empat angka desimal
print("Game dimuat dalam " .. roundedLoadTime .. " detik.")
print("Jumlah instance yang dimuat: " .. #workspace:GetDescendants())
end)
Untuk wawasan tambahan, aktifkan Print Join Size Breakdown dari tab Network di Pengaturan Studio untuk mencetak 20 instance teratas berdasarkan ukuran dan pemecahan persentase berdasarkan jenis instance saat Anda memulai permainan di Studio.
Ping
Dua pengukuran utama dari ping (latensi) adalah ping jaringan dan ping data.
Ping jaringan adalah waktu perjalanan pulang yang diukur dari ketika klien mengirim paket data jaringan hingga ketika ia menerima balasan echo dari server. Ini mirip dengan apa yang akan dilaporkan sebagai time oleh utilitas jaringan ping tujuan umum.
Ping jaringan terlihat di bilah Statistik Kinerja. Ini sebagian besar dipengaruhi oleh panjang jalur jaringan antara klien dan server, dan berada di luar kontrol Anda. Namun, Anda dapat mensimulasikan ping dan kondisi jaringan lainnya menggunakan simulasi jaringan saat melakukan pengujian di Studio.
Ping data adalah waktu perjalanan pulang yang diukur dari ketika klien mengirim data secara andal melalui sistem replikasi hingga ketika ia menerima balasan echo dari sistem replikasi server. Ini termasuk waktu yang dihabiskan dalam antrean replikasi klien dan server, dengan retransmisi TCP-like untuk paket yang hilang atau rusak.
Ping data mirip dengan mengirim acara jarak jauh yang andal dari klien, menerimanya di server, dan kemudian mengirim acara jarak jauh yang andal dari server ke klien sebagai balasan. Karena ping data juga mencakup waktu yang dihabiskan di jaringan antara klien dan server, itu lebih besar dari atau sama dengan ping jaringan.
Rata-rata ping data untuk semua pemain yang terhubung ke server terlihat di tab Server Stats di Developer Console. Ping data untuk klien individu terlihat menggunakan ShiftF3 untuk menampilkan statistik debug jaringan.
Ping data dipengaruhi oleh baik jalur jaringan dan oleh penundaan antrean replikasi. Ketika server menghasilkan data replikasi lebih cepat daripada jaringan dapat mengirimkannya (atau lebih cepat daripada klien dapat memprosesnya), data harus menunggu di antrean replikasi. Beberapa perbedaan antara ping data dan ping jaringan adalah normal akibat retransmisi jaringan dan cara data jaringan diproses oleh aplikasi Roblox. Namun, jika ping data jauh lebih tinggi daripada ping jaringan, gunakan MicroProfiler untuk melihat lalu lintas jaringan. Untuk saran optimasi, lihat jaringan dan replikasi.