Czy powinienem trzymać serwer logowania oprócz serwera gry?


15

Zastanawiam się nad stworzeniem serwera MMO i przyglądałem się, w jaki sposób inne gry tworzą swoją sieć. Jedną z rzeczy, które zauważyłem, jest to, że zawsze jest serwer logowania, a następnie serwery gry.

Nadal decyduję, czy powinienem to zrobić, ale najpierw chciałbym usłyszeć kilka opinii. Jakie są tego zalety i w jaki sposób serwer logowania komunikuje się z serwerem gry w celu obsługi logowania?


1
Pytanie „W jaki sposób osiąga się równoważenie obciążenia w MMO?” może być interesujące: gamedev.stackexchange.com/q/5956/450
Hendrik Brummermann

Odpowiedzi:


15

Uważam, że jest to głównie spowodowane faktem, że logowanie i obsługa gier są logicznie mniej więcej niezależne, więc zazwyczaj są oddzielone dla lepszego oddzielenia, łatwiejszej konserwacji i skalowalności. Nie muszą koniecznie znajdować się na różnych serwerach fizycznych, mogą działać równie dobrze jak niezależne usługi na tym samym komputerze. Jeśli ruch staje się zbyt duży, serwer logowania można łatwo przenieść na inną maszynę.

Ponadto serwery logowania są prawdopodobnie wektorem ataku, dlatego dobrze jest je rozdzielić z punktu widzenia bezpieczeństwa.

Wewnętrznie różne usługi po stronie serwera mogą używać zwykłych gniazd do komunikowania się ze sobą, czy to na tym samym komputerze, czy na innym komputerze w klastrze. Alternatywnie można użyć serwera bazy danych do utrzymania flagi „zalogowany” dla każdego użytkownika.


Przez większość czasu widzę taką flagę w db gameserver i wewnątrz db serverserver, więc serwer logowania może się sprawdzać i jeśli logindb! = Gamerserverdb użytkownik zostanie wylogowany.
daemonfire300

10

Jednym z bardzo ważnych aspektów rozwoju MMO jest osiągnięcie skalowalności i umożliwienie równoważenia obciążenia.

Uwierzytelnianie użytkowników poprzez sprawdzanie poświadczeń, statusu bana, liczenie ostatnich nieudanych logowań itp. Jest zadaniem, które można wykonać bez wiedzy o logice gry lub danych gry. Dlatego bardzo łatwo jest przenieść go do własnego klastra serwerów.

Ponadto serwery logowania są dobrze znanym „wejściem” dla klienta. Po udanym uwierzytelnieniu mogą wysłać klienta na odpowiedni serwer w klastrze serwerów gier. Wysyłanie to można wykonać, przekazując połączenie sieciowe do odpowiedniego serwera gry lub nakazując klientowi otwarcie nowego połączenia z odpowiednim serwerem gry.

Powinieneś pomyśleć o cięciach twojego systemu do dystrybucji na początku. Uruchomienie kilku elementów na jednym serwerze jest bardzo łatwe. Ale dość trudno jest podzielić rzeczy, które zostały opracowane jako jedna jednostka.


2

Jako były gracz WoW miałem doświadczenie, że serwer logowania był zawsze najsłabszym ogniwem w łańcuchu.

Światowe serwery były zwykle imponująco stabilne, nawet całkiem nieźle radziły sobie z wyjątkowym obciążeniem (np. Wydania nowych pakietów rozszerzeń).

Ale serwery logowania po prostu nigdy nie wydawały się radzić sobie tak dobrze i często nie działały, podczas gdy serwery na świecie były w porządku. (co oznacza, że ​​jeśli stracisz połączenie w rajdzie / lochu, nie możesz wrócić, ale inni gracze na ciebie czekają!)

A teraz, gdy system logowania WoW został połączony z Battle.Net, Starcraft 2 może stać się niedostępny, gdy WoW jest obciążony (co miało miejsce przez kilka godzin po uruchomieniu Cataclysm)

Jeśli więc budujesz grę, która będzie miała bardzo dużą liczbę użytkowników, bardzo ważna jest również skalowalność i wydajność systemu logowania.


1
Sądzę, że serwery logowania są głównym celem ataków typu „brute force” na hasła, więc muszą być w stanie poradzić sobie z dużym obciążeniem. Zwłaszcza jeśli gra jest tak popularna, że ​​atakujący zaczynają korzystać z botnetów (aby zapobiec ograniczaniu szybkości na adres IP) oprócz zwykłego losowego odgadywania nazw użytkowników.
Hendrik Brummermann,

Niezalogowanie się i umieszczenie gracza na świecie może mieć wiele przyczyn. Może to być baza danych serwerów logowania / kont. Ale może to być spowodowane brakiem załadowania informacji o odtwarzaczu z bazy danych. Lub z powodu awarii systemu, który wysyła graczy na serwery świata, serwery czatu, ... Wewnętrzna zapora może nadal obsługiwać znane połączenia, ale może nie być w stanie zastosować zestawu reguł do decydowania o nowych połączeniach. Gra gracza w świat jest o wiele bardziej złożona niż interakcja, gdy jesteś w środku.
Hendrik Brummermann,
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.