MMORPG'ler neden hala birden çok sunucu kullanıyor?


18

MMORPG'ler, League of Legends veya hatta StarCraft 2 gibi bazı MOBA'lar genellikle sizi bir sunucu seçmeye zorlar. Genellikle ABD, AB ve SEA'dır, her yerde MMORPG'lerde bulunurlar. Bunun birkaç yıl önce gerekli olduğunu görebiliyorum, ancak şimdi "sunucu gücünüzü" sorunsuz bir şekilde ölçeklendirmenize izin veren AWS ve benzer tekliflerin ortaya çıkmasıyla, neden hala ayrı sunucular var?

Düşünce trenim şu şekildedir (örnek olarak Yıldız Savaşları: Eski Cumhuriyet kullanarak): - Her zaman bir gezegende, diğer gezegenlerden izole edilmiş bir "örnek" dir. - Bir gezegende çok fazla insan varsa, SW: TOR dünyanın yeni bir örneğini yaratır ve oyuncuları oraya koyar. - Dünyadan ayrılırsanız / örnekleri değiştirirseniz bir yükleme ekranınız vardır

Peki oyun neden bu gezegen için bir örnek oluşturamıyor. Bu örnek (ve yalnızca bu) veritabanında mevcut verilerinizi barındırır ve x oynatıcıyı yönetir. Bu örnekte x-50 oyuncuları olur olmaz, yeni bir sunucu başlatılır ve bu durumda yeni insanlar ortaya çıkar. 50 yer, grubunuza vb. Geçiş için ayrılmıştır.

Üç büyük bölgenin de gecikmeyi düşük tutması için bir örnek olabilir, ancak 140 ms'lik bir gecikmeyle (hala imho olmayan bir şey) yaşayabilirseniz, yani SEA'dan diğer oyuncularla oynamaya izin verir.

Bir örneği değiştirdiğinizde veya başka bir dünyaya seyahat ettiğinizde, mevcut sunucunuz tüm verilerinizi bir sonraki sunucuya vererek büyük bir merkezi veritabanına ihtiyacınız olmadığından emin olur. Analiz amacıyla periyodik olarak güncelleme alan bir tane olabilir.

Oturumu kapattığınızda veya sunucular bağlantıyı kaybettiğinde, veriler daha sonra verileri depolamak için optimize edilmiş büyük bir veritabanına aktarılabilir. Örnek sunucular daha sonra yüksek verim için optimize edilebilir.

Bunun işe yaramamasının belirli bir nedeni var mı? Kaçırdığım başka problemler var mı?


Bu oyunların çoğunun bunu desteklemek için motorlarının orta ve büyük bölümlerini yeniden yazmak zorunda kalacağı gerçeğine ne dersiniz? Ve bu zaman ve para daha fazla içerik eklemek için daha iyi harcanabilir.
Xavon_Wrentaile

Mevcut oyunları değiştirmeyi değil, tasarımın neden başlangıçta seçildiğini çok daha fazla öneriyorum.
mmlac

Yanıtlar:


12

MMORPG'ler, League of Legends veya hatta StarCraft 2 gibi bazı MOBA'lar genellikle sizi bir sunucu seçmeye zorlar. Genellikle ABD, AB ve SEA'dır, her yerde MMORPG'lerde bulunurlar. Bunun birkaç yıl önce gerekli olduğunu görebiliyorum, ancak şimdi "sunucu gücünüzü" sorunsuz bir şekilde ölçeklendirmenize izin veren AWS ve benzer tekliflerin ortaya çıkmasıyla, neden hala ayrı sunucular var?

AWS göründüğü kadar açık bir çözüm değildir. Bazı durumlarda şirket içi veri merkezlerini kullanmaktan daha pahalı olabilir (örneğin bir yayıncı için bunların maliyeti birden fazla üründe itfa edilebilir). Ayrıca, hassas ikili dosyaları ve günlükleri donanımın kontrolü dışında donanımda saklamak konusunda endişe olabilir. Son olarak, gerçek hesaplama gücü her zaman MMO'lardaki "sunucu" popülasyonunu ayırmanın nedeni değildir.

