Merhabalar,
LAG tahmin edeceğiniz gibi gecikme anlamındadır. Online oyunlarda ve uçakla sık yolculuk yapanlarda bu terimi sıkça duyarız.
Oynadığımız online oyunlar hatasız senkronizasyonu gerektirdiğinden eş-zamanlı görüntü ve işlemler için tüm bağlı kullanıcıların işlemleri olağan üstü bir hassasiyetle işlemek gerekiyor.
Fakat kullanıcıların çoğunluğunun internet bağlantı sorunu veya bağlı olduğumuz sunucuların ağır yük altında olması bu gecikmelere sebep verir. Bilgisayarınızın IŞIK hızında olması veya internetinizin 100mbit olması bunu değiştirmez. Bağlı parçalardan biri fire verirse bu bağlı olan diğerlerinide ekler.
Yazılımcılar gördüğüm kadarıyla kullanıcı taraflı gecikmeler için riske bağlı tahmini iyileştirmeler yapmış olsada, birden çok kullanıcının bağlantı sorunu yaşaması belirgin bir LAG meydana gelmesini sağlayacaktır.
Silkroad'da savaş kaydı yaptırmanın sebebi bu LAG olayını sıfıra indirmek içindir. Savaşa katılan union-guild deki kullanıcılara üstünlük veriliyor böylece 100 lerce kişi bi ekranda savaşırken LAG a pek düşmüyoruz. Ama başka bir yerde kasmaya uğraşan kişi sık sık LAG'a giriyor. Eeee Server maalesef savaş süresince anca savaşanlara hizmet verebiliyor.
Teknik olarak bir Server'a 64 bin küsür bağlantı yapılabilir. Fakat o kadar bağlantıyı -ki Silkroad gibi bir oyun için- yürtebilmek çok zor. Bu nedenle her server max. 3-4 bin kapasitelidir.
Bir yazılımcı olarak, anladığım kadarıyla bu tip oyunlarda bir BUFFER (ara bellek) sistemi var. Hani klavyede siz hızlıca yazarsınız ama bilgisayar arkanızdan yazar harfleri. Aynı harflerin bir ara beleğer aktarılması gibi, Silkroad'daki ağ ile ilgili işlemler ara beleğe atılır cevabı alınır. Bir kaç işlemin cevabı alınmayınca -bu ne kadardır tahmin edemiyorum- DC oluruz. Çünkü, Server bizden bir süre cevap alamamıştır. Birikmiş mesejlar olmasına rağmen sağlaması yapılamamıştır.
Tabi suç biraz da bizde. :) Bizler hilebaz adamlar olarak üreticileri zorluyoruz. Basit bir işlemi maalesef SRO şifreleyerek Server'a gönderiyor. Server'da bunu açıyor. Arada bir sürü güvenlik karşılaştırmaları oluyor. Tabi bunlarda iletişimi etkiliyor.
Şimdi oyunda 8/8 bir parti kurduk. Etrafta bizden başka kimsenin olmadığını düşünelim. Bu 8 kişi dünyanın 8 farklı ülkesinden bağlı olsun. Bir de SRO Server var. Etti toplam 9 bağlantı. Bu 9 bağlantı eş-zamanlı çalışabilmesi için bağlantının ve bağlantıyı işleyen -özellikle SRO Server- bilgisayarların hasss davranması gerekiyor. Bir Wizard bir mob'a büyü attığında bunun efektini diğer kullanıcı görebilmesi için, önce Server'a xxxx nolu mob'a yyyy nolu player zzzzz skilini vuruyor diyecektir. Server skilin gücünü, ilave bufları vb. şeyleri hesaplayacak mob'a kaç K vurulması gerektiğini ortaya çıkartacak. Sonucu ise Server'a bağlı 8 player'a gönderecek ve böylece diğer kullanıcılar Wiz'in büyü attığını ve şu kadar K vurduğunu görecek. Bu işlemde kullanıcıların bağlantısı yavaş olsa pek bir sorun çıkmaz LAG yaşanmaz. SRO bunu yazılımla halleder. Ama player BUFF basacaksa ve LAG varsa sorun var demektir. Bu oyuncudan 3 ürünün bağlantısı aksarsa, bu bilgisayara bağlı sebepler veya internete bağlı sebeplerden ötürü olabilir. Bu surumda SRO server fazlaca kararsız kalacağından diğer kullanıcılarada takılarak sonuçlar iletecektir. Tahmini işlemleri daha fazla yapma riskini alamaz. Böylece belirgin LAG meydana gelecektir.
Şimdi etrafta ve bizimde az biraz görebileceğimiz başka partilerde varsa, kesin LAG olacaktır. Kaçınılmaz. Çünkü SRO diğer partilerin görüntülerini ve sonuçlarınıda bize iletecektir. Maksat eşzamanlı gerçeklik değil mi :)
Umarım az da olsa LAG konusuna açıklık getirmişimdir.
Sevgiler.