MikroProfiler, Roblox Studio ve Roblox istemcisindeki bir performans optimizasyonu ve sorun giderme aracıdır. Animasyonu sağlama, fizik güncelleme, betikleri çalıştırma ve geometrinin render edilmesi 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 süresi hedeflerinizi kaçırmanıza neden olup olmadığını belirleyebilirsiniz.
Kare süreleri
MikroProfiler'ı kullanmak için, kare süresi ve kare hızı arasındaki ilişkiyi anlamalısınız.
- Kare süresi, 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 saniye başına kare (FPS) cinsinden ölçülür.
Daha düşük kare süreleri, daha yüksek kare hızları anlamına gelir. 1.000 milisaniyeyi (1 saniye) kare süresine bölerek kare hızını elde edebilirsiniz.
| Ortalama kare süresi | Saniye başına kare |
|---|---|
| 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 sürelerine de ihtiyacınız vardır. Örneğin, eğer 59 kare 10 milisaniyede gelirse ve bir kare 410 milisaniyede gelirse, oyuncular büyük, keskin bir takılma hisseder; oysa oyun 60 FPS ile çalışmaktadır. Tüm karelerin render edilmesi için yaklaşık olarak aynı sürede geçmesi durumunda, oyununuz o tutarlılık nedeniyle algılanabilir şekilde daha akıcı hale gelecektir, özellikle daha düşük kare hızlarında.
MikroProfiler tamamen kare süresine odaklanır. Amacı, kare süresi zirvelerini ve bunların neden olduğunu tanımlamanıza yardım etmektir.
MikroProfiler'ı Açma
MikroProfiler'ı açma, platforma göre değişir:
Mobil istemcide, Ayarlar menüsünü açın ve MikroProfiler'ı Açık konuma getirin. Ardından, aynı ağ üzerindeki 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ışmıyorsa, bir sonrakini deneyin.
Masaüstü istemcide, CtrlF6 (⌘F6) tuşlarına basın.
Studio'da, CtrlF6 (⌘F6) tuşlarına basın.
Genellikle, mobil istemci oyunuzu profil oluşturmak için en iyi yerdir. Roblox'taki çoğu oyuncu telefon ve tablet kullanmaktadır ve bu cihazlar performanslarını sınırlayan ciddi sıcaklık ve güç kısıtlamalarına sahiptir. Oyunuzu orta seviye bir Android tablette iyi çalışıyorsa, muhtemelen bir oyuncu masaüstünde çok daha, çok daha iyi performans gösterir.
MikroProfiler Temel Bilgileri
MikroProfiler'ın iki ana bileşeni vardır: kare süresi çubuk grafiği ve ayrıntılı görev zaman çizelgesi.
- Kare süresi grafiği, arayüzün üst kısmında yer alır ve her karenin ne kadar sürede render edildiğini gösterir. Daha yüksek çubuklar daha uzun kare süreleri anlamına gelir.
- Zaman çizelgesi, kare sırasında çalışan tüm bireysel görevleri gösterir. Daha geniş çubuklar, daha uzun sürede çalışan görevleri temsil eder.
MikroProfiler'daki tipik bir iş akışı, kare süresi grafiğini kullanarak bir zirve (daha yüksek bir çubuk) tanımlamak ve ardından zaman çizelgesini kullanarak bu zirveye neden olan görevleri belirlemektir. Ardından, görevin bilgi ve performansını artırma yolları için Etiket referansı sayfasına göz atabilirsiniz.

Kare Süresi Grafiği
Her çubuğun yüksekliği, karenin tamamlanması için geçen milisaniye sayısını gösterir. Daha yeni kareler sağ tarafta bulunur. Temel CPU ve GPU kullanımı hakkında bazı temel bilgiler için bir kare üzerine gelin.

