MicroProfiler adalah alat pengoptimalan kinerja dan pemecahan masalah di Roblox Studio dan klien Roblox. Ini menyediakan informasi waktu yang rinci dan visual untuk semua tugas mesin yang dijalankan 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 dijalankan, dan apakah ada yang menyebabkan Anda melewatkan tujuan waktu frame Anda.
Waktu frame
Untuk menggunakan MicroProfiler, Anda harus memahami hubungan antara waktu frame dan tingkat frame.
- Waktu frame adalah berapa lama waktu yang dibutuhkan untuk merender sebuah frame di layar, umumnya diukur dalam milidetik.
- Tingkat frame adalah jumlah frame yang dirender di layar, umumnya diukur dalam frame per detik (FPS).
Waktu frame yang lebih rendah berarti tingkat frame yang lebih tinggi. Bagi 1.000 milidetik (1 detik) dengan waktu frame untuk mendapatkan tingkat frame.
| Waktu frame rata-rata | 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 permainan yang mulus, tidak cukup hanya memiliki tingkat frame yang tinggi. Anda memerlukan waktu frame yang konsisten. Sebagai contoh, jika 59 frame tiba dalam 10 milidetik dan satu frame dalam 410 milidetik, pemain akan merasakan guncangan yang besar dan mengganggu, meskipun permainannya berjalan pada 60 FPS. Jika semua frame membutuhkan waktu yang kurang lebih sama untuk dirender, permainan Anda akan terasa lebih mulus karena konsistensi itu, terutama pada tingkat frame yang lebih rendah.
MicroProfiler fokus sepenuhnya pada waktu frame. Tujuannya adalah untuk membantu Anda mengidentifikasi lonjakan waktu frame dan apa yang menyebabkannya.
Buka MicroProfiler
Membuka MicroProfiler bervariasi menurut platform:
Di klien seluler, buka menu Pengaturan dan ubah MicroProfiler menjadi On. Kemudian dari komputer pengembangan di jaringan yang sama, gunakan browser web Anda untuk menavigasi ke alamat IP dan port yang diberikan.

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 baik di tablet Android kelas menengah, itu hampir pasti akan berfungsi jauh lebih baik pada desktop gaming.
Dasar-dasar MicroProfiler
MicroProfiler memiliki dua komponen kunci: grafik batang waktu frame dan timeline tugas yang rinci.
- Grafik waktu frame berjalan di sepanjang bagian atas antarmuka dan menunjukkan berapa lama setiap frame membutuhkan waktu untuk dirender. Batang yang lebih tinggi berarti waktu frame yang lebih lama.
- Timeline menunjukkan semua tugas individual yang dijalankan selama frame. Batang yang lebih lebar mewakili tugas yang membutuhkan 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 timeline 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 dibutuhkan untuk menyelesaikan frame. Frame yang lebih baru berada di sebelah kanan. Arahkan kursor ke atas sebuah frame untuk mendapatkan informasi dasar tentang penggunaan CPU dan GPU.

Batang oranye adalah frame di mana Waktu Dinding Tugas melebihi Waktu Dinding Render. Dalam frame-frame ini, setidaknya satu dari thread pekerja, yang melakukan tugas seperti menjalankan skrip, menghitung fisika, dan memainkan animasi, memerlukan waktu lebih lama untuk dijalankan daripada thread 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 Tugas. Dalam frame-frame ini, thread render utama memerlukan lebih banyak waktu daripada thread pekerja mana pun.
Jika permainan tidak mencapai tujuan waktu frame Anda dan memiliki banyak frame biru, itu menunjukkan adanya kemacetan dalam 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 Tugas
- Waktu Tunggu GPU lebih besar dari 2,5 milidetik
Batang merah kurang umum daripada oranye dan biru dan seringkali merupakan hasil dari kompleksitas objek yang berlebihan, ukuran tekstur, dan efek visual. Optimisasi mirip dengan batang biru. Lihat Tingkatkan kinerja.
Tugas kecil di akhir sebuah frame terkadang dapat memengaruhi Waktu Dinding Tugas 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 masalah asalkan Anda mencapai tujuan waktu frame Anda. Jika Anda tidak mencapai tujuan waktu frame Anda, warna dapat menunjukkan di mana Anda dapat mengoptimalkan.
Timeline
Klik kiri dan seret untuk menggulir timeline. Pada mesin dengan banyak inti CPU, Anda mungkin perlu menggulir ke atas atau ke bawah cukup jauh untuk menemukan thread yang melakukan tugas tertentu.

