Karakterlerin darbe alıp savrulması (knockback) mekaniklerini kurgularken karşılaştığımız performans ve ağ trafiği sorunlarına yönelik geliştirdiğim optimize yöntemi paylaşmak istiyorum. Standart Launch Character gibi fonksiyonların sunucu yükünü %5-10 artırması ve ağ trafiğini yorması nedeniyle böyle bir yapıya geçiş yaptım.
-Sunucu Güvenliği (Anti-Cheat): Tüm itme mesafesi ve dinamik Impact Distance hesaplamaları tamamen sunucuda (Server) yapılıyor. Hile riskini minimize etmek için istemciden gelen hiçbir veri konumlama için baz alınmıyor.
-Ağ Verimliliği: Yaptığım testlerde, tek kişilik 5 dakikalık bir oyun oturumunda toplam ağ paketi trafiğini 630 KB gibi oldukça minimal bir seviyeye indirmeyi başardım.
-İstemci Tarafı Smoothing: Sunucu karakteri anında yeni konumuna ışınladığında (Teleport), istemcide oluşan "sıçrama" (jitter) etkisini yok etmek için Mesh'i geçici olarak kapsülden bağımsız (Absolute) hale getiriyorum. Bir Timeline ve Lerp yardımıyla görseli yeni konuma pürüzsüzce kaydırıyorum.
Ek Optimizasyon: Client CPU yükünü daha da düşürmek için her karede çalışan Timeline yerine, kontrol edilebilir bir Timer yapısına geçmeyi planlıyorum.
Sunucu Tarafı (Hit Hesaplama ve Teleport):
- https://blueprintue.com/blueprint/nn9s4r08/
- https://blueprintue.com/blueprint/hydnzpjr/
İstemci Görsel Kaydırma (Timeline & Absolute Mesh):
- https://blueprintue.com/blueprint/bg191m28/
- https://blueprintue.com/blueprint/elgj7z0w/
Videonun 0:16 saniyesinde yavaşlatılmış çekimde pürüzsüzleşme farkı net olarak görülmektedir.
Video: https://streamable.com/1rsdtu
-Sunucu Güvenliği (Anti-Cheat): Tüm itme mesafesi ve dinamik Impact Distance hesaplamaları tamamen sunucuda (Server) yapılıyor. Hile riskini minimize etmek için istemciden gelen hiçbir veri konumlama için baz alınmıyor.
-Ağ Verimliliği: Yaptığım testlerde, tek kişilik 5 dakikalık bir oyun oturumunda toplam ağ paketi trafiğini 630 KB gibi oldukça minimal bir seviyeye indirmeyi başardım.
-İstemci Tarafı Smoothing: Sunucu karakteri anında yeni konumuna ışınladığında (Teleport), istemcide oluşan "sıçrama" (jitter) etkisini yok etmek için Mesh'i geçici olarak kapsülden bağımsız (Absolute) hale getiriyorum. Bir Timeline ve Lerp yardımıyla görseli yeni konuma pürüzsüzce kaydırıyorum.
Ek Optimizasyon: Client CPU yükünü daha da düşürmek için her karede çalışan Timeline yerine, kontrol edilebilir bir Timer yapısına geçmeyi planlıyorum.
Sunucu Tarafı (Hit Hesaplama ve Teleport):
- https://blueprintue.com/blueprint/nn9s4r08/
- https://blueprintue.com/blueprint/hydnzpjr/
İstemci Görsel Kaydırma (Timeline & Absolute Mesh):
- https://blueprintue.com/blueprint/bg191m28/
- https://blueprintue.com/blueprint/elgj7z0w/
Videonun 0:16 saniyesinde yavaşlatılmış çekimde pürüzsüzleşme farkı net olarak görülmektedir.
Video: https://streamable.com/1rsdtu
Son düzenleme: