MicroProfiler, Roblox Studio ve Roblox istemcisinde bir performans optimizasyonu ve sorun giderme aracıdır. Karakterleri animasyon, fizik güncellemeleri, betik çalıştırma ve geometri render etme gibi bir kare sırasında çalışan tüm motor görevleri için ayrıntılı, görsel zamanlama bilgileri sağlar. Hangi görevlerin hangi karede çalıştığını, bu görevlerin ne kadar sürdüğünü ve herhangi birinin kare zaman hedeflerinizi kaçırmanıza neden olup olmadığını belirleyebilirsiniz.
Kare zamanları
MicroProfiler'ı kullanmak için kare zamanı ve kare hızı arasındaki ilişkiyi anlamalısınız.
- Kare zamanı, bir karenin ekranda render edilmesi için geçen süredir ve genellikle milisaniye cinsinden ölçülür.
- Kare hızı, ekranda render edilen kare sayısıdır ve genellikle saniyedeki kare sayısı (FPS) cinsinden ölçülür.
Daha düşük kare zamanları, daha yüksek kare hızları anlamına gelir. 1.000 milisaniyeyi (1 saniye) kare zamanına bölerek kare hızını elde edebilirsiniz.
| Ortalama kare zamanı | Saniyedeki kare sayısı |
|---|---|
| 33.33 ms | 30 FPS |
| 16.67 ms | 60 FPS |
| 8.33 ms | 120 FPS |
| 4.17 ms | 240 FPS |
Ancak, akıcı bir oyun deneyimi için yüksek bir kare hızına sahip olmak yeterli değildir. Tutarlı kare zamanlarına ihtiyacınız vardır. Örneğin, 10 milisaniyede 59 kare ve 410 milisaniyede bir kare gelirse, oyuncular büyük, rahatsız edici bir takılma hisseder, oysa oyun 60 FPS'de çalışmaktadır. Tüm kareler yaklaşık olarak aynı süreyi alıyorsa, oyununuz bu tutarlılık nedeniyle algılanabilir şekilde daha akıcı hissedecektir, özellikle daha düşük kare hızlarında.
MicroProfiler tamamen kare zamanına odaklanır. Amacı, kare zamanı zirvelerini ve bunların nedenlerini belirlemenize yardımcı olmaktır.
MicroProfiler'ı açma
MicroProfiler'ı açma işlemi platforma göre değişir:
Mobil istemcide, Ayarlar menüsünü açın ve MicroProfiler'ı Açık olarak değiştirin. Ardından, aynı ağdaki bir geliştirme makinesinden web tarayıcınızı kullanarak sağlanan IP adresine ve porta gidin.

Bu ekran görüntüsü 172.18.56.105 IP adresi ve 1338 portunu göstermektedir, bu nedenle 172.18.56.105:1338 adresine gitmelisiniz. Cihazınızın ağ yapılandırmasına bağlı olarak birden fazla IP adresi görebilirsiniz. Eğer biri çalışmazsa, diğerine geçmeyi deneyin.
Masaüstü istemcide, CtrlF6 (⌘F6) tuşlarına basın.
Studio'da, CtrlF6 (⌘F6) tuşlarına basın.
Genel olarak, mobil istemci oyununuzu profil çıkarmak için en iyi yerdir. Roblox'taki çoğu oyuncu telefon ve tablet kullanıyor ve bu cihazlar, performanslarını sınırlayan ciddi termal ve güç kısıtlamalarına sahiptir. Oyununuza orta seviye bir Android tablet üzerinde iyi çalışıyorsa, muhtemelen bir oyun masaüstünde çok daha iyi performans gösterir.
MicroProfiler temelleri
MicroProfiler'ın iki ana bileşeni vardır: kare zamanı çubuk grafiği ve ayrıntılı görev zaman çizelgesi.
- Kare zamanı grafiği, arayüzün üst kısmında yer alır ve her karenin render edilmesi için ne kadar süre geçtiğini gösterir. Daha uzun çubuklar, daha uzun kare zamanları anlamına gelir.
- Zaman çizelgesi, kare sırasında çalışan tüm bireysel görevleri gösterir. Daha geniş çubuklar, daha uzun süre çalışan görevleri temsil eder.
MicroProfiler'daki tipik bir iş akışı, kare zamanı grafiğini kullanarak bir zirve (daha uzun bir çubuk) belirlemek ve ardından zaman çizelgesini kullanarak zirveye neden olan görevleri tanımlamaktır. Ardından, görevin bilgileri ve performansını nasıl artırabileceğiniz hakkında bilgi almak için Etiket referansı kontrol edebilirsiniz.

