Oyun Sunucusu Sorum var
6
●67
- Kabul Edilen Cevap
- 1 Beğeni
-
- 05-02-2021, 13:39:13Bence sürekli sorgu yapmanız bir yavaşlığa neden olacaktır. Bilgileri önbellek (cache) yöntemi ile bir süreliğine tutup ardından veritabanına yazdırmanız daha iyi ve hızlı olacaktır diye düşünüyorum.
- 05-02-2021, 13:44:55Hocam tam anlayamadım. Simdi clinet tarafından bana kurulan lobinin id si ve icerideki kisilerin userid si geliyor userid sayısı sürekli değisebilmekte. Birde oyun icine gelince bir kisi haraket edince haraket kordinatlarını servera yollayıp ordan okuyorum sürekli olarak. Cache tam olarak ne işe yarayacakVodkaKarpuz adlı üyeden alıntı: mesajı görüntüle
- 05-02-2021, 15:46:28Bu cevap, konu sahibi tarafından kabul edilebilir bir cevap olarak işaretlendi.Açılan her lobiyi bellekte(RAM) tutabilirsiniz ve bellekte olan lobi id ile user idlerini sürekli olarak tüm oyunculara ileteceğiniz için performans kaybı yaşamazsınız. Tek sorun sunucu her kapanıp açıldığında sıfırlanması olur. Koordinat kısımları önemli ise giriş çıkış,çökme gibi durumlarda koordinatları ve diğer almanız gereken parametreleri veritabanına yazdırırsınız.insolitax adlı üyeden alıntı: mesajı görüntüle
Lobiler sabit bir veritabanı içinde ise sunucuyu başlattığınızda içindeki veriyi yine belleğe yazdırıp bellek üzerinden okuma yapılması yine performans elde edersiniz.
veri tabanını nerede ağırlıklı kullanırsınız. Sabit verilerde(Eşya,yaratık vb.), Karakterde ise yetenek,para birimi gibi yerde veri tabanında saklanması gerekenleri belirleyip saklamanız gerekiyor.
Hepsinden önce değer,referans bellek yönetimi konularına hakim olmak gerekiyor. - 05-02-2021, 15:50:50Bahsettiğiniz bellekte yer tutma stack ve heap bellek alanlarından bahsetmiyormusunuz. Zatrn atafiğimız değiskenler bellekte heap veya stack bellek alanında tutuluyor türüne göre . Benim farklı olarak ne yapmam lazım.TUROTTO adlı üyeden alıntı: mesajı görüntüle
Demek istediğiniz idleri sürekli bir degiskenr atamam mı? - 05-02-2021, 15:59:35x bir oyuncu giriş yaptığında accountid/characterid gibi veriyi Data Structures / Dictionary yardımı ile giriş yaptığı tcp portu ile birlikte belleğe aldınız diyelim. Giriş yapan karakterin id'sini var olan yada oluşan lobiye çekip oyucunun orada olduğunu bilirsiniz. Sürekli değişiklik yapmanıza gerek kalmaz. Karakter lobiden çıkınca sil / girince ekle ve bunları tüm oyunculara ilet yazmanız yeterli. Başka bir şey yapmanıza gerek yok.insolitax adlı üyeden alıntı: mesajı görüntüle
C# - Dictionary Sınıfı | Serdar Yılmaz (srdrylmz.com) - 05-02-2021, 16:01:28Çok teşekkürler mükemmelsiniz.TUROTTO adlı üyeden alıntı: mesajı görüntüle