Dlaczego MMORPG nadal korzystają z wielu serwerów?


18

MMORPG, niektóre MOBA, takie jak League of Legends, a nawet StarCraft 2 zazwyczaj zmuszają cię do wybrania serwera. Zazwyczaj są to USA, UE i SEA, w MMORPG wiele na lokalizację. Widzę, że było to konieczne kilka lat temu, ale teraz wraz z pojawieniem się AWS i podobnych ofert, które pozwalają płynnie skalować „moc serwera”, dlaczego wciąż istnieją osobne serwery?

Mój tok myślenia jest taki (na przykładzie Star Wars: The Old Republic): - Zawsze jesteś na jednej planecie, odizolowanej „instancji” od innych planet. - Jeśli na jednej planecie jest zbyt wielu ludzi, SW: TOR tworzy nową instancję świata i umieszcza w niej graczy. - Jeśli opuścisz instancję world / switch, pojawi się ekran ładowania

Dlaczego więc gra nie może stworzyć instancji dla tej planety? Ta instancja (i tylko ta) ma twoje bieżące dane w swojej bazie danych i zarządza x odtwarzaczami. Jak tylko gracze x-50 znajdą się w tej instancji, zostanie uruchomiony nowy serwer i pojawią się nowe osoby w tej instancji. 50 miejsc jest zarezerwowanych na przejście do twojej grupy itp.

Może istnieć instancja dla wszystkich trzech głównych regionów, aby utrzymać niskie opóźnienie, ale pozwoliłoby ci nadal grać z innymi graczami z np. SEA, jeśli możesz żyć z opóźnieniem 140 ms (co nadal nie jest niczym).

Za każdym razem, gdy zmieniasz instancję lub podróżujesz do innego świata, twój obecny serwer przekazuje wszystkie dane do następnego serwera, upewniając się, że nie potrzebujesz jednej dużej scentralizowanej bazy danych. Nadal możesz mieć taki, który okresowo pobiera aktualizacje do celów analizy.

Gdy się wylogujesz lub serwer utraci połączenie, dane mogą być następnie przesłane do ogromnej bazy danych zoptymalizowanej do przechowywania danych. Serwery instancji można następnie zoptymalizować pod kątem wysokiej przepustowości.

Czy jest jakiś konkretny powód, dla którego to nie zadziała? Czy brakuje mi innych problemów?


A co z faktem, że wiele z tych gier musiałoby przepisywać umiarkowane do dużych sekcje swoich silników, aby to obsługiwać? A ten czas i pieniądze można lepiej wydać, dodając więcej treści.
Xavon_Wrentaile

Nie sugerowałem zmiany istniejących gier, ale znacznie więcej, dlaczego projekt został wybrany na początku.
mmlac

Odpowiedzi:


12

MMORPG, niektóre MOBA, takie jak League of Legends, a nawet StarCraft 2 zazwyczaj zmuszają cię do wybrania serwera. Zazwyczaj są to USA, UE i SEA, w MMORPG wiele na lokalizację. Widzę, że było to konieczne kilka lat temu, ale teraz wraz z pojawieniem się AWS i podobnych ofert, które pozwalają płynnie skalować „moc serwera”, dlaczego wciąż istnieją osobne serwery?

AWS nie jest tak oczywistym rozwiązaniem, jak się wydaje. Może to być kosztowne, w niektórych przypadkach nawet bardziej niż korzystanie z wewnętrznych centrów danych (dla wydawcy ich koszty mogą być amortyzowane na przykład dla wielu produktów). Ponadto mogą pojawić się obawy związane z przechowywaniem wrażliwych plików binarnych i dzienników na sprzęcie poza kontrolą użytkownika. Wreszcie faktyczna moc obliczeniowa nie zawsze jest przyczyną segregacji populacji „serwerów” w MMO.

Mój tok myślenia jest taki (na przykładzie Star Wars: The Old Republic): - Zawsze jesteś na jednej planecie, odizolowanej „instancji” od innych planet. - Jeśli na jednej planecie jest zbyt wielu ludzi, SW: TOR tworzy nową instancję świata i umieszcza w niej graczy. - Jeśli opuścisz instancję world / switch, pojawi się ekran ładowania

W rzeczywistości Guild Wars 2 robi coś bardzo podobnego do tego. Mapy są symulowane przez poszczególne procesy serwera, a wystąpienia przepełnienia są tworzone w razie potrzeby na podstawie ograniczenia liczby ludności mapy i pewnej heurystyki dla wydajności mapy.

W Guild Wars 2 znajdują się dwa główne centra danych, jedno w USA i jedno w Europie - między tymi centrami danych istnieje pewna rozmowa (głównie dla systemów handlu pocztowego i systemów handlowych), ale ogólnie istnieją one w tej konfiguracji, więc gracze Niemcy, Francja i tak dalej nie muszą cierpieć z powodu większych opóźnień w stosunku do amerykańskich serwerów gier. W centrum danych gracze są podzieleni na „światy domowe” (lub „odłamki” w języku narodowym); ale jednym z powodów jest to, aby zminimalizować liczbę graczy, których klient może zobaczyć i musi im zgłosić. Aspekt tego problemu po stronie klienta nie zostanie rozwiązany poprzez skalowanie do większej liczby urządzeń serwerowych. Kombinatoryczna eksplozja po stronie serwera dodatkowych ścieżek raportowania może być,

