MicroProfiler adalah alat optimasi kinerja dan pemecahan masalah di Roblox Studio dan klien Roblox. Ini memberikan informasi waktu yang terperinci dan visual untuk semua tugas mesin yang berjalan selama satu frame, seperti menganimasi karakter, memperbarui fisika, menjalankan skrip, dan merender geometri. Anda dapat mengidentifikasi tugas mana yang dijalankan selama frame mana, berapa lama tugas ini berjalan, dan apakah ada yang menyebabkan Anda melewatkan tujuan waktu frame Anda.
Waktu frame
Untuk menggunakan MicroProfiler, Anda harus memahami hubungan antara waktu frame dan frame rate.
- Waktu frame adalah berapa lama sebuah frame dirender di layar, umumnya diukur dalam milidetik.
- Frame rate adalah jumlah frame yang dirender di layar, umumnya diukur dalam frame per detik (FPS).
Waktu frame yang lebih rendah berarti frame rate yang lebih tinggi. Bagi 1.000 milidetik (1 detik) dengan waktu frame untuk mendapatkan frame rate.
| Rata-rata waktu frame | Frame per detik |
|---|---|
| 33.33 ms | 30 FPS |
| 16.67 ms | 60 FPS |
| 8.33 ms | 120 FPS |
| 4.17 ms | 240 FPS |
Namun, untuk gameplay yang mulus, tidak cukup hanya memiliki frame rate yang tinggi. Anda memerlukan waktu frame yang konsisten. Misalnya, jika 59 frame tiba dalam 10 milidetik dan satu frame dalam 410 milidetik, pemain akan merasakan jeda yang besar dan mengganggu, meskipun permainan berjalan pada 60 FPS. Jika semua frame memerlukan waktu yang kira-kira sama untuk dirender, permainan Anda akan terasa lebih halus karena konsistensi itu, terutama pada frame rate yang lebih rendah.
MicroProfiler sepenuhnya fokus pada waktu frame. Tujuannya adalah untuk membantu Anda mengidentifikasi lonjakan waktu frame dan apa yang menyebabkannya.
Buka MicroProfiler
Membuka MicroProfiler bervariasi tergantung platform:
Di klien seluler, buka menu Pengaturan dan ubah MicroProfiler menjadi Aktif. Kemudian dari mesin pengembangan di jaringan yang sama, gunakan browser web Anda untuk menavigasi ke alamat IP dan port yang disediakan.

Tangkapan layar ini menunjukkan alamat IP 172.18.56.105 dan port 1338, jadi Anda menavigasi ke 172.18.56.105:1338. Bergantung pada konfigurasi jaringan perangkat Anda, Anda mungkin melihat beberapa alamat IP. Jika satu tidak berfungsi, coba yang berikutnya.
Di klien desktop, tekan CtrlF6 (⌘F6).
Di Studio, tekan CtrlF6 (⌘F6).
Umumnya, klien seluler adalah tempat terbaik untuk memprofil permainan Anda. Sebagian besar pemain di Roblox menggunakan ponsel dan tablet, dan perangkat ini memiliki batasan thermal dan daya yang parah yang membatasi kinerjanya. Jika permainan Anda berjalan dengan baik di tablet Android menengah, hampir pasti kinerjanya jauh lebih baik di desktop gaming.
Dasar-dasar MicroProfiler
MicroProfiler memiliki dua komponen kunci: grafik batang waktu frame dan garis waktu tugas terperinci.
- Grafik waktu frame berjalan di sepanjang bagian atas antarmuka dan menunjukkan berapa lama setiap frame dirender. Batang yang lebih tinggi berarti waktu frame yang lebih lama.
- Garis waktu menunjukkan semua tugas individu yang dijalankan selama frame. Batang yang lebih lebar mewakili tugas yang memerlukan waktu lebih lama untuk dijalankan.
Alur kerja yang umum di MicroProfiler adalah menggunakan grafik waktu frame untuk mengidentifikasi lonjakan (batang yang lebih tinggi) dan kemudian menggunakan garis waktu untuk mengidentifikasi tugas mana yang menyebabkan lonjakan tersebut. Kemudian Anda dapat memeriksa Referensi Tag untuk informasi tentang tugas tersebut dan cara meningkatkan kinerjanya.

Grafik waktu frame
Tinggi setiap batang menunjukkan jumlah milidetik yang diperlukan untuk menyelesaikan frame. Frame yang lebih baru berada di sebelah kanan. Arahkan mouse ke atas frame untuk mendapatkan informasi dasar tentang penggunaan CPU dan GPU.

