Aşağıda, MicroProfiler içindeki yaygın etiketlerin kategorilere göre gruplandığı bir liste bulunmaktadır. Etiketler, görevler, zamanlayıcılar, kapsamlar, süreçler ve etiketler olarak da adlandırılmaktadır. Her neyse, bunlar bir iş birimini temsil eder.
Bu etiketleri anlamak, oyununuzdaki sorunlu kodları tanımlamanıza yardımcı olabilir. Tablolar, etiket etiketini, açıklamalarını ve performansı artırma ve oyununuzu optimize etme konusunda tavsiyeleri içermektedir.
Uyku
İş parçaları aktif olarak görev yapmadığında, uyku durumuna girerler ve iş parçalarının ne kadar süre uyuduğunu göstermek için etiketler kullanılır. Herhangi bir anda, çoğu işçi iş parçalarının uyku durumunda olması son derece yaygındır.
Navigasyon
| Etiket | Açıklama | Performans tavsiyesi |
|---|---|---|
| rasterizeTile | Bir yol bulma isteği için gereken navigasyon karolarını günceller, genellikle bu karoların güncel olması gereken computePath ile takip edilir. Ana iş parçacığında NavigationJob/preprocess'i takip eder. | Yol bulma karo geçersiz kılmalarının sayısını azaltın, çünkü bu, bu yolların yeniden hesaplanmasını gerektirir. Bu, geçersiz kısımların hareket etmesinden kaynaklanır. |
| computePath | Genellikle rasterizeTile'dan sonra yolları hesaplar. | Path:ComputeAsync() çağrılarının sayısını ve dünya boyutlarını azaltın. Benzer konumlardan başlayıp bitirmesi beklenen birden fazla ajan için yolları yeniden kullanmayı deneyin. |
| preprocess/getPrimitivesOverlapping | Her yol bulma karosu için dünya geometrisini toplar ve rasterizasyon görevlerini yol bulma iş parçacığı tarafından yürütülmek üzere planlar. | Parça sayısını azaltın. |
Animasyon ve insansı varlıklar
| Etiket | Açıklama | Performans tavsiyesi |
|---|---|---|
| Simulation/gameStepped | Humanoids, Animations gibi oyun spesifik nesnelerin işlenmesi ve kalp atışı geri çağırmaları. | Aşağıdaki gameStepped etiketlerine bakın. |
| Simulation/gameStepped/stepHumanoid | Humanoid durum değişiklikleri ve hareket. | Gerek duymayan NPC'lerde Humanoids sayısını azaltın veya Humanoid durumlarını devre dışı bırakın, örneğin Climbing veya Swimming. Humanoid.StateChanged veya Running veya Died gibi durum değişikliklerine geri çağırmaları azaltın. |
| Simulation/gameStepped/stepAnimation | Animators, mevcut oynatılan animasyonlarda ileri adım atar. | Bu adımın iş yükünü azaltmak için Animators veya animasyonlu eklemlerin sayısını azaltın. AnimationTrack.KeyframeReached veya AnimationTrack.Ended gibi animasyon olaylarına geri çağırmaları azaltın. |
| Simulation/gameStepped/RunService.Stepped | RunService.Stepped olayına bağlı işlevleri çalıştırır. | Bu olaya bağlı işlevlerin sayısını veya iş yükünü azaltın. Pahalı hesaplamaları ertelemeyi veya değiştirmeyi veya hesaplamayı birden fazla çerçeveye yaymayı düşünün. |
Ses
| Etiket | Açıklama | Performans tavsiyesi |
|---|---|---|
| Sound | Akustik simülasyonu işler ve aktif oynatmadaki sesleri günceller. | Aşağıdaki Sound etiketlerine bakın. |
| Sound/stepInstances | Çalışma alanındaki aktif seslerin ses seviyesini günceller. | Aktif oynatmadaki seslerin sayısını azaltın. |
Ağ
| Etiket | Açıklama | Performans tavsiyesi |
|---|---|---|
| Net PacketReceive | Ağ paketlerini alır. Eğer birçok nesne veya olay çoğaltılıyorsa, bu adım daha uzun sürer. | Daha az nesne veya olay çoğaltın. |
| Replicator/ProcessPackets | Ağ paketlerinin içeriğini işler, örneğin hareket, olay çağrıları ve özellik değişiklikleri. | Daha az veya daha küçük nesnelerin çoğaltılmasını azaltın veya bunu kademeli adımlarla yapın. Harita boyutu arttıkça artabilir, çünkü daha büyük haritalar genellikle daha fazla genel aktiviteye sahiptir. |
| Allocate Bandwidth and Run Senders/Dispatch Physics Senders and TouchSenders | Oyundaki aktivite hakkında veri gönderir. | Hareket eden nesnelerin ve/veya dokunuşların sayısını azaltın. Aşağıdaki bölümlere bakın. |
| Allocate Bandwidth and Run Senders/Dispatch StreamJob | Akış özelliğinde belirli istemcilere karşılık gelen belirli bölgeleri gönderir. | Minimum ve hedef akış yarıçaplarını azaltın. |
| Allocate Bandwidth and Run Senders/Dispatch Data Senders | Özellik değişikliklerini, uzaktan olay çağrılarını, Humanoid durum değişikliklerini, animasyon durum değişikliklerini ve yeni örneklerin çoğaltılmasını gönderir. | Veri modeline çoğaltılan değişikliklerin sayısını azaltın. |
| Replicator SendCluster | İstemcilere Terrain verilerini gönderir. | Terrain değişikliklerinin miktarını veya boyutunu azaltın. |
| ModelCompleteness Mega Job | Sunucuya özel: tamlık, içsel bir kavramdır. Modeller tamamen gönderildiğinde, model tamlık olayları gönderilir. | Daha az veya daha fazla örnek ekleyin veya çıkarın. |
| deserializePacket | Düşük seviyeli ağ paketi işleme. Replicator/ProcessPackets için hazırlık yapar. | Daha az veya daha küçük güncellemeler gönderin. |
Görselleştirme
| Etiket | Açıklama | Performans tavsiyesi |
|---|---|---|
| Prepare | Ana iş parçacığından bilgi toplanır ve görselleştirme için kullanılan çeşitli veri yapıları güncellenir. | Aşağıdaki Prepare etiketlerine bakın. |
| Prepare/Pass3dAdorn | Metin etiketleri gibi çeşitli nesne süslemelerinin görselleştirilmesini yönetir. Humanoid etiketleri için görünmezlik ile birlikte, bu adım, bu tür nesnelerin görünür olup olmadığını belirlemek için ışın izlemeyi içerir. Bu, hata ayıklama görselleştirmelerini kolaylaştırmak için saydam olmayan parçaları içerir. | Görünür süslemeli nesnelerin sayısını azaltın, örneğin BillboardGuis, Humanoid isim/sağlık etiketleri vb. Görünür parça sayısını azaltın. |
| Prepare/Pass2d | 2D UI görselleştirmesini (hem oyuncu hem de Roblox UI) hazırlar. | UI öğelerinin sayısını veya karmaşıklığını azaltın. |
| Prepare/UpdatePrepare/updateInvalidParts | Bir özelliği değiştirilen veya eklenen parçaları günceller. | Dünyadaki özellik değişikliklerinin sayısını azaltın. Bir betik büyük bir nesne özellikleri kümesini güncellerse, bunu çerçevelere yayarak bölün. |
| Prepare/UpdatePrepare/updateInvalidatedFastClusters | Humanoids ve skinli MeshParts'i görselleştirmek için kullanılan "FastCluster" geometrilerini hazırlar. Etiketler, güncellenen parça, kenar ve kenar boyutunu belirtir. | Humanoids veya skinli MeshParts modellerine görsel değişiklikleri azaltın. |
| Prepare/UpdatePrepare/updateDynamicParts | Görselleştirme için Beams, ParticleEmitters ve Humanoids'i hazırlar. | Görünür Beams, ParticleEmitters ve Humanoids sayısını azaltın. |
| Prepare/UpdatePrepare/updateInstancedClusters | Parçalar gibi örneklenmiş görselleştirme kullanan geometrileri günceller. Etiketler Clusters ve Instances, güncellenen sayıyı belirtir. | Parçanın sınır kutusunu dolaylı olarak güncelleyen iş yükünü azaltın, örneğin BasePart.CFrame, BasePart.Size veya Motor6D.Transform. Bone.Transform gibi yaratıcı özellik güncellemeleri yardımcı olabilir. |
| Perform | Gerçek görselleştirme komutlarının oluşturulup verildiği yer. | Aşağıdaki Perform etiketlerine bakın. |
| Perform/fillGuiVertices | Görselleştirme için UI kenarlarını hazırlamak üzere tamponları doldurur. gui count etiketi, çerçevede görünen LayerCollectors sayısını belirtir. | Maliyet yüksekse, UI öğelerinin sayısını, yoğunluğunu ve kapladığı alanı azaltın. Eğer çok fazla Process GuiEffect etiketi varsa, UIGradient ve UICorner kullanımını azaltmayı düşünün. |
| Perform/Scene/queryFrustumOrdered | Görünmeyen nesnelerin render edilmemesi için frustum culling uygular. | Eğer yüksek bir maliyet varsa, bu birçok öğe olduğu anlamına gelir. Belki de tek bir ağın daha fazla detaya sahip olduğu daha büyük ağlar kullanmayı düşünün, birçok küçük bireysel parça yerine. |
| Perform/Scene/computeLightingPerform | Kameranın yakınındaki aydınlatmanın hesaplanması. | Işık kaynaklarının sayısını manipüle edin veya kamerayı daha az hareket ettirin, böylece aydınlatmayı yeniden hesaplamak için geçen süreyi azaltın. |
| Perform/Scene/computeLightingPerform/LightGridCPU | Düşük kalite seviyelerinde kullanılan voxel aydınlatmasını günceller. | Parça işgalini güncellemek çok uzun sürüyorsa, daha düşük çözünürlüklü geometriler kullanmayı, parça sayısını azaltmayı veya parçaları sabitlemeyi düşünün. Diğer etiketler çok uzun sürüyorsa, ışık sayısını azaltmayı ve hareket eden ve işgali geçersiz kılan nesneler için gölge oluşturmayan geometriler kullanmayı düşünün. |
| Perform/Scene/computeLightingPerform/ShadowMapSystem | Gölge haritalarını günceller. Kalite seviyeleri 4'ün altında gerçekleştirilmez. | Işık sayısını azaltın. Daha az önemli örneklerde gölge oluşturmamayı sağlamak için Light.Shadows ve BasePart.CastShadow kullanabilirsiniz. Performansı artırma bölümüne bakın. |
| Perform/Scene/Glow, ColorCorrection, MSAA, SSAO ve SSAOApply | Post işleme görselleştirmesi. | Post işleme efektlerinin sayısını azaltın. Genellikle bu önemli değildir. |
| Perform/Scene/UI | UI görselleştirmesi. Id_Screen içinde, kullanılan batch, malzeme ve üçgen sayısını gösteren bir etiket vardır. | Görünür UI öğelerinin sayısını azaltın. CanvasGroups kullanmak, artan bellek kullanımı pahasına yardımcı olabilir. |
| Perform/Scene/UpdateView/updateParticles, updateParticleBoundings | Parçacık konumunu ve sınırlarını günceller. | ParticleEmitters, emisyon oranları, ömürler vb. sayısını azaltın. Yayımcıların hareketini sınırlayın. |
| Scene/Id_Opaque, RenderView/Id_Opaque | Sahnedeki genel saydamlığı 0.01 veya daha düşük olan parçalar. | Parçaların kullanımını ve yoğunluğunu azaltın. |
| Scene/Id_Transparent, RenderView/Id_Transparent | Sahnedeki genel saydamlığı 0.01 ile 1 arasında olan parçalar. | Kısmi saydamlık kullanımını azaltın. |
| Scene/Id_Decals, RenderView/Id_Decals | Sahnedeki çıkartmalar. | Karmaşık ağlarda çıkartma kullanımını azaltın. |
| Scene/Shadows | Sahnedeki gölge yeniden hesaplaması, genellikle dinamik sahnelerde ve tipik oyun oynama sırasında gerçekleştirilir. Saydamlık durumuna bakılmaksızın parçalar, çıkartmalar içerdiği varsayımıyla gölge oluşturur. Kalite seviyeleri 4'ün altında gerçekleştirilmez. | Eğer bu adım çok uzun sürüyorsa, karmaşık ağlar, yüksek kısmi saydamlığa sahip parçalar ve daha az önemli örnekler için BasePart.CastShadow'ı devre dışı bırakmayı düşünün. Çıkartma veya çıkartma gölgelerine ihtiyaç duymayan tamamen saydam parçaların BasePart.CastShadow'ı devre dışı bırakılmalıdır. Performansı artırma bölümüne bakın. |
| Perform/Present | Render komutlarını gerçekleştirmek için GPU iş parçacığına iletir. | Genel olarak sahne karmaşıklığını azaltın. Eğer bu adım uzun sürüyorsa, GPU tarafından sınırlanıyor olabilirsiniz. |
| Perform/Present/waitUntilCompleted | GPU'nun önceki çerçeveyi render etmesini bekler. | Eğer bu genellikle çok oluyorsa, o zaman render edilen şeylerin miktarı çok yüksektir. Frame Rate Manager, bunu dengelemeye yardımcı olur, ancak yüksek kalmaya devam ederse, bireysel Scene etiketlerinden gelen performans tavsiyelerini takip etmeyi deneyin. |
| LoadImage | Görüntüleri motorun kullanabileceği bir formata işler. | Büyük görüntülerin kullanımını azaltın. |
Betikler
| Etiket | Açıklama | Performans tavsiyesi |
|---|---|---|
| Render/PreRender/fireBindToRenderSteppedCallbacks | RunService:BindToRenderStep() aracılığıyla render adımına bağlı işlevleri çalıştırır. | Bu olaya bağlı işlevlerin mümkün olduğunca az iş yapmasını sağlayın. |
| Render/PreRender/RunService.RenderStepped | RunService.RenderStepped olayına bağlı işlevleri çalıştırır. | Bu olaya bağlı işlevlerin mümkün olduğunca az iş yapmasını sağlayın. |
| WaitingHybridScriptJob | Instance:WaitForChild() veya Globals.Roblox.wait() kullanarak bekleyen betikleri devam ettirir. Genellikle saniyede 30 kez gerçekleştirilir. Bu adım, bekleyen betikleri çalıştırmak için bir yürütme süresi bütçesine sahiptir. | Çok fazla bekleyen betiğiniz veya bekleme süresi uzun olan betikleriniz varsa, bu adım kısıtlanır ve tekrar çalışabilmesi için daha uzun süre bekler. Bu adımda bağlı işlevlerin veya uzun hesaplamaların sayısını azaltın. |
| GC | Luau'nun çöp toplama döngüsü. | Havuz tabloları ve diğer toplanabilir nesneler oluşturun veya geçici tablolar oluşturmayı azaltmayı deneyin. |
| Heartbeat/RunService.Heartbeat | RunService.Heartbeat olayına bağlı işlevleri çalıştırır. | Bu olaya bağlı işlevlerin sayısını veya iş yükünü azaltın. Pahalı hesaplamaları ertelemeyi veya değiştirmeyi veya hesaplamayı birden fazla çerçeveye yaymayı düşünün. |
Simülasyon
| Etiket | Açıklama | Performans tavsiyesi |
|---|---|---|
| Distributed Physics Ownership | Sunucunun veya bir istemcinin belirli örnekler üzerinde yetkiye sahip olup olmadığını belirler, örneğin parçalar. | Ağ mülkiyetini sık sık değiştiren parça sayısını azaltın, özellikle de yaygın etkileşimde bulunanlar. |
| Simulation/assemble | Fizik motoru tarafından kullanılan bağlı nesnelerin (montajların) bir ağacını günceller. | Oluşturulan veya yok edilen eklemlerin sayısını azaltın. |
| Simulation/physicsSteppedTotal/physicsStepped | Fizik simülasyonunu çalıştırır. | Fiziksel olarak simüle edilen cisimlerin sayısını ve karmaşıklığını azaltın. |
| Simulation/physicsSteppedTotal/physicsStepped/SpatialFilter/filterStep | Simülasyon adalarını günceller, parçaları ağ mülkiyetine göre düzenler, yerel simülasyon. Adalar, bağımsız olarak simüle edilebilen etkileşime girmeyen parça gruplarıdır. | Ağ mülkiyetini sık sık ayarlamaktan kaçının. Parçaların gruplarını birbirinden yeterince uzak tutun, böylece ayrı ayrı simüle edilebilirler. |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepContacts | Nesneler arasındaki temasları günceller. | Aynı anda çarpışan cisimlerin sayısını azaltın veya daha basit çarpışma kutuları kullanın. Küpler, karmaşık ağlardan daha iyidir. |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepWorld VEYA stepWorldThrottled | Bağlayıcılar, kaldırma ve Humanoids ile ilgili fizik denklemlerini çözer. Motor aşırı yüklendiğinde ve her şeyi gerçek zamanlı simüle edemediğinde, bazı adımlar kısıtlanabilir (stepWorldThrottled) ve yalnızca Humanoids gibi "gerçek zamanlı montajlar" simüle edilir. | Zamanın nereye gittiğine bağlı olarak, aşağıdaki üç aşamaya göre: stepContacts: dar faz çarpışma tespiti geometrisi testleri. Solver adımı: zamanı entegre etme ve çarpışmaları ve diğer kısıtlamaları çözme updateBroadphase: çarpışma tespiti sisteminde montajların konumlarını güncelleme ve muhtemel çarpışan dar faz çiftlerini bulma. |
| notifyMovingAssemblies | Primitiflerin ne kadar süre uyuduğunu takip etmeye yardımcı olur. | |
| Simulation/physicsSteppedTotal/physicsStepped/interpolateNetworkedAssemblies | Mevcut oyuncu tarafından kontrol edilmeyen montajları iç içe geçirir. | Bunu azaltmak için parçaların ağ sahibini mevcut oyuncuya ayarlayın; ancak bu genellikle başka yerlerde daha fazla fizik işinin yapılmasına neden olacaktır. |
| Simulation/handleFallenParts | Workspace.FallenPartsDestroyHeight'in altına düşen parçaları kaldırır. | Yıkım yüksekliğini düşürün veya yıkım yüksekliğine düşen parça sayısını azaltın. |
| Heartbeat/heartbeatInternal/workspaceOnHeartbeat/updateVisuallySleeping | notifyMovingAssemblies'in ikinci kısmı. | |
| Heartbeat/RunService.Heartbeat | Simülasyon ve betik temaslarına bağlı işlevleri çalıştırır. Mevcut açıklama, yanlış olmamak için yeterince genel. | RunService.Heartbeat'a bağlı işlevlerin sayısını veya iş yükünü azaltın. |
| worldStep/stepContacts | Fizik simülasyonunun birden fazla teması aynı anda adım atmasına yardımcı olur. | Çarpışan nesnelerin sayısını azaltın. |
| SolveBatch | Fizik simülasyonunun nesnelerin hareketlerini çözmesine yardımcı olur. |
UI
| Etiket | Açıklama | Performans tavsiyesi |
|---|---|---|
| Render/PreRender/UpdateInput | Kullanıcının son çerçeveden bu yana girdi yapıp yapmadığını kontrol eder ve tüm kullanıcı girişi ile ilgili olayları günceller ve tetikler. | Girdi alırken doğrudan çok fazla iş yapmamaya çalışın. Girdi için minimum bir işleme yapmayı düşünün ve daha büyük hesaplamalar, daha sonra gerçekleşen başka bir iş parçacığına itilmeli. |
| Render/PreRender/TweenService | TweenService kullanarak tweenlenen nesneleri günceller ve GuiObject:TweenSize() veya GuiObject:TweenPosition() gibi tamamlanma geri çağırmalarını çağırır. | TweenService kullanarak tweenlenen nesnelerin sayısını azaltın ve geri çağırmaların mümkün olduğunca az iş yapmasını sağlayın. |
| Heartbeat/TweenService | Sunucuda, TweenService, RunService.Heartbeat içinde RunService.PreRender yerine çalışır. | TweenService kullanarak tweenlenen nesnelerin sayısını azaltın ve geri çağırmaların mümkün olduğunca az iş yapmasını sağlayın. |
| Render/PreRender/UpdateUILayouts | Tüm etkin LayerCollectors üzerindeki UI öğelerinin konumunu ve boyutunu günceller. | Aşağıdaki UpdateUILayouts etiketlerine bakın. |
| Render/PreRender/UpdateUILayouts/Rebuild Z-order list | İlk renderda veya yeni bir öğe eklendiğinde, kaldırıldığında veya GuiObject.ZIndex değiştirildiğinde, UI öğelerinin iç Z-sıra listesini yeniden oluşturur (bu, GuiObject.ZIndex ile karıştırılmamalıdır). | İlk renderdan önce LayerCollectors içindeki UI öğelerinin sayısını azaltın ve içlerindeki UI öğelerinin ebeveynini ve GuiObject.ZIndex'ini sık sık değiştirmekten kaçının. Bir LayerCollector'ın sahip olduğu daha fazla öğe, performansını daha da kötüleştirir. |
| Render/PreRender/UpdateUILayouts/Layout | Bireysel LayerCollector içindeki UI öğelerinin konumunu ve boyutunu günceller. İlgili UI hakkında bilgi içeren bir etiket ve yeniden düzenlemeler, güncellemeler ve yeniden boyutlandırmaların miktarını içerebilir. | Yeniden boyutlandırılan veya yeniden konumlandırılan UI öğelerinin sayısını azaltın, örneğin UILayout tarafından yönetilenler ve TweenService, GuiObject:TweenSize() veya GuiObject:TweenPosition() ile tweenlenenler. BillboardGuis için sabit boyutlar kullanmayı düşünün. |