- 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ı.
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)
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