Düşünce trenim şu şekildedir (örnek olarak Yıldız Savaşları: Eski Cumhuriyet kullanarak): - Her zaman bir gezegende, diğer gezegenlerden izole edilmiş bir "örnek" dir. - Bir gezegende çok fazla insan varsa, SW: TOR dünyanın yeni bir örneğini yaratır ve oyuncuları oraya koyar. - Dünyadan ayrılırsanız / örnekleri değiştirirseniz bir yükleme ekranınız vardır

Guild Wars 2 aslında buna çok benzer bir şey yapıyor. Haritalar tek tek sunucu işlemleri tarafından simüle edilir ve taşma örnekleri, harita popülasyonu başlığına ve haritanın performansı için bazı sezgisel taramalara göre gerektiği gibi oluşturulur.

Guild Wars 2'de biri ABD'de, diğeri Avrupa'da olmak üzere iki büyük veri merkezi var - bu veri merkezleri arasında (özellikle ticaret postası ve ticaret sistemleri için) bazı çapraz konuşmalar var, ancak genel olarak bu yapılandırmada varlar. Almanya, Fransa ve diğerleri, ABD oyun sunucuları için daha yüksek gecikme süresi yaşamak zorunda değildir. Veri merkezi içinde oyuncular "ev dünyalarına" (veya yerel terimlerle "kırıntılara") ayrılırlar; ancak bunun yapılmasının nedenlerinden biri, bir müşterinin görebileceği ve raporlaması gereken oyuncu sayısını en aza indirmektir. Bu sorunun istemci tarafı yönü, daha fazla sunucu donanımına ölçeklendirilerek çözülmez. Sunucu tarafında ek raporlama yollarının birleşik patlaması olabilir,

Bunun işe yaramamasının belirli bir nedeni var mı? Kaçırdığım başka problemler var mı?

Çok az şey kaçırıyorsunuz, ancak bunlar çoğunlukla ayrıntılar (ve ticari sır olarak kabul edildiklerinden onları nasıl ele aldığımızı açıklamayacağım), bu tür üst düzey, genel bakış tipi bir soru ile ilgili değil. Sanırım teklifinizdeki en büyük kusur, oyuncu aktardığında oyuncu verilerini yeni sunucuya dağıtmaya çalışıyor. Bu, iyi ölçeklenmeyen karmaşık bir sorundur, pratikte bu oyuncu verilerini merkezi bir sunucu sisteminde bulundurmak muhtemelen daha iyidir. Bu veritabanlarını ve veriler için birincil çalışma zamanı kayıt deposunu kullanmıyorsanız oldukça yapılabilir.


@Josh, dağıtım haklarının dünyanın ayrı bölgeleri için ayrı sunucular oluşturma ve sürdürme kararında büyük bir faktör olduğunu söyleyebilir misiniz?
Trevor Powell

Ne demek istediğinizden emin değilim, fiyat ayarlaması için AB sürümünü farklı bir SKU olarak sunmaktan (ve sonuç olarak sunucunun arka ucunu da farklı tutmak istemekten mi bahsediyorsunuz?).

7

Çoğunlukla gecikme ile ilgilidir.

İlk olarak, coğrafi olarak size yakın bir sunucunun olması gecikmeyi azaltır. Sunucu dünyanın diğer tarafındaysa, sunucunun sadece birkaç durak uzaklığından daha fazla gecikme göreceksiniz.

İkinci olarak, AWS gibi hizmetler gerçek zamanlı çalışma için tasarlanmamıştır. Biraz gecikme pahasına yüksek verim için tasarlanmıştır. Web sayfanızın bir kerede yüklenmesi normalden 250ms daha uzun sürerse, kimse umursamaz, ancak oyununuz bir mesajı işlemek için normalden 250ms daha uzun sürerse, oyun ciddi şekilde etkilenebilir. MMO'ların neredeyse her zaman özel donanımlarda barındırılmasının nedeni budur.