Czy jest jakiś konkretny powód, dla którego to nie zadziała? Czy brakuje mi innych problemów?

Brakuje ci kilku rzeczy, ale są to w większości szczegóły (i nie wyjaśnię, jak sobie z nimi radzimy, ponieważ są uważane za tajemnice handlowe), które nie są istotne w przypadku tak wysokiego poziomu pytania o charakterze ogólnym. Myślę, że największą wadą twojej propozycji jest przekazanie danych gracza nowemu serwerowi, gdy gracz dokonuje transferu. Jest to złożony problem, który nie będzie dobrze skalowany, prawdopodobnie w praktyce lepiej jest mieć dane tego gracza na scentralizowanym systemie serwerów. Jest to całkiem wykonalne, jeśli nie korzystasz z tych baz danych i podstawowego magazynu rekordów środowiska wykonawczego dla danych.


@Josh, czy powiedziałbyś, że prawa do dystrybucji są również ważnym czynnikiem przy podejmowaniu decyzji o tworzeniu i utrzymywaniu oddzielnych serwerów dla oddzielnych regionów świata?
Trevor Powell,

Nie jestem pewien, co masz na myśli, czy mówisz o prezentacji wersji UE jako innej jednostki SKU do celów korekty cen (a tym samym chcesz zachować odrębność zaplecza serwera?).

7

Głównie chodzi o opóźnienie.

Po pierwsze, bliskość geograficzna serwera ogranicza czas oczekiwania. Jeśli serwer znajduje się po drugiej stronie świata, zobaczysz więcej opóźnień niż w przypadku, gdy serwer znajduje się zaledwie kilka kroków od nas.

Po drugie, usługi takie jak AWS nie są przeznaczone do pracy w czasie rzeczywistym. Zostały zaprojektowane z myślą o dużej przepustowości kosztem niewielkich opóźnień. Jeśli jedna strona wczytuje się o 250 ms dłużej niż zwykle, nikogo to nie obchodzi, ale jeśli twoja gra potrzebuje 250 ms dłużej niż zwykle na przetworzenie wiadomości, może to poważnie wpłynąć na rozgrywkę. Właśnie dlatego MMO prawie zawsze są hostowane na dedykowanym sprzęcie.

Ale dotyczy to również projektowania gier. Jeśli sprawiasz wrażenie, jakby wszyscy byli w tym samym świecie, ale musieli podzielić strefę, gdy się zapełni, ludzie denerwują się, że nie mogą znaleźć przyjaciół w wyznaczonych miejscach spotkań. Tego rodzaju problem dotyczyłby gildii, masowych bitew PvP itp. Gracze są przyzwyczajeni do instancji w tych dniach, ale istnieją pewne obszary, które powinny być udostępniane. Jeśli masz całkowicie oddzielne serwery, to przynajmniej nie ma tu niespodzianek.

Wreszcie należy rozważyć inne kwestie technologiczne. Nawet jeśli każda instancja jest dość odizolowana od innych, zwykle nadal istnieją różne usługi, które muszą się przez nie komunikować. Komunikacja między serwerami jest trudna w oprogramowaniu czasu rzeczywistego i doprowadziła do różnych exploitów i błędów w MMO. W szczególności przekazywanie wiarygodnych danych graczy między nimi jest ryzykowne. Dlatego programiści często mylą się po stronie ostrożności i wyraźnie wyznaczyli granice między serwerami, zmniejszając ruch, który musi je przekroczyć.


„Jeśli masz całkowicie oddzielne serwery, to przynajmniej nie ma tu niespodzianek”. Cóż, nie możesz wtedy grać ze znajomymi. W SW: TOR informuje, która instancja jest liderem grupy i możesz od razu na nią przełączyć. Myślę (osobiście), że to wystarczy. Dzięki za informacje techniczne, to naprawdę pomaga mi zrozumieć aktualne problemy!
mmlac

1
Z pewnością niektóre gry pozwalają na przełączanie takich instancji, ale działa to o wiele lepiej w lochach i obszarach zadań niż w przypadku wspólnych obszarów spotkań i społeczności. Ostatecznie jednak problemy techniczne są bardziej znaczące.
Kylotan

I jak wspomniano w moim komentarzu do Filipa, nie sądzę, żebyś mógł zarządzać stolicami i głównymi miastami bez instancji.
mmlac

3

tak naprawdę uważam, że odpowiedź nie jest związana z siecią lub architekturą, ale raczej z grami, zwykle w tego typu grach są wydarzenia, a wydarzenia te są ustalane według najbardziej dogodnych ram czasowych dla osób grających na serwerze, i to zwykle związane ze strefą czasową, w której mieszkają ludzie, a więc UE i USA itp.

Innym powodem jest utworzenie separacji między światami, aby grupa, która jest zbyt silna, nie zepsuła gry dla wszystkich graczy i zawsze mogła przenieść się do świata mniej „wymagającego”.

