Giriş sunucusunu oyun sunucusundan uzak tutmalı mıyım?


15

Bir MMO sunucusu yapmayı düşünüyorum ve diğer oyunların ağlarını nasıl yapılandırdığını inceledim. Fark ettiğim şeylerden biri, her zaman bir Giriş sunucusu ve ardından oyun sunucuları olmasıdır.

Hala yapmam gerekip gerekmediğine karar veriyorum, ama önce bazı görüşler duymak istiyorum. Bunun avantajları nelerdir ve oturum açma sunucusu oturum açma işlemlerini gerçekleştirmek için oyun sunucusu ile nasıl iletişim kurar?


1
"MMO'larda yük dengelemesi nasıl sağlanır?" ilginç olabilir: gamedev.stackexchange.com/q/5956/450
Hendrik Brummermann

Yanıtlar:


15

Bunun çoğunlukla giriş ve oyun kullanımının mantıksal olarak az ya da çok bağımsız olmasından kaynaklandığına inanıyorum, bu nedenle genellikle daha iyi ayırma, daha kolay bakım ve ölçeklenebilirlik için ayrı tutulurlar. Farklı fiziksel sunucularda yer almaları gerekmez, aynı makinede olduğu gibi bağımsız hizmetleri de çalıştırabilirler. Trafik çok büyürse, giriş sunucusu kolayca başka bir makineye taşınabilir.

Ayrıca, oturum açma sunucuları olası bir saldırı vektörüdür, bu yüzden onları güvenlik açısından ayırmak iyidir.

Dahili olarak, farklı sunucu tarafı hizmetler, aynı makinede veya kümedeki başka bir makinede olsun, birbirleriyle iletişim kurmak için normal soketler kullanabilir. Alternatif olarak, her kullanıcı için 'oturum açmış' işaretini korumak için bir veritabanı sunucusu kullanılabilir.


Çoğu zaman gameserver db ve loginserver db içinde böyle bir bayrak görüyorum, böylece giriş sunucusu birbirlerine karşı kontrol edebilir ve eğer logindb! = Gamerserverdb kullanıcı oturumunu kapatır.
daemonfire300

10

MMO'ların geliştirilmesinde çok önemli bir husus, ölçeklenebilirlik elde etmek ve yük dengelemeye izin vermektir.

Kimlik bilgilerini, yasak durumunu, son başarısız oturum açmalarını sayarak vb. Doğrulayarak kullanıcıların kimlik doğrulaması yapılması, oyun mantığı veya oyun verisinden hiçbir şey bilmeden yapılabilecek bir görevdir. Bu yüzden bunu kendi sunucu kümesine taşımak çok kolaydır.

Ayrıca, giriş sunucuları müşterinin iletişim kurması için iyi bilinen bir "giriş" tir. Başarılı bir kimlik doğrulamasından sonra, istemciyi oyun sunucusu kümesindeki uygun sunucuya gönderebilirler. Bu dağıtım, ağ bağlantısını doğru oyun sunucusuna ileterek veya istemciye doğru oyun sunucusuna yeni bir bağlantı açmasını söyleyerek yapılabilir.

Erken dağıtım için sisteminizdeki kesintileri düşünmelisiniz. Bir sunucuda birkaç parça çalıştırmak çok kolaydır. Ancak tek bir birim olarak geliştirilen şeyleri bölmek oldukça zordur.


2

Eski bir WoW oyuncusu olarak, deneyimim giriş sunucusunun her zaman zincirdeki en zayıf halka olmasıydı.

Dünya sunucuları, olağanüstü yükü (örneğin, yeni genişletme paketi sürümleri) bile oldukça iyi idare ediyordu.

Ancak giriş sunucuları hiç bu kadar iyi başa çıkmadı ve dünya sunucuları iyi durumdayken sık sık kapalı olurdu. (bir baskın / zindanda bağlantıyı kaybederseniz, içeri giremezsiniz, ancak diğer oyuncular sizi bekliyor demektir!)

Ve şimdi WoW giriş sistemi Battle.Net ile birleştirildiğine göre, WoW ağır yük altındayken Starcraft 2 kullanılamaz hale gelebilir (Cataclysm başlatıldığında birkaç saat oldu)

Dolayısıyla, çok sayıda kullanıcıya sahip olacak bir oyun oluşturuyorsanız, giriş sisteminin ölçeklenebilirliği ve performansı da çok önemlidir.


1
Sanırım giriş sunucuları parolalara kaba kuvvet saldırıları için birincil hedef, bu yüzden oldukça yük biraz başa çıkmak zorunda. Özellikle oyun o kadar popülerse, saldırganlar kullanıcı adlarının normal rastgele tahminine ek olarak botnet (ip adresi başına hız sınırlamasını önlemek için) kullanmaya başlar.
Hendrik Brummermann

Giriş yapmamak ve bir oyuncuyu dünyaya yerleştirmek için birden fazla neden olabilir. Oturum açma sunucuları / hesap veritabanı olabilir. Ancak, oyuncu bilgilerinin veritabanından yüklenememesinden kaynaklanabilir. Ya da oyuncuların dünya sunucularına, sohbet sunucularına, dağıtımını yapan sistemin başarısız olmasıyla ... Bir iç güvenlik duvarı bilinen bağlantıları işleyebilir, ancak yeni bağlantılar hakkında karar vermek için kural kümesini uygulayamayabilir. Bir oyuncuyu dünyaya oynamak, içerideyken etkileşim kurmaktan çok daha karmaşıktır.
Hendrik Brummermann
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.