Öneri Login Phase Takılması Hakkında – Işınlanma Sırasında Oluşan Bağlantı Sorunu

  • Konuyu açan Konuyu açan victory
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 21
  • Gösterim Gösterim 406
Konu sahibi önerilerinizi bekliyor. Konuya yorum yazabilirsiniz.

victory

Üye
Üye
Mesaj
29
Beğeni
11
Puan
655
Ticaret Puanı
0
İyi forumlar.

Bir süredir oyunumda yoğun olarak yaşadığım ve aslında tüm server files’larda bulunan bir takılma problemi hakkında sizlerle bazı gözlemlerimi ve çözüm önerilerimi paylaşmak istiyorum.

🔗 Örnek bir görüntü:

Linkleri görebilmek için giriş yap veya kayıt ol.


Bu problem, esasen server'ın client ile olan iletişiminin kopmasından kaynaklanıyor. Normal şartlarda, başarılı bir ışınlanma esnasında client, ışınlanılmak istenilen core’a handshake bilgilerini ve ardından login paketini yollar. Server da bu paketi alarak login işlemini tamamlar ve fazı PHASE_SELECT olarak değiştirir. Ardından gelen loading ve entergame işlemleriyle ışınlanma düzgünce tamamlanır.

🔗 Muhtemel seneryolar:
Ancak takılmaların yaşandığı durumlarda, genellikle server login işleminde hata vererek LoginFailure paketi döndürüyor ve sonrasında herhangi bir faz kapatma işlemi vs sağlamıyor. Bu durumda faz PHASE_LOGIN olarak kalıyor. Client ise bu loginfailure paketine, intrologin.py aşamasında olmadığı için yanıt veremiyor ve bekleme ekranında takılı kalıyor. "Hesabın zaten bağlı.", "Sunucuya bağlanırken hata." gibi popup mesajları da bu yüzden gösterilmiyor.

Daha da kötüsü, server herhangi bir PHASE_CLOSE ya da quit mesajı da göndermediği için iletişim tamamen kopuyor ve client orada kalıyor.

Bazı hata loglarında, server’ın ışınlanma sırasında cliente ALREADY LOG IN mesajıyla LoginFailure döndürdüğünü görebiliyorum. İşte tam bu noktada iletişim kopuyor ve takılma meydana geliyor. Ancak login işleminin neden sekteye uğradığı konusunda kesin bir fikrim yok.

🛠️ Potansiyel çözüm önerim:
Login işlemi başarısız olduğunda, LoginFailure paketi gönderilmeden önce mevcut faz sonlandırılmalı (PHASE_CLOSE) ya da doğrudan bir reconnect mekanizması tetiklenmeli. Bu sayede client boşta kalmaz, en azından düzgün bir hata mesajı ile kullanıcıya durum yansıtılmış olur.

Bu konuda daha önce karşılaşmış, çözüm üretmiş veya teknik olarak bilgisi olan arkadaşların yorumlarını bekliyorum. Yardımcı olabilecek her türlü bilgiye açığım.
Ekleme: Bu takılma sorunu farklı sebeplerden dolayı da benzer şekilde tetiklenebilir. Ben sadece benim gözlemlediğim sebebi ve tecrübelerimi paylaşmak istedim.

Teşekkürler.
 
Evet doğru, ama yanlış bilmiyorsam bu bahsettiğin olay sadece server tarafında bu şekilde işliyor. Yani mesela bir oyuncunun aniden internet bağlantısı kesildiğinde veya elektriği gittiğinde(Ki bu da aynı zamanda ani internet kesintisi demek..) bahsettiğin süre boyunca oyunda aktif görünebilir ve sonrasında diğer oyuncuların gözünden oyundan düşebilir.

Ama burada internetin değil de clientin aniden kapanması durumunda serverın bunu bazen algılayıp bazen algılamaması kafa karıştırıcı.
Bende de tam olarak olan bu aslında. Çoğu zaman sorun yok. Ama bazen bu bahsettiğim olayın aynısı yaşanıyor, "hesap zaten bağlı" dedikten birkaç saniye sonra karakter düşüyor ve ancak öyle giriş yapabiliyorum. Ve açıkçası bu standart bir sorun mu yoksa benden mi kaynaklı ondan da emin değilim. Ağ gecikmesi vb. şeyleri düşünüyorum ancak çok düşük bir ihtimal gibi geliyor bana, çünkü tamamen internetsiz ve sabit bir IP üzerinde çalışıyorum.
bende aynı sorun yok sanırsam, oyuna girip görev yöneticisinden oyunu kapattığımda tekrar bağlanırken bir sorun yaşamıyorum
 
Geri
Üst