Client Optimizyasyon, DX9, FoxFS

  • Konuyu açan Konuyu açan Darqhues
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 0
  • Gösterim Gösterim 93
Bu ticaret konusu sınırlı ticaret puanı geçmişine sahiptir. İşlem öncesi kullanıcı profilindeki ticaret puanlarını incelemeniz önerilir.

Darqhues

Üye
Üye
Mesaj
86
Çözümler
3
Beğeni
35
Puan
714
Ticaret Puanı
0
Tetra Client Performans Paketi
Oyuna girişte donma, yükleme ekranında bekleme, pazarda kare düşüşü… 15 modül, hepsi define'lı.​

Merhaba arkadaşlar,

Kendi sunucumun client'ında aylardır uğraştığım performans ve kararlılık düzeltmelerini paket haline getirdim. Tahminle değil, ölçerek ilerledim: client'a donma profilleyicisi ekleyip her kareyi, her dosya yüklemesini ve her paketi logladım, darboğazı bulup düzelttim.

Ölçülen Sonuçlar
  • Pack'ten dosya okuma: dosya başına 20–85 ms → 0–2 ms
  • Yeni bir ırkın ilk kez ekranda belirmesi: 350–450 ms → 75–95 ms
  • Yükleme ekranı, ırk verisi adımı: 500–670 ms → ~70 ms
  • Karakter seçiminden oyun ekranına: ~8 sn → ~3,4 sn (sabit 3 sn seçim beklemesi kaldırılmadan önceki ölçüm)
Ölçümler tek bir test makinesinde alındı. Sonuçlar disk tipine, pack boyutuna ve haritadaki oyuncu sayısına göre değişir.

Modüller

▸ Yükleme ve Oyuna Giriş
  • Pack Isıtma (TETRA_PACK_PREFETCH): Client açılınca pack dosyaları arka planda, düşük öncelikle bir kez okunup Windows önbelleğine alınır. Oyun içindeki model/doku okumaları diskten değil RAM'den yapılır.
  • Tek Adımlı Pack Arama (TETRA_PACK_LOOKUP_FIX): Dosya başına 4 FoxFS çağrısı ikiye iner. Olmayan dosyalar önbellekte tutulur, her spawn'da tekrar aranmaz.
  • İhtiyaç Anında Hareket Yükleme (TETRA_LAZY_ALL_MOTION): Bir ırk ilk göründüğünde bütün hareket dosyaları (dans, balık, tüm silah modları, beceriler) yükleniyordu. Artık sadece bekleme/yürüme/koşma hemen yüklenir, gerisi ilk oynatıldığında.
  • Ertelenmiş Hareket Önbelleği (TETRA_DEFER_MOTION_CACHE): Yükleme ekranında 4 ırkın yüzlerce hareket dosyası tek tek yükleniyordu. Artık oyun içinde, kare başına ayarlanabilir bir bütçeyle yükleniyor.
  • Hızlı Karakter Seçimi (TETRA_FAST_SELECT): "Başlat"tan sonraki sabit 3 saniyelik Python beklemesi 0,3 saniyeye iner.

▸ Kare Hızı
  • Toplu Yazı Çizimi (TETRA_TEXT_BATCH): İsim, pazar başlığı, sohbet ve arayüz yazılarında her harf ayrı çiziliyordu. Aynı font dokusundaki harfler artık tek komutla çiziliyor.
  • SpeedTree Yaprak Optimizasyonu (TETRA_SPEEDTREE_LEAF_FIX): Aynı detay seviyesindeki ağaçlar için yaprak verisi kare başına bir kez hesaplanır.
  • Performans Düzeltmeleri (TETRA_CLIENT_PERF): Üst üste kare atlama sınırı, kaynak taramasının seyreltilmesi, bulunamayan ırk önbelleği, kapalı mini haritanın güncellenmemesi, oto avda boşuna hedef aramanın kısılması.
  • Arayüz Python Hızlandırma (TETRA_UI_PY_FAST, isteğe bağlı): Her karede, OnUpdate/OnRender'ı olmayan pencereler için Python'a boşuna girilmez.

▸ Kararlılık ve Bellek
  • Bellek Sızıntısı Düzeltmeleri (TETRA_CLIENT_LEAK_FIX): Pack'ten okunan her dosyanın belleği hiç geri verilmiyordu. Uzun oturumda RAM'in şişmesi biter.
  • Ağ Akışı Düzeltmesi (TETRA_NETSTREAM_FIX): Gönderme tamponunun her seferinde baştan şifrelenmesi ve "soket meşgul" durumunun hata sayılması düzeltildi.
  • Client Hata Düzeltmeleri (TETRA_CLIENT_BUG_FIX): Çift silme, boş işaretçi, sınır dışı erişim, sıfıra bölme ve Python referans sayacı hataları.

▸ Görsel Düzeltmeler
  • İsim ve Pazar Etiketi Kırpma (TETRA_TEXTTAIL_CLIP_FIX / _RANGE_FIX): Kamera uzaklaşınca ekranın tepesinde yanıp sönen isimler, arkadaki pazar isminin önde görünmesi ve ufuktaki sohbet balonları düzeltildi.
  • Sohbet Penceresi (TETRA_CHAT_INSTANT_ALPHA): Pencere büyütülünce satırların geç belirmesi ve üstteki boş şerit düzeltildi.

▸ Geliştirici Aracı
  • Donma Profilleyici (TETRA_FREEZE_PROFILER): 50 ms'yi aşan kareleri bölüm bölüm, yavaş dosya/efekt yüklemelerini ve yavaş paketleri dosya adı ve paket numarasıyla loglar. Yukarıdaki ölçümlerin hepsi bununla alındı. Kendi sunucunuzdaki donmayı tahmin etmeden bulursunuz.

Kurulum ve Uyumluluk
  • C++ client kaynağı gerekir (DirectX 9, gömülü Python 2.7, Granny).
  • Pack modülleri FoxFS içindir.
  • Her modül kendi #define'ı içinde, mevcut kodu silmeden eklenir. Define'ı kapatırsanız orijinal davranışa dönülür.
  • Sunucu tarafında değişiklik gerekmez.

Fiyat ve İletişim
Fiyat: 15.000₺
İletişim: Discord: tetra_dev
 
Geri
Üst