Kare zamanı grafiği
Her çubuğun yüksekliği, karenin tamamlanması için geçen milisaniye sayısını gösterir. Daha yeni kareler sağda yer alır. Bir kare üzerine gelindiğinde, CPU ve GPU kullanımı hakkında bazı temel bilgiler görüntülenir.

Turuncu çubuklar, Görev Duvar Zamanı'nın Render Duvar Zamanı'nı aştığı karelerdir. Bu karelerde, en az bir işçi iş parçacığı, betikleri çalıştırma, fizik hesaplama ve animasyon oynatma gibi işlemleri gerçekleştirmek için ana render iş parçacığından daha uzun sürdü.
Oyun, kare zamanı hedeflerinize ulaşmıyorsa ve çok sayıda turuncu kare varsa, yaygın nedenler betikler, fizik ve animasyonlardır. Performansı artırma bölümüne bakın.
Mavi çubuklar, Render Duvar Zamanı'nın Görev Duvar Zamanı'nı aştığı karelerdir. Bu karelerde, ana render iş parçacığı, işçi iş parçacıklarından daha fazla zaman almıştır.
Oyun, kare zamanı hedeflerinize ulaşmıyorsa ve çok sayıda mavi kare varsa, bu bir render darboğazı olduğunu gösterir. Yaygın nedenler aşırı nesne yoğunluğu, nesne hareketi ve aydınlatmadır. Performansı artırma bölümüne bakın.
Kırmızı çubuklar, iki koşulun doğru olduğu karelerdir:
- Render Duvar Zamanı, Görev Duvar Zamanı'nı aşar
- GPU Bekleme Süresi 2.5 milisaniyeden büyüktür
Kırmızı çubuklar, turuncu ve mavi çubuklardan daha az yaygındır ve genellikle aşırı nesne karmaşıklığı, doku boyutu ve görsel efektlerin sonucudur. Optimizasyon, mavi çubuklarla benzerdir. Performansı artırma bölümüne bakın.
Bir karenin sonundaki küçük görevler bazen Görev Duvar Zamanı ve Render Duvar Zamanı'nı etkileyebilir, bu nedenle kare zamanına odaklanmak, kare renginden daha iyi bir yaklaşımdır. Hedefleyeceğiniz "iyi" bir renk yoktur. Turuncu, mavi ve kırmızı karışımı, kare zamanı hedeflerinize ulaşıyorsanız sorun değildir. Eğer ulaşamıyorsanız, renkler nerede optimize etmeniz gerektiğini gösterebilir.
Zaman Çizelgesi
Zaman çizelgesini kaydırmak için sol tıklayın ve sürükleyin. Birçok CPU çekirdeğine sahip bir makinede, belirli bir görevi gerçekleştiren iş parçacığını bulmak için yukarı veya aşağı kaydırmanız gerekebilir.

Kaydırma, zaman çizelgesini yakınlaştırır veya uzaklaştırır. Zaman çizelgesinin üst kısmındaki milisaniye etiketleri ile bir görevin ne kadar sürdüğünü mutlak anlamda görebilir, ayrıca diğer görevlere göre ne kadar sürdüğünü de anlayabilirsiniz.

