Greatking
Admin
Discord
greatking
- Katılım
- 12 Yıl 9 Ay 27 Gün
- Mesajlar
- 494
- Tepkime puanı
- 416
- Puanları
- 63
- Yaş
- 38
- Cinsiyetiniz
- Bay
- Şube
- Bursa
Kalabalık FiveM sunucularında performans sorunu sadece oyuncunun FPS ayarlarından kaynaklanmaz. OneSync, scope, culling ve state bag kullanımı doğru anlaşılmadığında sunucu tarafında gereksiz senkronizasyon yükü oluşabilir.
OneSync, GTA Online altyapısı üzerine kurulu özel senkronizasyon sistemiyle daha fazla oyuncunun aynı sunucuda oynayabilmesini sağlar. Bunu yaparken her oyuncuya her şeyi sürekli göndermek yerine, oyuncunun yakın çevresindeki varlıklara odaklanan bir yapı kullanır.
Culling mantığı basitçe şunu hedefler: Oyuncunun hemen çevresinde olmayan gereksiz veri istemciye gönderilmesin. Bu, özellikle çok oyunculu RP sunucularında araç, ped, oyuncu ve obje senkronizasyonu büyüdükçe daha önemli hale gelir.
Bu event'ler ilk bakışta pratik görünür; fakat kalabalık alanda her giriş çıkış için tekrar tekrar tetiklenmeleri ciddi ölçekleme maliyeti oluşturabilir. Bu yüzden her küçük durum değişimini bu event'lere bağlamak yerine, gerçekten scope değişimi gerektiren durumlarda kullanmak daha sağlıklı olur.
State bag, entity, player veya global durum bilgisini daha düzenli taşımak için kullanılabilir. Örneğin oyuncunun görev durumu, aracın özel işaretleri veya belirli bir entity üzerindeki küçük durum bilgileri için event spam'i yerine state bag yaklaşımı daha temiz olabilir.
OneSync Neyi Çözer?
OneSync, GTA Online altyapısı üzerine kurulu özel senkronizasyon sistemiyle daha fazla oyuncunun aynı sunucuda oynayabilmesini sağlar. Bunu yaparken her oyuncuya her şeyi sürekli göndermek yerine, oyuncunun yakın çevresindeki varlıklara odaklanan bir yapı kullanır.
Culling Neden Önemli?
Culling mantığı basitçe şunu hedefler: Oyuncunun hemen çevresinde olmayan gereksiz veri istemciye gönderilmesin. Bu, özellikle çok oyunculu RP sunucularında araç, ped, oyuncu ve obje senkronizasyonu büyüdükçe daha önemli hale gelir.
- Her oyuncuya tüm dünya bilgisini göndermek yerine yakın alan önceliklendirilir.
- Scope dışındaki varlıklar istemcide oluşturulmayabilir veya güncellenmeyebilir.
- Yanlış culling varsayımları bazı scriptlerde görünmeyen araç, geciken etkileşim veya hatalı event davranışına yol açabilir.
playerEnteredScope ve playerLeftScope Kullanırken Dikkat
Bu event'ler ilk bakışta pratik görünür; fakat kalabalık alanda her giriş çıkış için tekrar tekrar tetiklenmeleri ciddi ölçekleme maliyeti oluşturabilir. Bu yüzden her küçük durum değişimini bu event'lere bağlamak yerine, gerçekten scope değişimi gerektiren durumlarda kullanmak daha sağlıklı olur.
Dikkat
Scope event'lerini oyuncu sayısı arttıkça büyüyen bir maliyet gibi düşün. 20-30 kişinin aynı bölgede olduğu RP sahnelerinde gereksiz handler kullanımı sunucu tarafında hissedilir yük oluşturabilir.
State Bag Ne Zaman Daha Mantıklı?
State bag, entity, player veya global durum bilgisini daha düzenli taşımak için kullanılabilir. Örneğin oyuncunun görev durumu, aracın özel işaretleri veya belirli bir entity üzerindeki küçük durum bilgileri için event spam'i yerine state bag yaklaşımı daha temiz olabilir.
- Sık değişmeyen ama istemcilerin bilmesi gereken durumlar için uygundur.
- Aynı bilgiyi sürekli event ile göndermek yerine durum bazlı takip sağlar.
- Değerleri fazla iç içe ve büyük yapılar halinde kullanmak iyi fikir değildir.
- Gereksiz global state kullanımı da ayrı bir karmaşa yaratabilir.
Sunucu Sahipleri İçin Kısa Kontrol Listesi
- Kalabalık bölgelerde çalışan scriptleri profiler ile kontrol et.
- Her oyuncu için dönen sürekli thread'leri azalt.
- Scope event'lerini yalnız gerçekten gerektiğinde kullan.
- Durum bilgisini state bag ile daha okunabilir hale getir.
- Entity oluşturma ve silme işlerini mümkün olduğunca sunucu tarafında kontrollü yap.
- Routing bucket kullanan sistemlerde oyuncu ve entity ayrımını net planla.
Resmi Doküman
Resmi sayfaResmi kaynak: docs.fivem.net