Po stronie możliwości procesora serwera, chociaż dzisiejsze maszyny są dość mocne, zawsze istnieje ograniczenie tego, co może obsługiwać jedna maszyna, dlatego tworzenie separacji między światami jest konieczne, aby chronić grę przed przeciążeniem i pozwolić ludziom wybrać, który świat chcą grać, aby mogli bawić się z przyjaciółmi. Skalowanie w poziomie nie jest tylko kwestią posiadania maszyn, potrzebujesz aplikacji, aby móc pracować w architekturze skalowanej w poziomie, a to nie jest takie łatwe, gdy masz tysiące „akcji”, które mogą zachodzić jednocześnie i mogą na siebie wpływać, oraz trzeba zsynchronizować wszystko. Myślę, że byłoby to bardzo trudne na kilku komputerach.


Cóż, przynajmniej w SW: TOR wpływ ma tylko bieżąca instancja, na której się znajdujesz. Co oznacza, że ​​np. Bossowie świata, których zabijesz w pierwszym przypadku, nadal będą nienaruszeni / pojawią się w drugim. Więc separacja jest już na miejscu. Widzę powód różnych serwerów po stronie mocy, ale pod pasem mogą one również skalować się w ten sposób, więc nie masz sztucznych limitów populacji. Czas nie powinien się martwić, ponieważ w lokalnych wydarzeniach biorą udział lokalni mieszkańcy. Jeśli zdarzyło Ci się być online, dlaczego nie miałbyś mieć pozwolenia na dołączenie? To po prostu nie jest dostosowane do twojej strefy czasowej.
mmlac

Kiedyś grałem w Lineage2 na serwerze amerykańskim, będąc w strefie czasowej UE (zanim utworzyli serwery UE) i mogę powiedzieć, że to dziwka! Musiałem wstać o 3 nad ranem, jeśli chciałem brać udział w nalotach i oblężeniach zamku, ponieważ wtedy wszystko się odbyło. Czas zdecydowanie stanowi problem.

No cóż, czas jest problemem, gdy masz tylko jeden serwer w niewłaściwej strefie czasowej. Z moim pomysłem masz ludzi online na całym świecie. Jeśli chcesz wziąć udział w nalocie o 3 nad ranem, śmiało! W tej chwili jesteś SOL i musisz poczekać, aż „twoje” naloty na serwery się zakończą - co może być każdą Saturadą o 22:00 - gdzie nie masz czasu. Ruszajcie więc do nalotów UE o 15.00. Czy to ma sens?
mmlac

2

Co jest nie tak z automatycznym uruchamianiem? Kiedy lokalizacja jest zbyt zaludniona, wystarczy umieścić 1000 graczy w 10 różnych instancjach.

Problem polega na tym, że w grach online chodzi o społeczność. Wyobraź sobie, że umówiłeś się na spotkanie z ludźmi, których spotkałeś wcześniej, a kiedy wszyscy jesteście w danym czasie, nie widzicie się, ponieważ wszyscy jesteście w różnych sytuacjach? To denerwujące i przełamuje zanurzenie.

Jak można temu zapobiec? Można to zrobić, umieszczając każdego gracza w tej samej instancji przez cały czas, dzięki czemu gdy spotkasz innego gracza raz, możesz być pewien, że spotkasz go ponownie, gdy oboje znajdziecie się w tym samym miejscu. Nigdy nie spotkasz graczy przypisanych do innych instancji.

Ale co, jeśli chcesz poznać kogoś spoza gry? Jak prawdziwy przyjaciel, którego zaprosiłeś do wspólnej gry? Aby to umożliwić, będziesz musiał wybrać instancję podczas tworzenia swojej postaci. Jak z listy instancji z łatwymi do zapamiętania nazwami. Niestety nazwa „instancja” wydaje się myląca dla przeciętnego użytkownika. Nie są przyzwyczajeni do tego słowa. Czy nie byłoby lepiej używać terminu, do którego są przyzwyczajeni? Termin jak ... Serwer ?


1
Nie należy mylić terminu instancja i serwer. Instancje umożliwiają przełączanie się między sobą. Serwery są zwykle atomowe. Brak wejścia i wyjścia. Aby spotkać ludzi: Umieść wszystkich w jednym wystąpieniu, a w twoich stolicach będzie 20 000 osób. W tym samym czasie. To nie zadziałałoby ani nie byłoby pożądane, dlatego i tak musisz tworzyć instancje. Mój tok myślenia polegał na tym, aby te instancje były globalne, a nie ograniczone do serwera.
mmlac

Myślę jednak, że chodzi o to, że zazwyczaj chcesz, aby ludzie mieli przewidywalne doświadczenie w celowo udostępnianych obszarach. Musisz podzielić je na partycje ze względu na wydajność, ale powinny być one współużytkowane z „wszystkimi”, więc idealnie masz stałą partycję (np. Serwer), a nie zmienną (np. Instancję). Bardzo niewiele MMO, o których wiem, będzie tego typu, ponieważ jest to uważane za ważne ze względów społeczności i grupowania, aby każdy mógł je zobaczyć.
Kylotan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.