Ama aynı zamanda oyun tasarımı ile ilgili. Herkesin aynı dünyada olduğu gibi görünmesini sağlarsanız, ancak çok dolduğunda bir bölgeyi bölmek zorunda kalırsanız, insanlar belirlenen toplantı noktalarında arkadaşlarını bulamamalarından dolayı hayal kırıklığına uğrarlar. Bu tür bir sorun, loncalara, kitlesel PvP savaşlarına vb. Uzanır. Oyuncular bugünlerde örnek olarak kullanılıyorlar, ancak paylaşılması beklenen belirli alanlar var. Tamamen ayrı sunucularınız varsa, en azından burada sürpriz yoktur.

Son olarak, dikkate alınması gereken başka teknolojik konular da vardır. Her örnek diğerlerinden oldukça yalıtılmış olsa bile, genellikle bunlar arasında iletişim kurması gereken çeşitli hizmetler vardır. Sunucular arası iletişimin gerçek zamanlı yazılımda iyi yapılması zordur ve geçmişte MMO'larda çeşitli istismarlara ve hatalara neden olmuştur. Özellikle yetkili oyuncu verilerinin birinden diğerine dağıtılması risklidir. Bu nedenle geliştiriciler genellikle dikkatli olurlar ve sunucular arasında açıkça sınırlar çizerler, bu da onları geçmesi gereken trafik miktarını azaltırlar.


"Tamamen ayrı sunucularınız varsa, en azından burada sürpriz yoktur." O zaman sadece arkadaşlarınla ​​oynayamazsın. SW: TOR'da grup liderinin hangi örnek olduğunu söyler ve hemen buna geçebilirsiniz. (Şahsen) bunun yeterli olduğunu düşünüyorum. Teknik bilgiler için teşekkürler, bu gerçekten eldeki sorunları anlamama yardımcı oluyor!
mmlac

1
Kesinlikle bazı oyunlar böyle bir örneği değiştirmenize izin verebilir, ancak bu zindanlar ve görev alanları için paylaşılan toplantı ve sosyal alanlar için olduğundan çok daha iyi çalışır. Sonuçta teknik sorunlar daha önemlidir.
Kylotan

Philipp'e yaptığım yorumda da belirtildiği gibi, başkentleri ve ana şehirleri örneksiz yönetebileceğinizi sanmıyorum.
mmlac

3

aslında cevabın olmadığına inanıyorum genellikle olaylar vardır oyunların bu tür olaylarda, ilgili ağ veya ilgili mimari ziyade oyun ve bu olaylar sunucuda oynamak insanlar için en rahat zaman çerçevelerine uygun edemeyen ve bu genellikle insanların yaşadığı zaman dilimi, dolayısıyla AB ve ABD vb.

Başka bir neden, dünyalar arasında bir ayrım yaratmaktır, böylece çok güçlü bir grup varsa, oyunu oynayan herkes için oyunu bozmazlar ve her zaman daha az "zorlayıcı" bir dünyaya geçebilirsiniz.

Sunucu CPU yeteneği tarafında, bugünün makineleri oldukça güçlü olmasına rağmen, her zaman bir makinenin ne işleyebileceğinin bir sınırı vardır ve bu nedenle oyunu aşırı yüklemeden korumak ve insanların hangi dünyayı istediklerini seçmelerine izin vermek için dünyalar arasında bir ayrım oluşturmak gerekir. arkadaşlarıyla oynayabilmeleri için oyun oynarlar. Yatay ölçeklendirme sadece makinelere sahip olmakla ilgili değildir, yatay olarak ölçeklendirilmiş bir mimaride çalışabilmek için uygulamanıza ihtiyacınız vardır ve birbirinizi olası etkiyle eşzamanlı olarak devam eden binlerce "eyleminiz" olduğunda bu kolay değildir ve her şeyi senkronize etmek gerekiyor. Birkaç makinede bunu yapmak çok zor olacağını düşünüyorum.


En azından SW: TOR'da yalnızca üzerinde bulunduğunuz örnek üzerinde etkiler vardır. Yani bir örnekte öldürdüğünüz dünya patronları, örnek 2'de hala zarar görmeyecek / ortaya çıkacaktır. Dolayısıyla, ayrılma zaten yerinde. Güç tarafında farklı sunucuların nedenini görebiliyorum, ancak kemerin altında da böyle ölçeklenebilirler, böylece yapay nüfus sınırlarınız yoktur. Yerel etkinliklere yerel halkın katıldığı için zaman endişe etmemelidir. Çevrimiçi olursanız, neden katılmanıza izin verilmiyor? Saat diliminiz için tasarlanmamıştır.
mmlac