Turuncu çubuklar, Görev Duvar Süresi'nin Render Duvar Süresini aştığı karelerdir. Bu karelerde, betikleri çalıştırmak, fizik hesaplama yapmak ve animasyon oynatmak gibi işlevleri yerine getiren en az bir işçi ipliği, ana render ipliğinden daha uzun sürdü.
Eğer oyun, kare süre hedeflerinizi karşılamıyorsa ve birçok turuncu kare varsa, yaygın nedenler arasında betikler, fizik ve animasyonlar yer alır. Performansı iyileştirin sayfasına bakın.
Mavi çubuklar, Render Duvar Süresinin Görev Duvar Süresini aştığı karelerdir. Bu karelerde, ana render ipliği, işçi ipliklerinden herhangi birinden daha fazla zaman harcamıştır.
Eğer oyun, kare süre hedeflerinizi karşılamıyorsa ve birçok mavi kare varsa, bu bir render darboğazı anlamına gelir. Yaygın nedenler arasında aşırı nesne yoğunluğu, nesne hareketi ve aydınlatma vardır. Performansı iyileştirin sayfasına bakın.
Kırmızı çubuklar, iki durumda da geçerli olan karelerdir:
- Render Duvar Süresi, Görev Duvar Süresini aşıyor
- GPU Bekleme Süresi, 2.5 milisaniyeden fazla
Kırmızı çubuklar, turuncu ve mavi çubuklara göre daha az yaygındır ve genellikle aşırı nesne karmaşıklığı, doku boyutu ve görsel efektlerin sonucudur. Optimizasyon, mavi çubuklarla benzerdir. Performansı iyileştirin sayfasına bakın.
Bir karenin sonundaki küçük görevler bazen Görev Duvar Süresini ve Render Duvar Süresini bozabilir; bu da kare süresine odaklanmanız gerektiğinin iyi bir nedenidir. Hiçbir "iyi" renge ulaşmak hedeflenmemelidir. Turuncu, mavi ve kırmızı karışımı, kare süre hedeflerinizi karşılıyorsanız sorun yaratmaz. Eğer karşılamıyorsanız, renkler nerede optimizasyon yapmanız gerektiğini gösterebilir.
Zaman Çizelgesi
Zaman çizelgesini kaydırmak için sol tıklayıp sürükleyin. Birçok CPU çekirdeğine sahip bir makinede, belirli bir görevi gerçekleştiren ipliği bulmak için yukarı veya aşağı kaydırmanız gerekebilir.

Kaydırma, zaman çizelgesini içeri ve dışarı zoomlar. Zaman çizelgesinin üst kısmındaki milisaniye etiketleri ile bir görevin ne kadar süre aldığı hakkında kesin bir fikir edinebilir, ayrıca diğer görevlere göre ne kadar sürdüğünü anlayabilirsiniz.

Bar grafiğindeki yeşil kaplama, zaman çizelgesinde şu anda görünen kare sayısını gösterir - zoom seviyenizdir. Zaman çizelgesinde o konuma atlamak için bir kare çubuğuna sol tıklayın.
Zoom seviyenizi ayarlamanız gerekebilir, ancak bir çubuğun üzerine geldiğinizde zaman çizelgesinde o kare vurgulanır. Açık gri çizgiler kareleri sınırlandırır.

Diğer 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.
Ana görev yerine, genellikle en kötü performans gösteren alt görevleri araştırmak istersiniz; bir ana görev, çocuk görevlerinin toplamından daha kısa olamaz.
Bir etikete sağ tıklayarak zaman çizelgesini tam olarak o görevin süresine zoomlayabilirsiniz.
Bilgi miktarı bunaltıcıysa, zaman çizelgesini filtrelemek için Gruplar veya İplikler menüsünü kullanın. Örneğin, ana iplikte yalnızca Render görevlerini görmek isteyebilirsiniz.

En fazla zamanı alan görevin gerçekleştiği yere atlamak için CtrlF (⌘F) tuşlarına basın. Örneğin, computeLightingPerform her istemci karesinde çalışır. 128 kareli bir yığında arama yaparsanız, tamamlanmasının en uzun sürdüğü kareye geçiş yapabilirsiniz.
İplikler
Birçok programda olduğu gibi, Roblox da görev dizilerini aynı anda gerçekleştirmek için birden fazla iplik kullanır. MikroProfiler, zaman çizelgesinin sol tarafında iplik adını gösterir.

Üç önemli iplik türü vardır:
Ana ("RBX Ana"): CPU tabanlı render görevlerini üstlenir. Giriş işlemlerini, Humanoids, animasyonları/tweener'ları, fizik sahipliğini, sesleri ve bekleyen script resume'ları işler. Ayrıca Studio arayüzlerini günceller ve diğer iplikleri koordine eder.
İşçi ("RBX İşçi"): Ana ipliğe ağ oluşturma, fizik ve yol bulma konularında yardımcı olur. Modern CPU'lardaki çekirdek sayısı göz önüne alındığında, muhtemelen her an birçok işçi ipliği vardır ve bunların çoğu 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: Bilgi, ana iplikten render modellerini güncellemek için kullanılır.
- Gerçekleştirme: 2D arayüzler de dahil olmak üzere render komutları verir.
- Sunma: GPU ile senkronize olur.
Özel Script Profilleri
Eğer betikleriniz karmaşık görevler gerçekleştiriyorsa, kodun kritik bölümlerini profillemek için debug.profilebegin() ve debug.profileend() ile kodu sarmalayarak bu işlev çağrıları arasındaki her şeyi zamanlayabilir ve MikroProfiler zaman çizelgesinde bir etiket oluşturabilirsiniz.
local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Sert Çalışma")
-- Örnek sert çalışma: iki değişkeni 200.000 kez yer değiştirme
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örevlerle karşılaştırıldığında çok fazla işleme süresi kullandığını anlayabilirsiniz.
Kare Verilerini Kaydet
Bir grup kare verisini daha sonra incelemek veya başkasıyla paylaşmak istiyorsanız, Dosyaya Kaydet butonunu kullanın. MikroProfiler, kare verilerini microprofile-<tarih>-<saat>.html adlı bağımsız bir HTML dosyasına kaydeder.

