Performans için Tasarım

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Performans için tasarım, tüm deneyiminizi inşa ettiğinizde birkaç en iyi pratikleri takip etmek demektir. Geliştirme sürecinde performans sorunlarını bulmak ve düzeltmek ile kıyasla, erken tasarım yapmak çok sayıda zaman ve çaba tasarrufu sağlayabilir.

Düşük Ende Devices

Düşük kademeli cihazlar, özellikle mobil cihazlar, önemli bir hafıza sınırına sahiptir ve hafıza dışı (OOM) hatalar nedeniyle çökmelere meyillidir:

  • Düşük kademeli cihazları desteklemek istiyorsanız, belirli performans özelliklerine sahip bir başlangıç ​​uzayı cihazlarını seçin, deneyinizin performansını geliştirme sürecinde onlar üzerinde test edin ve çerçeveli kullanımı yakından takip edin. Deneyinizde problem alanlarını bulduğunuzda, bu alanlar cihazlarınızın sınırlarını belirlemek için kullanılır.

    Örneğin, Render (Shift</

  • Roblox Studio'daki cihaz emülatörü, görünüm oranını ve denetimlerkontrol etmek için yararlıdır, ancak hafıza kullanımı için doğru değildir; Studio'da bir deneyimi test ettiğinizde, sunucu ve istemciyi yükler, bu yüzden hafıza kullanımı çok daha yüksektir.

Daha genel olarak, çeşitli cihazlarda test etmek, deneyiminizin görsel ve performans beklentilerinize uygun olduğunu görmenize yardımcı olabilir. Daha ayrıntılı bir örnek, nasıl düşündüğünüzü düşünmek için deneyiminizi optimize etmeniz gerektiğini gösteren gerçek dünya inşa etme ve kodlama optimizasyonu .

Header image for Real World Building and Scripting Optimization.

Yayın ve Işınlanma

  • Paralel yüklenmesi Roblox 3D içeriğini dinamik olarak yükleme ve indirme işlemlerini sağlar ve büyük ölçekli deneyimler için harika bir seçendir. Paralel yüklenmesi, katılma zamanını artırır, hafif hafıza kaynağını azaltır ve kare hızlarını artırır. For more information, see Performansı Artırma .

  • Büyük yerleri daha yönetilebilir yerler haline getirin ve Işınlanma kullanarak oyuncuları aralarında hareket ettirin.

Malzemeler ve Kopyalama

  • Yerleşik malzemeler, özel kullanıcı ağlarından daha az hafıza kullanır, ancak sanatçı vizyonunuzu yakalayabilir. Mümkün olduğunca malzemeleri kullanmaya çalışın, böylece deneyiminizin merkezinde olan görseller için hafıza bütçesini koruyabilirsiniz.

  • Varlıkları oluştururken, onları paketler haline çevirin. Paketler iş akışınızın bir parçası olarak yapmak, duplik varlıkların farklı ID'lerinde ortak sorunun ortadan kalkmasına yardımcı olur ve sözleşme imzalamabozabilir.

  • Meshes veya tekstürleri eklediğinizde, onları çoğaltmak yerine kullanın ve tekrar kullanın. Boyutlandırarak, döndürerek ve üst üste çizerek, çok az çizim çağrısı gerektiren zengin, çeşitli ortamlar oluşturabilirsiniz. For more information, see Duplicate Texturesi Kaldırma .

Şeffaflık

  • 0 (görünür) ve 1 (görünmez) dışındaki transparency değerlerini önlemekten kaçının. kısmen transparency overdraw ile ilgili olarak özellikle dikkatli olun.

Kodlama

  • Mümkün olduğunda, per-frame hesapları yerine etkinlik tabanlı kod yazın. 60 FPS'de, her kare için toplam bütçe 16.67 milisaniye (ms) dir. Görünüşte daha az per-frame hesapları bile bu bütçenin önemli bir kısmını kullanabilir.

  • Uzun süreli kodu yönetilebilir parçalara ayıklayabilirsiniz. Bir kod parçası 100 milisaniye sürer ve her kareyi çalıştırır, deneyiminiz sadece 10 FPS'de çalışabilir. Eğer deneyiminizin her saniye 60 FPS'de çalıştığını seçerseniz, 16

    Bunun yerine, kodu nasıl parçalayabileceğinizi araştırın. Belki her kare 5 ms iş yapabilirsiniz, task.wait() kullanın ve 60 FPS'yi korurken her 20 kareyi tamamlayın. Parallel Luau, bazen Paralel Luau olarak adlandırılır, da yardımcı olabilir.

  • Bir etkinliğin başladığında işlevlerin şu anda gerekli olmayan şekilde çağrılmasını önlemek için RBXScriptConnection:Disconnect() yöntemini kullanın.

  • Değerlere her zaman aynı yöntemi çağırmayın. Yöntemi bir kez çağırın, değeri saklayın ve daha sonra gerektiğinde yeniden yazın.

  • Her şeyi ReplicatedStorage içinde depolamayın. Müşteri, bu kapsayıcı depolamanın içindeki her şeyi yükler. Bunun yerine, müşterinin erişime ihtiyacı olmayan herhangi bir şey için ServerStorage kullanın.