Menggulung memperbesar atau memperkecil tampilan timeline. Dipadukan dengan label milidetik di bagian atas timeline, Anda dapat merasakan berapa lama sebuah tugas berlangsung secara absolut, tetapi juga berapa lama durasinya relatif terhadap tugas lainnya.

Overlay hijau pada grafik batang menunjukkan jumlah frame yang saat ini terlihat di timeline—level zoom Anda. Klik kiri pada sebuah batang frame untuk melompat ke posisi tersebut pada timeline.
Anda mungkin perlu menyesuaikan level zoom Anda, tetapi mengarahkan kursor ke sebuah batang akan menyoroti frame di timeline. Garis abu-abu muda membatasi setiap frame.

Label yang muncul langsung di bawah label lain menunjukkan tugas yang dilakukan sebagai bagian dari tugas tingkat lebih tinggi.
Daripada tugas induk, Anda biasanya ingin memecahkan masalah pada tugas anak yang berkinerja terburuk; sebuah tugas induk tidak bisa lebih pendek dari jumlah total tugas anaknya.
Klik kanan pada label untuk memperbesar timeline pada durasi tepat dari tugas tersebut.
Jika jumlah informasi terasa berlebihan, gunakan menu Kelompok atau Thread untuk memfilter timeline. Misalnya, Anda mungkin hanya ingin melihat tugas Render di thread utama.

Gunakan CtrlF (⌘F) untuk melompat ke kemunculan tugas yang memakan waktu paling lama dalam dump. Sebagai contoh, computeLightingPerform dijalankan di setiap frame klien. Jika Anda mencarinya dalam dump dengan 128 frame, Anda dapat melompat ke frame di mana tugas tersebut memakan waktu terlama untuk diselesaikan.
Thread
Seperti banyak program, Roblox menggunakan beberapa thread untuk melakukan urutan tugas secara bersamaan. MicroProfiler menampilkan nama thread di sisi kiri timeline.

Ada tiga jenis thread penting:
Utama ("RBX Utama"): Menangani tugas rendering berbasis CPU. Memproses input, Humanoids, animasi/tweener, kepemilikan fisika, suara, dan menunggu resume skrip. Juga memperbarui antarmuka Studio dan mengoordinasikan thread-thread lainnya.
Pekerja ("RBX Pekerja"): Membantu thread utama dengan jaringan, fisika, dan pencarian jalur. Karena banyaknya inti pada CPU modern, Anda kemungkinan memiliki banyak thread pekerja, yang sebagian besar dalam keadaan tidur pada waktu tertentu.
Render ("GPU"): Mengikuti logika "persiapkan, lakukan, tampilkan". Berkomunikasi dengan unit pemrosesan grafis (GPU) perangkat.
- Persiapkan: Informasi dari thread utama digunakan untuk memperbarui model rendering.
- Lakukan: Mengeluarkan perintah rendering, termasuk antarmuka 2D.
- Tampilkan: Menyinkronkan dengan GPU.
Profil skrip kustom
Jika skrip Anda menjalankan tugas yang rumit, Anda dapat memprofil bagian kritis dari kode untuk memastikan bahwa itu tidak memakan waktu terlalu lama. Bungkus kode dengan debug.profilebegin() dan debug.profileend() untuk mencatat semua yang dilakukan antara pemanggilan fungsi tersebut dan membuat label pada timeline MicroProfiler.
local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Kerja Keras")
-- Contoh kerja keras: tukar 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 durasi di timeline, Anda dapat melihat bahwa fungsi tersebut menggunakan banyak waktu pemrosesan dibandingkan dengan tugas lainnya.
Simpan data frame
Jika Anda ingin menyimpan satu set 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 dari aktivitas server:
Di klien desktop, bergabunglah dengan permainan yang Anda miliki izin editnya.
Buka Konsol Pengembang dengan CtrlF9 (⌘F9).
Di menu dropdown, pilih MicroProfiler.
Di tab Server, tentukan jumlah frame untuk 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 di web
MicroProfiler memiliki dua antarmuka pengguna: UI web (seluler dan dump) dan UI desktop (klien dan Studio). Kami merekomendasikan untuk menggunakan UI web kapan pun memungkinkan. Secara umum, keduanya berfungsi dengan cara yang mirip, tetapi UI web memiliki beberapa fitur tambahan:
Gunakan menu X-Ray untuk mengaktifkan atau menonaktifkan kode warna untuk alokasi memori.

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

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

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

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

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

Grafik ini disinkronkan dengan batang profil 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 tampilan profil utama ke frame tertentu tersebut, yang membantu untuk menemukan lonjakan dalam tampilan rinci.