Çubuk grafiğindeki yeşil örtü, zaman çizelgesinde şu anda görünür olan kare sayısını gösterir—yakınlaştırma seviyeniz. Bir kare çubuğuna sol tıklayarak zaman çizelgesinde o konuma atlayabilirsiniz.
Yakınlaştırma seviyenizi ayarlamanız gerekebilir, ancak bir çubuğun üzerine gelmek, zaman çizelgesindeki kareyi vurgular. Açık gri çizgiler kareleri ayırır.

Bir etiketin hemen altında görünen etiketler, daha yüksek seviyedeki görevin bir parçası olarak gerçekleştirilen görevleri gösterir.
Genellikle, üst görev yerine en kötü performans gösteren alt görevleri sorun gidermek istersiniz; bir üst görev, alt görevlerinin toplamından daha kısa olamaz.
Bir etikete sağ tıklayarak zaman çizelgesini o görevin süresine tam olarak yakınlaştırabilirsiniz.
Bilgi miktarı bunaltıcıysa, zaman çizelgesini filtrelemek için Gruplar veya İş Parçacıkları menüsünü kullanın. Örneğin, yalnızca ana iş parçacığında Render görevlerini görmek isteyebilirsiniz.

En çok zaman alan görevin gerçekleştiği yeri atlamak için CtrlF (⌘F) tuşlarını kullanın. Örneğin, computeLightingPerform her istemci karesinde çalışır. 128 kare içeren bir dökümde arama yaparsanız, en uzun sürede tamamlandığı kareye atlayabilirsiniz.
İş Parçacıkları
Birçok programda olduğu gibi, Roblox, görev dizilerini aynı anda gerçekleştirmek için birden fazla iş parçacığı kullanır. MicroProfiler, zaman çizelgesinin sol tarafında iş parçacığı adını görüntüler.

Üç önemli iş parçacığı türü vardır:
Ana ("RBX Ana"): CPU tabanlı render görevlerini yönetir. Girdi işlemlerini, Humanoids, animasyonları/animasyon geçişlerini, fizik mülkiyetini, sesi ve bekleyen betik devamlarını işler. Ayrıca Studio arayüzlerini günceller ve diğer iş parçacıklarını koordine eder.
İşçi ("RBX İşçi"): Ana iş parçacığına ağ, fizik ve yol bulma konularında yardımcı olur. Modern CPU'ların çekirdek sayısı nedeniyle, muhtemelen birçok işçi iş parçacığınız vardır ve bunların çoğu herhangi bir anda uyku durumundadır.
Render ("GPU"): "hazırlama, gerçekleştirme, sunma" mantığını takip eder. Cihazın grafik işleme birimi (GPU) ile iletişim kurar.
- Hazırlama: Ana iş parçacığından gelen bilgiler, render modellerini güncellemek için kullanılır.
- Gerçekleştirme: Render komutları verilir, 2D arayüzler dahil.
- Sunma: GPU ile senkronize olur.
Özel betik profilleri
Eğer betikleriniz karmaşık görevler yürütüyorsa, kodun kritik bölümlerini profil çıkarmak için debug.profilebegin() ve debug.profileend() ile sarmalayarak bu işlev çağrıları arasındaki her şeyi zamanlayabilir ve MicroProfiler zaman çizelgesinde bir etiket oluşturabilirsiniz.
local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Hard Work")
-- Örnek zor iş: iki değişkeni 200.000 kez değiştir
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)
Zaman çizelgesindeki süresinden, bu işlevin diğer görevlere kıyasla çok fazla işlem süresi kullandığını anlayabilirsiniz.
Yakalamaları Assistant ile analiz etme
Studio'da, Assistant ile duraklatılmış bir MicroProfiler yakalamasını otomatik olarak analiz etmesini, performans darboğazlarını tanımlamasını ve düzeltmeler önermesini isteyebilirsiniz.
- Studio'da, MicroProfiler'ı CtrlF6 (⌘F6) ile açın.
- Bir kare zamanı zirvesi gördüğünüzde, üst menüdeki Duraklat butonuna basarak veya CtrlP (⌘P) tuşlarına basarak yakalamayı duraklatın.
- Assistant'ı açın ve yakalamayı analiz etmesini isteyin. Örnek istemler şunlardır:
- "MicroProfiler'da bir kare zamanı zirvesi yakaladım—analiz et."
- "Zirveye ne sebep oldu?"
- "Fizik ile mi yoksa betik ile mi ilgili?"
- "Hangi kategorinin en yüksek özel süresi var?"
- "Hangarda olduğumda FPS düşüyor. Sorunu yeniden üret, MicroProfiler kullanarak nedeni bul, düzelt ve yeniden test et."
Assistant, duraklatılmış yakalamayı MicroProfiler API'si aracılığıyla okur ve muhtemel darboğazlar hakkında bir rapor döner, ayrıca uygulayabileceğiniz önerilen betik veya sahne değişikliklerini sunar.
Bu işlevsellik, Studio MCP sunucusu aracılığıyla da çalışır, böylece MicroProfiler analizlerini kendi AI ajanınıza veya ajansal döngünüze entegre ederek yeni değişikliklerin oyununuzun performansını nasıl etkilediği hakkında otomatik geri bildirim alabilirsiniz.
Kare verilerini kaydetme
Eğer daha sonra gözden geçirmek (veya birisiyle paylaşmak) için bir dizi kare verisini kaydetmek istiyorsanız, Dosyaya Kaydet butonunu kullanın. MicroProfiler, kare verilerini microprofile-<tarih>-<saat>.html adlı bağımsız bir HTML dosyasına kaydeder.

