Panduan ini menunjukkan cara menggunakan MicroProfiler untuk menemukan aspek bermasalah dari sebuah permainan dan mengidentifikasi penyebab utamanya. Unduh permainan, Buka dari File di Studio, dan ikuti langkah-langkahnya.
Identifikasi masalah
Setelah Anda membuka permainan di Studio, mulai uji permainan dengan F5 atau tombol Play.
Laju bingkai terasa cukup baik, tetapi tidak sehalus yang seharusnya untuk permainan dengan ukuran dan lingkup ini. Tekan CtrlShiftF5 (⌘ShiftF5) untuk menampilkan overlay Ringkasan Kinerja.

Perhatikan bahwa laju bingkai di bawah 60 bingkai per detik (FPS).
Buka MicroProfiler dengan menekan CtrlAltF6 (⌘⌥F6).

Perhatikan bahwa waktu bingkai adalah konsisten—batangnya kira-kira memiliki tinggi yang sama—jadi apapun yang menyebabkan laju bingkai rendah berjalan setiap bingkai daripada berjalan sesekali dan menyebabkan lonjakan waktu bingkai.
Jeda MicroProfiler dengan menekan CtrlP (⌘P). Jeda dengan pintasan keyboard membuka mode rinci.
Klik dan seret untuk menggeser grafik. Perhatikan bagaimana satu tugas tertentu di utas pekerja tampaknya menggunakan banyak waktu pemrosesan dibandingkan dengan utas utama. Arahkan kursor ke RunService.Stepped dan catat berapa lama waktu yang dibutuhkan untuk merender.

Batang bertumpuk di timeline menunjukkan hierarki kode, jadi teruslah mengarahkan kursor pada lapisan yang lebih rendah untuk mencoba dan mengidentifikasi masalah.


Catat label LocalScript, yang menunjukkan nama skrip, dan label Raycast, yang menunjukkan bahwa masalah ini mungkin terkait dengan raycasting.
Buat label pemecahan masalah
Sekarang setelah MicroProfiler memberikan titik awal, Anda dapat mencari kode yang bermasalah.
Hentikan uji coba dan filter jendela Explorer untuk localscript untuk menemukan file tersebut.

Pencarian untuk raycast menunjukkan bahwa bagian kode ini mungkin penyebab buruknya kinerja permainan:
local RAYS_PER_SECOND = 1500local function onStepped()for _ = 1, RAYS_PER_SECOND dolocal startPosition = getRandomPosition()local endPosition = getRandomPosition()local direction = endPosition - startPositionWorkspace:Raycast(startPosition,endPosition)endendRunService.Stepped:Connect(onStepped)Secara spesifik, Anda dapat melihat bahwa kode ini menghasilkan 1.500 sinar per detik ke arah yang acak.
Untuk memverifikasi bahwa bagian kode ini menyebabkan penundaan rendering, bungkus isi fungsi dengan debug.profilebegin() dan debug.profileend():
local function onStepped()debug.profilebegin("Raycast Spam")for _ = 1, RAYS_PER_SECOND dolocal startPosition = getRandomPosition()local endPosition = getRandomPosition()local direction = endPosition - startPositionWorkspace:Raycast(startPosition,endPosition)enddebug.profileend()end
Konfirmasi dan perbaiki masalah
Mulai uji permainan, dan buka MicroProfiler lagi.
Catat bagaimana MicroProfiler sekarang menunjukkan label khusus, menunjukkan bahwa fungsi ini memang merupakan penyebab utama.

Hentikan uji coba.
Hapus atau beri komentar fungsi onStepped() dan koneksi RunService.Stepped:Connect(onStepped).
Mulai uji permainan lagi, dan periksa Ringkasan Kinerja sekali lagi.

Catat peningkatan besar pada laju bingkai dan penurunan waktu bingkai yang menyertainya di grafik MicroProfiler.