Masaüstü istemcisi veya Studio'da, Dump menüsünü kullanın. Her iki durumda da, MikroProfiler dosyayı otomatik olarak Roblox günlükleri dizinine kaydeder:
Windows'ta, %LOCALAPPDATA%\Roblox\logs dizinini kontrol edin.
Evrensel Windows Platformu (UWP) uygulamasını kullanıyorsanız, \Users\<kullanıcı_adı>\AppData\Local\Packages\ROBLOXCORPORATION.ROBLOX_<hash>\LocalState\logs\ dizinini kontrol edin.
macOS'ta, ~/Library/Logs/Roblox dizinini kontrol edin.
Sunucuyu Profil Oluştur
İstemciyi profil oluşturmanın yanı sıra, sunucu etkinliğinin kısa dump'larını yakalayabilirsiniz:
Masaüstü istemcisinde, düzenleme izinleriniz olan bir oyuna katılın.
Geliştirici Konsolu'nu CtrlF9 (⌘F9) tuşlarıyla açın.
Aşağı açılır menüde MikroProfiler'ı seçin.
Sunucu sekmesinde, yakalamak istediğiniz kare sayısını belirtin (maksimum 60) ve yakalamaya başlamadan önce gecikme süresini (maksimum 4 saniye) belirleyin.
Sunucu kaydı başlat butonuna tıklayın.

Birkaç saniye sonra, Geliştirici Konsolu dosya yolunu sağlar; bu yol, standart dump ile aynı yoldur.
Sadece Web'e Özel Özellikler
MikroProfiler'ın iki kullanıcı arayüzü vardır: web arayüzü (mobil ve dump'lar) ve masaüstü arayüzü (istemci ve Studio). Web arayüzünü mümkün olduğunca kullanmanızı öneririz. Genel olarak, ikisi benzer şekilde çalışır, ancak web arayüzünde birkaç ek özellik 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 bar grafi içerisinde daha parlak kareler, daha yüksek bellek tahsisi anlamına gelir.
- Önizleme çubuğundaki daha açık kısımlar ve zaman çizelgesindeki daha açık etiketler, daha yüksek bellek tahsisine sahip kareleri gösterir.
- X-ray modunda, tahsislerin toplam boyutunu göstermek için C tuşuna basın; bu, tahsislerin sayısının yerine geçer.
CPU veya bellek alev grafiği dışa aktarmak için Dışa Aktar menüsünü kullanın; bu, dump'daki tüm çağrı yığınlarını toplayan, üst çocuğu hiyerarşisini koruyan ve sürelerine göre boyutlandıran özel bir görselleştirmedir. Alev grafikleri, kare süresi hedeflerinizi kaçırmayan (ve dolayısıyla fark edilmesi zor olan) görevleri belirlemek için özellikle faydalıdır, ancak işlem süresi o kadar önemli hale gelir ki sıkça çalıştırılırlar.

Ayrıca, Studio'da alev grafikleri oluşturabilirsiniz; ancak yalnızca betikler için (çalışma süresi ve bellek tahsisleri). Web tabanlı alev grafikleri ile karşılaştırıldığında, Studio'daki alev grafikleri yukarıdan aşağıya doğru olup, çok daha uzun yakalama sürelerini destekler.

Web arayüzüne ikinci bir dump dosyasını sürükleyip bırakarak bir fark alev grafiği oluşturun; bu, zamanla oyununuzun performansındaki iyileşmeleri veya bozulmaları belirlemenize yardımcı olabilir. Yeni bir HTML dosyası dışa aktarmak için Birleştir ve Karşılaştır seçeneğine tıklayın.

Fark alev grafiği, daha fazla CPU veya bellek kullanan dump'ı (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ıklayıp sağ alt köşede bir çizgi grafiğine ekleyin. Grafik, her çerçevede görevin ne kadar sürdüğünü gösterir. Bu grafikle, oyununuzdaki 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çili çerçeve aralığı grafikte yeşil ile vurgulanır. Ayrıca, bu grafikte herhangi bir yere tıklayarak ana profil görünümünü o belirli çerçeveye yeniden merkezleyebilirsiniz; bu, ayrıntılı görünümde zirveleri bulmak için faydalıdır.