Batang oranye adalah frame di mana Waktu Dinding Pekerjaan melebihi Waktu Dinding Render. Dalam frame ini, setidaknya satu dari utasan pekerja, yang melakukan hal-hal seperti menjalankan skrip, menghitung fisika, dan memainkan animasi, memerlukan waktu lebih lama untuk dijalankan daripada utasan render utama.
Jika permainan tidak mencapai tujuan waktu frame Anda dan memiliki sejumlah besar frame oranye, penyebab umum adalah skrip, fisika, dan animasi. Lihat Tingkatkan kinerja.
Batang biru adalah frame di mana Waktu Dinding Render melebihi Waktu Dinding Pekerjaan. Dalam frame ini, utasan render utama memerlukan lebih banyak waktu daripada utasan pekerja mana pun.
Jika permainan tidak mencapai tujuan waktu frame Anda dan memiliki sejumlah besar frame biru, itu menunjukkan adanya bottleneck rendering. Penyebab umum adalah kepadatan objek yang berlebihan, pergerakan objek, dan pencahayaan. Lihat Tingkatkan kinerja.
Batang merah adalah frame di mana dua kondisi benar:
- Waktu Dinding Render melebihi Waktu Dinding Pekerjaan
- Waktu Tunggu GPU lebih besar dari 2,5 milidetik
Batang merah kurang umum dibandingkan dengan oranye dan biru dan sering kali merupakan hasil dari kompleksitas objek yang berlebihan, ukuran tekstur, dan efek visual. Optimasi mirip dengan batang biru. Lihat Tingkatkan kinerja.
Tugas kecil di akhir frame kadang-kadang dapat mengganggu Waktu Dinding Pekerjaan dan Waktu Dinding Render, yang merupakan alasan baik untuk lebih fokus pada waktu frame daripada warna frame. Tidak ada warna "baik" yang harus dicapai. Campuran oranye, biru, dan merah tidak menjadi masalah selama Anda mencapai tujuan waktu frame Anda. Jika Anda tidak mencapai tujuan waktu frame Anda, warna dapat menunjukkan di mana Anda perlu mengoptimalkan.
Garis waktu
Klik kiri dan seret untuk menggeser garis waktu. Di mesin dengan banyak inti CPU, Anda mungkin perlu menggeser ke atas atau ke bawah cukup banyak untuk menemukan utasan yang melakukan tugas tertentu.

Menggulir memperbesar dan memperkecil garis waktu. Dipadukan dengan label milidetik di bagian atas garis waktu, Anda dapat merasakan berapa lama sebuah tugas berlangsung dalam arti absolut, tetapi juga berapa lama ia berlangsung relatif terhadap tugas lainnya.

Overlay hijau pada grafik batang menunjukkan jumlah frame yang saat ini terlihat di garis waktu—tingkat zoom Anda. Klik kiri pada batang frame untuk melompat ke posisi itu di garis waktu.
Anda mungkin perlu menyesuaikan tingkat zoom Anda, tetapi mengarahkan mouse ke atas batang menyoroti frame di garis waktu. Garis abu-abu muda membatasi frame.

Label yang muncul tepat di bawah label lain menunjukkan tugas yang dilakukan sebagai bagian dari tugas tingkat lebih tinggi.
Alih-alih tugas induk, Anda biasanya ingin memecahkan masalah tugas anak yang berkinerja terburuk; tugas induk tidak dapat lebih pendek dari jumlah tugas anaknya.
Klik kanan pada label untuk memperbesar garis waktu ke durasi tepat dari tugas tersebut.
Jika jumlah informasi terlalu banyak, gunakan menu Grup atau Utasan untuk memfilter garis waktu. Misalnya, Anda mungkin hanya ingin melihat tugas Render di utasan utama.

Gunakan CtrlF (⌘F) untuk melompat ke kemunculan tugas yang memakan waktu paling banyak dalam dump. Misalnya, computeLightingPerform berjalan di setiap frame klien. Jika Anda mencarinya dalam dump dengan 128 frame, Anda dapat melompat ke frame di mana ia memerlukan waktu paling lama untuk diselesaikan.
Utasan
Seperti banyak program, Roblox menggunakan beberapa utasan untuk melakukan urutan tugas secara bersamaan. MicroProfiler menampilkan nama utasan di sisi kiri garis waktu.