Masaüstü istemcisinde veya Studio'da, Döküm menüsünü kullanın. Her iki durumda da, MicroProfiler dosyayı Roblox günlükleri dizinine otomatik olarak kaydeder:
Windows'ta, %LOCALAPPDATA%\Roblox\logs dizinine bakın.
Eğer Evrensel Windows Platformu (UWP) uygulamasını kullanıyorsanız, \Users\<kullanıcı_adı>\AppData\Local\Packages\ROBLOXCORPORATION.ROBLOX_<hash>\LocalState\logs\ dizinine bakın.
macOS'ta, ~/Library/Logs/Roblox dizinine bakın.
Sunucuyu profil çıkarma
İstemcinin yanı sıra, sunucu etkinliğinin kısa dökümlerini de yakalayabilirsiniz:
Masaüstü istemcisinde, düzenleme izinlerinizin olduğu bir oyuna katılın.
Geliştirici Konsolunu CtrlF9 (⌘F9) ile açın.
Aşağı açılır menüden MicroProfiler'ı seçin.
Sunucu sekmesinde, yakalayacağınız kare sayısını (maksimum 60) ve yakalamaya başlamadan önceki gecikme süresini (maksimum 4 saniye) belirtin.
Sunucu kaydını başlat butonuna tıklayın.

Birkaç saniye sonra, Geliştirici Konsolu dosyanın yolunu sağlar; bu yol, standart döküm ile aynı yoldur.
Sadece web özellikleri
MicroProfiler'ın iki kullanıcı arayüzü vardır: web UI (mobil ve dökümler) ve masaüstü UI (istemci ve Studio). Mümkün olduğunda web UI'yi kullanmanızı öneririz. Genel olarak, ikisi de benzer şekilde çalışır, ancak web UI'nin birkaç ekstra özelliği vardır:
Bellek tahsisi için renk kodlamasını etkinleştirmek veya devre dışı bırakmak için X-Ray menüsünü kullanın.

