Görsel efektler (VFX) Roblox oyunlarında çatışma hissini ve atmosferi güçlendirir. Ancak optimize edilmemiş partikül sistemleri mobil cihazlarda ciddi FPS düşüşlerinin baş sorumlusudur.
Flipbook dokuları sayesinde yüzlerce partikülü üst üste bindirmek yerine tek bir partikül yüzeyinde 64 karelik akıcı alev ve duman animasyonları üretebilirsiniz.
1. ParticleEmitter Temel Mimarisi ve Fizik Simülasyonu
Roblox motorunun partikül simülasyonunu anlamak yüksek performansın anahtarıdır:
- Simülasyon Alanı: LockedToPart özelliğiyle Dünya (World) ve Yerel (Local) alan ayrımı.
- Fırlatma Yönü ve Açısı: EmissionDirection ve SpreadAngle ile gereksiz saçılmaları engelleyin.
- Sürtünme ve İvme: Drag hava direncini, Acceleration ise yerçekimi gibi kuvvetleri donanım hızlandırmalı hesaplar.
- Boyut ve Saydamlık Dizileri: NumberSequence kullanarak yumuşak büyüme ve sönme eğrileri oluşturun.
2. Flipbook Dokuları: 4x4 ve 8x8 Sprite Sheet Animasyonları
Animasyon karelerini tek bir doku ızgarasında toplayarak aktif partikül sayısını büyük oranda düşürür:
- FlipbookLayout Düzenleri: Grid2x2, Grid4x4 (16 kare) ve Grid8x8 (64 kare) formatları.
- Hız ve Oynatma Modları: 1-30 FPS arası oynatma hızı ve Loop, OneShot veya PingPong modları.
- FlipbookStartRandom: Çoklu partikül çıkışında başlangıç karesini rastgele dağıtarak yapaylığı önler.
- VRAM Yönetimi: 8x8 ızgaralar 1024x1024 doku kullandığından mobil optimizasyonu zorunludur.
--!strict
-- Mesafe LOD'lu Luau VFX Yöneticisi
local RunService = game:GetService("RunService")
local Camera = workspace.CurrentCamera
3. Gölgelendirme Modelleri: LightEmission vs LightInfluence
Partiküllerin sahne ışığıyla etkileşimi hem görsel kaliteyi hem de GPU doldurma oranını etkiler:
- LightEmission (Eklemeli Karışım): 1 değerinde parlak neon ve alev efektleri üretir, gölge almaz.
- LightInfluence (Yaygın Işık): 1 değerinde ortam ışığını ve spot lambaları doğal şekilde yansıtır.
- Overdraw Tehlikesi: Ekranı kaplayan parıltılı partiküller mobil yongaların aşırı ısınmasına yol açar.
- Duman ve Toz Efektleri: Gerçekçi duman için LightInfluence = 1 ve LightEmission = 0 kullanılmalıdır.
4. Mobil Overdraw, Doldurma Oranı ve Partikül Bütçesi
Mobil cihazlarda kesintisiz 60 FPS için uyulması gereken kurallar:
- Ekran Kaplama Alanı: Ekranın %80'ini kaplayan dev duman bulutları küçük kıvılcımlardan çok daha ağırdır.
- Eşzamanlı Partikül Sınırı: Mobilde toplam aktif partikül sayısını 400'ün altında tutun.
- Boyut Zamanlaması: Partiküllerin boyutunu yalnızca saydamlık 1'e yaklaştığında genişletin.
- ZOffset Ayarı: ZOffset kullanarak zemin ve duvarlarda oluşan z-fighting titremesini önleyin.
5. En İyi Pratikler ve Canlıya Alma Kontrol Listesi
Roblox projelerinde üretim standartları:
- MicroProfiler ile İnceleme: Ctrl+F6 ile profili açıp `scene::render` yükünü denetleyin.
- Nesne Havuzlama (Object Pooling): Sürekli Instance.new ve Destroy çağırmak yerine emiterleri yeniden kullanın.
- Emit(n) Kullanımı: Namlu ateşi gibi ani efektler için ParticleEmitter:Emit() çağrısı yapın.
- Kullanıcı Ayarları: Düşük segment telefonlar için ayarlarda "Ortam Efektlerini Kapat" seçeneği sunun.
Frequently Asked Questions
Flipbook dokuları kullanmanın en büyük avantajı nedir?
Animasyonu doku içinde oynattığı için ihtiyaç duyulan aktif partikül sayısını %75 ila %90 oranında azaltır.
Partiküller akıllı telefonlarda neden bu kadar çok kasma yapar?
Overdraw nedeniyle: mobil GPU'nun sınırlı bellek bant genişliği, üst üste binen şeffaf pikselleri defalarca hesaplamak zorunda kalır.
Emit(n) ile Enabled = true arasındaki fark nedir?
Emit(n) tek bir karede belirtilen sayıda partikülü fırlatır ve arka planda sürekli çalışmaz.
LockedToPart özelliği ne zaman kapatılmalıdır?
Roket izi veya koşu tozu gibi, kaynak hareket etse de dünyada sabit kalması gereken efektlerde kapatılmalıdır.