Ada tiga jenis utasan penting:
Utasan Utama ("RBX Main"): Menangani tugas rendering berbasis CPU. Memproses input, Humanoids, animasi/tweening, kepemilikan fisika, suara, dan menunggu resume skrip. Juga memperbarui antarmuka Studio dan mengoordinasikan utasan lainnya.
Utasan Pekerja ("RBX Worker"): Membantu utasan utama dengan jaringan, fisika, dan pencarian jalur. Karena jumlah inti di CPU modern, Anda kemungkinan memiliki banyak utasan pekerja, yang sebagian besar berada dalam keadaan tidur pada waktu tertentu.
Render ("GPU"): Mengikuti logika "persiapkan, lakukan, hadirkan". Berkomunikasi dengan unit pemrosesan grafis (GPU) perangkat.
- Persiapkan: Informasi dari utasan utama digunakan untuk memperbarui model rendering.
- Lakukan: Mengeluarkan perintah rendering, termasuk antarmuka 2D.
- Hadirkan: Menyinkronkan dengan GPU.
Profil skrip kustom
Jika skrip Anda menjalankan tugas yang rumit, Anda dapat memprofil bagian kritis dari kode untuk memastikan bahwa mereka tidak memakan waktu terlalu lama. Bungkus kode dengan debug.profilebegin() dan debug.profileend() untuk mengukur semua yang dilakukan antara panggilan fungsi tersebut dan membuat label di garis waktu MicroProfiler.
local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Kerja Keras")
-- Contoh kerja keras: menukar dua variabel 200.000 kali
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)
Dari durasinya di garis waktu, Anda dapat melihat bahwa fungsi tersebut menggunakan banyak waktu pemrosesan dibandingkan dengan tugas lainnya.
Analisis tangkapan dengan Asisten
Di Studio, Anda dapat meminta Asisten untuk secara otomatis menganalisis tangkapan MicroProfiler yang dijeda, mengidentifikasi bottleneck kinerja, dan mengusulkan perbaikan.
- Di Studio, buka MicroProfiler dengan CtrlF6 (⌘F6).
- Ketika Anda melihat lonjakan waktu frame, jeda tangkapan dengan menekan Jeda di menu atas atau menggunakan CtrlP (⌘P).
- Buka Asisten dan minta untuk menganalisis tangkapan tersebut. Contoh permintaan termasuk:
- "Saya telah menangkap lonjakan waktu frame di MicroProfiler—analisis itu."
- "Apa yang menyebabkan lonjakan tersebut?"
- "Apakah itu terikat fisika atau terikat skrip?"
- "Kategori mana yang memiliki waktu eksklusif tertinggi?"
- "Ketika saya berada di hangar, FPS turun. Reproduksi masalah, gunakan MicroProfiler untuk menemukan penyebabnya, perbaiki, dan uji ulang."
Asisten membaca tangkapan yang dijeda melalui API MicroProfiler dan mengembalikan laporan tentang kemungkinan bottleneck, bersama dengan perubahan skrip atau adegan yang diusulkan yang dapat Anda terapkan.
Fungsi ini juga bekerja melalui server Studio MCP, sehingga Anda dapat mengintegrasikan analisis MicroProfiler ke dalam agen AI Anda sendiri atau loop agenik untuk mendapatkan umpan balik otomatis tentang bagaimana perubahan baru mempengaruhi kinerja permainan Anda.
Simpan data frame
Jika Anda ingin menyimpan sekumpulan data frame untuk ditinjau nanti (atau untuk dibagikan dengan orang lain), gunakan tombol Simpan ke file. MicroProfiler menyimpan data frame ke file HTML mandiri bernama microprofile-<tanggal>-<waktu>.html.

Di klien desktop atau di Studio, gunakan menu Dump. Dalam kedua kasus, MicroProfiler secara otomatis menyimpan file ke direktori log Roblox:
Di Windows, periksa %LOCALAPPDATA%\Roblox\logs.
Jika Anda menggunakan aplikasi Universal Windows Platform (UWP), periksa \Users\<username>\AppData\Local\Packages\ROBLOXCORPORATION.ROBLOX_<hash>\LocalState\logs\.
Di macOS, periksa ~/Library/Logs/Roblox.
Profil server
Selain memprofil klien, Anda dapat menangkap dump singkat aktivitas server:
Di klien desktop, bergabunglah dengan permainan yang Anda miliki izin edit.
Buka Konsol Pengembang dengan CtrlF9 (⌘F9).
Di menu dropdown, pilih MicroProfiler.
Di tab Server, tentukan jumlah frame yang akan ditangkap (maksimum 60) dan jumlah detik untuk menunda sebelum memulai tangkapan (maksimum 4).
Klik Mulai perekaman server.