- Ana çubuk grafiğindeki daha açık kareler, daha yüksek bellek tahsisini gösterir.
- Önizleme çubuğunun daha açık kısımları ve zaman çizelgesindeki daha açık etiketler, daha yüksek bellek tahsisine sahip karelerin kısımlarını gösterir.
- X-ray modunda, tahsislerin toplam boyutunu göstermek için C tuşuna basın, tahsis sayısını değil.
Dışa Aktar menüsünü kullanarak bir CPU veya bellek alev grafiği dışa aktarın; bu, dökümdeki tüm çağrı yığınlarını bir araya getiren, üst-alt hiyerarşisini koruyan ve süreye göre boyutlandıran özel bir görselleştirmedir. Alev grafikleri, kare zamanı hedeflerinizi kaçırmanıza neden olmayan (ve bu nedenle fark edilmesi zor) görevleri tanımlamak için özellikle yararlıdır, ancak o kadar sık çalışırlar ki işlem süreleri önemli hale gelir.

Studio'da da alev grafikleri oluşturabilirsiniz, ancak yalnızca betikler için (çalışma süresi ve bellek tahsisleri). Web tabanlı alev grafiklerine kıyasla, Studio'daki grafikler yukarıdan aşağıya doğru değil, aşağıdan yukarıya doğrudur ve çok daha uzun yakalama sürelerini destekler.

Web UI'ye ikinci bir döküm dosyasını sürükleyip bırakarak bir diff alev grafiği oluşturun; bu, oyununuzun performansındaki iyileşmeleri veya gerilemeleri tanımlamanıza yardımcı olabilir. Yeni bir HTML dosyası dışa aktarmak için Birleştir & Karşılaştır butonuna tıklayın.

Diff alev grafiği, daha fazla CPU veya bellek tüketen dökümü (sol veya sağ) vurgular; daha parlak renkler, daha büyük bir farkı gösterir.

Sadece masaüstü özellikleri
Masaüstü zaman çizelgesinde, bir etikete sol tıklayarak onu sağ alttaki bir çizgi grafiğine ekleyin. Grafik, her çerçevede görevin ne kadar sürdüğünü gösterir. Bu grafiği kullanarak, oyununuzdaki yalnızca belirli görevlerin performansını test edebilirsiniz. İşiniz bittiğinde, grafiği gizlemek için sağ tıklayın.

Bu grafik, ana profil çubuklarıyla senkronizedir. Şu anda seçilen kare aralığı, grafikte yeşil ile vurgulanmıştır. Ayrıca, bu grafikte herhangi bir yere tıklayarak ana profil görünümünü o belirli kareye yeniden merkezleyebilirsiniz; bu, ayrıntılı görünümde zirveleri bulmak için yararlıdır.
Ayrıntılı görünümde arama
Masaüstü istemcisinde, Ayrıntılı görünümde görevleri adıyla arayabilirsiniz:
MicroProfiler'ı CtrlF6 (⌘F6) ile açın ve Ayrıntılı moda geçin.
Arama kutusunu açmak için CtrlF (⌘F) tuşlarına basın.
Bir görev veya etiket adının bir kısmını yazın. Eşleşme büyük/küçük harf duyarsızdır ve metni adın herhangi bir yerinde bulur. Eşleşen etiketler renklerini korur ve diğer tüm etiketler soluklaşır. Eşleşme içeren kareler, kare zamanı grafiğinde vurgulanır.
Eşleşmeler arasında geçiş yapın:
Eylem Kısayol Sonraki eşleşme F3 veya Enter Önceki eşleşme ShiftF3 veya ShiftEnter Arama kutusunun yanındaki < ve > butonlarına da tıklayabilirsiniz. Mevcut eşleşme, etrafında bir üçgen ile işaretlenir ve 12 / 340 gibi bir sayaç, tüm eşleşmeler arasındaki konumunu gösterir. Eşleşme ekran dışındaysa, zaman çizelgesi ona kaydırılır. Zaman çizelgesini kaydırdıysanız, gezinme, şu anda görünür olan eşleşmelerden devam eder.
Aramayı kapatmak için Esc tuşuna basın veya CtrlF (⌘F) tuşlarına tekrar basın. Aramayı kapatmak, MicroProfiler'ı kapatmaz.