Normalde pek yazmam, ama bu başlığı ve altındaki mesajları görünce dayanamadım. Adeta şimdiye kadar açılan sunuculardaki genel ağırlığın ve donanım israfının özeti gibi.
Mark büyüsünün altında 50 karelik for döngüsü tanımlamak, sunucuda her mark büyüsü yapıldığında bu döngünün çalışması demektir.
Fazla eşya olan bir alanda mark büyüsü yapılsa nereden baksan 100-150 ms'lik bir kayıp yaşatır. Oyuncular bu eşya konmadan önce bölgeyi marklamış olabileceğinden gate ve recall büyülerinde de aynı kontrolün yapılacağını varsayarsak durum daha da vahim bir hal alır. Sphere'de neredeyse her komut tek thread üzerinde çalışır yani sphere bir iş bitmeden diğerine geçemez. Sunucuda bunun gibi benzer kodlar çoğalırsa bir süre sonra ister istemez sunucuda yavaşlamalar başlar.
Region tanımlamak performans açısından çok daha iyi. Eğer region tanımlanmak istenmiyorsa tek bir eşya yere atmak yerine 3-5 kare ara ile istediğiniz bölgeyi mark engelleyen eşyalarla kaplayarak mark büyüsü yapıldığında 50 kareyi taramak yerine 3-5 kareyi tarayabilirsiniz. Bunun için de atıyorum staff'a bir komut verirsiniz o komutu yazınca o bölge belirli aralıklarla anti mark eşyası ile kaplanır. Bunu da çok sık kullanırsanız sunucuya eşya sayısı olarak yük olacaktır ancak her mark büyüsü yapıldığında 50 karedeki tüm eşyaları taramaktan iyidir. Bu eşyalar da sunucuda yer kaplamasın istiyorsanız, bu eşyalar oluştuğunda pozisyonlarını veritabanına atıp eşyalara tag.nosave olacaktı sanırım bu tag'i verirseniz bu eşyalar save esnasında kaydedilmezler. Sunucu açılırken veritabanından okuyup eşyaları tekrar oluşturabilirsiniz.
Yazdığınız kodların ne kadar sürde işlendiğini görmek için konsola p# yazabilirsiniz. Sphere klasöründe her fonksiyon kaç defa çağrılmış, ne kadar zaman kaybı yaratmış, kaç ms ortalama ile çalışmış hepsini görebilirsiniz. Yavaş çalıştığını düşündüğünüz kod parçalarını ayrı function'lara bölerek bu dosyadan ne kadar hızlı çalıştıklarını görebilirsiniz.
Elbette günümüzde pek oyuncu kalmadığı için bunların bir önemi kalmadı. Kod ne kadar yavaş çalışsa da pek hissedileceğini zannetmiyorum. Ancak çok oyuncu varken de bunlara dikkat eden çok fazla sunucu olduğunu düşünmüyorum.
Devamını göster