Setelah beberapa detik, Konsol Pengembang memberikan jalur ke file, yang merupakan jalur yang sama dengan dump standar.
Fitur hanya web
MicroProfiler memiliki dua antarmuka pengguna: antarmuka web (seluler dan dump) dan antarmuka desktop (klien dan Studio). Kami merekomendasikan menggunakan antarmuka web kapan pun memungkinkan. Secara umum, keduanya bekerja dengan cara yang mirip, tetapi antarmuka web memiliki beberapa fitur tambahan:
Gunakan menu X-Ray untuk mengaktifkan atau menonaktifkan pengkodean warna untuk alokasi memori.

- Frame yang lebih terang dalam grafik batang utama menunjukkan alokasi memori yang lebih tinggi.
- Bagian yang lebih terang dari grafik pratinjau dan label yang lebih terang di garis waktu menunjukkan bagian dari frame dengan alokasi memori yang lebih tinggi.
- Dalam mode X-ray, tekan C untuk menunjukkan total ukuran alokasi memori daripada jumlah alokasi.
Gunakan menu Ekspor untuk mengekspor grafik api atau memori, visualisasi khusus yang mengagregasi semua tumpukan panggilan yang termasuk dalam dump, mempertahankan hierarki induk-anak, dan mengukurnya berdasarkan durasi. Grafik api sangat berguna untuk mengidentifikasi tugas yang tidak menyebabkan Anda melewatkan tujuan waktu frame Anda (dan karena itu sulit untuk diperhatikan), tetapi berjalan begitu sering sehingga waktu pemrosesannya menjadi signifikan.

Anda juga dapat membuat grafik api di Studio, meskipun hanya untuk skrip (waktu eksekusi dan alokasi memori). Dibandingkan dengan grafik api berbasis web, yang ada di Studio adalah dari atas ke bawah daripada dari bawah ke atas dan mendukung waktu tangkap yang jauh lebih lama.

Seret dan lepas file dump kedua ke dalam antarmuka web untuk menghasilkan grafik api diff, yang dapat membantu Anda mengidentifikasi perbaikan atau regresi kinerja permainan Anda dari waktu ke waktu. Klik Gabungkan & Bandingkan untuk mengekspor file HTML baru.

Grafik api diff menyoroti dump (kiri atau kanan) yang mengonsumsi lebih banyak CPU atau memori, dengan warna yang lebih cerah menunjukkan perbedaan yang lebih besar.

Fitur hanya desktop
Di garis waktu desktop, klik kiri pada label untuk menambahkannya ke grafik garis di sudut kanan bawah. Grafik menunjukkan waktu yang dibutuhkan tugas setiap frame. Menggunakan grafik ini, Anda dapat menguji kinerja hanya tugas tertentu dalam permainan Anda. Ketika Anda selesai, klik kanan grafik untuk menyembunyikannya.

Grafik ini disinkronkan dengan batang profiler utama. Rentang frame yang saat ini dipilih disorot dengan warna hijau di grafik. Anda juga dapat mengklik di mana saja di grafik ini untuk memusatkan kembali tampilan profiler utama ke frame tertentu itu, yang berguna untuk menemukan lonjakan di tampilan terperinci.
Cari tampilan terperinci
Di klien desktop, Anda dapat mencari tugas berdasarkan nama di tampilan Terperinci:
Buka MicroProfiler dengan CtrlF6 (⌘F6) dan beralih ke mode Terperinci.
Tekan CtrlF (⌘F) untuk membuka kotak pencarian.
Ketik sebagian nama tugas atau label. Pencocokan tidak sensitif terhadap huruf besar dan menemukan teks di mana saja dalam nama. Label yang cocok mempertahankan warnanya dan semua label lainnya menjadi redup. Frame yang mengandung kecocokan disorot di grafik waktu frame.
Pindah antara kecocokan:
Aksi Pintasan Kecocokan berikut F3 atau Enter Kecocokan sebelumnya ShiftF3 atau ShiftEnter Anda juga dapat mengklik tombol < dan > di samping kotak pencarian. Kecocokan saat ini dikelilingi dan ditandai dengan segitiga di atasnya, dan penghitung seperti 12 / 340 menunjukkan posisinya di antara semua kecocokan. Jika kecocokan tidak terlihat, garis waktu akan menggulir ke sana. Jika Anda telah menggeser garis waktu, navigasi akan dilanjutkan dari kecocokan yang saat ini terlihat.
Tekan Esc, atau tekan CtrlF (⌘F) lagi, untuk menutup pencarian. Menutup pencarian tidak menutup MicroProfiler.