AB saat diliminde (AB sunucularını oluşturmadan önce) Lineage2'yi bir ABD sunucusunda oynardım ve bunun bir kaltak olduğunu söyleyebilirim! Baskınlara ve kale kuşatmasına katılmak istersem saat 3'te uyanmak zorunda kaldım çünkü o zamanlar gerçekleşti. Bu yüzden zaman kesinlikle bir endişe kaynağıdır.

Evet, yanlış saat diliminde yalnızca bir sunucunuz olduğunda zaman endişe vericidir. Benim düşünceme göre, dünyanın her yerinde çevrimiçi insanlara sahipsiniz. 03:00 baskınına katılmak istiyorsanız, devam edin! Şu anda SOL'sunuz ve sunucu baskınlarınız bitene kadar beklemeniz gerekiyor - ki bu saat 10'da her Saturady olabilir - zamanınız yok. Bu yüzden saat 3'te AB baskınlarına gidin. bu mantıklı mı?
mmlac

2

Otomatik örneklemede sorun nedir? Bir yer çok kalabalık olduğunda, 1000 oyuncuyu 10 farklı örneğe yerleştirirsiniz.

Sorun şu ki, çevrimiçi oyunlar tamamen toplulukla ilgili. Daha önce tanıştığınız kişilerle bir toplantı düzenlediğinizi ve belirli bir zamanda orada olduğunuzda birbirinizi görmediğinizi, çünkü hepiniz farklı örneklerde olduğunuzu düşünün. Bu sinir bozucu ve daldırmayı bozuyor.

Bu nasıl önlenebilir? Her oyuncuyu her zaman aynı örneğe koyarak yapılabilir, böylece başka bir oyuncuyla bir kez karşılaştığınızda, her ikiniz de aynı yerde olduğunuzda bu oyuncuyla tekrar karşılaşacağınızdan emin olabilirsiniz. Başka örneklere atanmış oyuncularla asla karşılaşmayacaksınız.

Peki ya oyunun dışından biriyle tanışmak istediğinizde? Oyunu sizinle oynamaya davet ettiğiniz gerçek hayattaki bir arkadaş gibi mi? Bunun olmasına izin vermek için, karakterinizi oluştururken örneği seçebilmeniz gerekir. İsimleri ezberlemesi kolay bir örnek listesinden olduğu gibi. Ne yazık ki, "örnek" adı ortalama bir kullanıcı için kafa karıştırıcı görünüyor. Bu kelimeye alışkın değiller. Alışkın oldukları bir terimi kullanmak daha iyi olmaz mıydı? Sunucu gibi bir terim mi?


1
Yönetim ortamı ve sunucuyu karıştırmayın. Örnekler birbirleri arasında geçiş yapmanıza izin verir. Sunucular genellikle atomiktir. Giriş ve çıkış yok. İnsanlarla tanışmak için: Herkesi bir örnek verin, başkentlerinizde 20.000 kişi olacak. Aynı zamanda. Bu ne işe yarayacak ne de istenmeyecek, bu yüzden zaten örnek oluşturmalısınız. Düşünce trenim, bu örnekleri bir sunucu ile sınırlı olmak yerine küresel yapmaktı.
mmlac

Ama asıl mesele, insanların kasıtlı olarak paylaşılan alanlarda tahmin edilebilir bir deneyim yaşamasını istediğinizi düşünüyorum. Performans nedenleriyle bölümlere ayırmanız gerekir, ancak 'herkes' ile paylaşılması gerekir, bu yüzden ideal olarak değişken (örneğin örnek) yerine sabit bir bölümünüz (örn. Sunucu) vardır. Bildiğim çok az MMO bu tür bir alandan bahsedecek, çünkü herkesin orada herkesi görebileceği topluluk ve gruplama nedenleri için önemli kabul ediliyor.
Kylotan
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.