Warum verwenden MMORPGs immer noch mehrere Server?


18

MMORPGs, einige MOBAs wie League of Legends oder sogar StarCraft 2 zwingen Sie normalerweise, einen Server auszuwählen. Normalerweise sind es USA, EU und SEA, in MMORPGs viele pro Ort. Ich kann sehen, dass dies vor ein paar Jahren notwendig war, aber jetzt, mit dem Aufkommen von AWS und ähnlichen Angeboten, mit denen Sie Ihre "Serverleistung" nahtlos skalieren können, warum gibt es noch separate Server?

Mein Gedankengang ist wie folgt (am Beispiel von Star Wars: The Old Republic): - Sie befinden sich immer auf einem Planeten, einer isolierten "Instanz" von anderen Planeten. - Wenn sich zu viele Menschen auf einem Planeten befinden, erstellt SW: TOR eine neue Instanz der Welt und versetzt die Spieler in diese Instanz. - Wenn Sie die Welt verlassen / Instanzen wechseln, haben Sie einen Ladebildschirm

Warum kann das Spiel keine Instanz für diesen Planeten erstellen? Diese Instanz (und nur diese) hat Ihre aktuellen Daten in ihrer Datenbank und verwaltet x Spieler. Sobald sich x-50-Spieler auf dieser Instanz befinden, wird ein neuer Server gestartet und neue Leute werden auf dieser Instanz erscheinen. Die 50 Plätze sind für den Wechsel zu Ihrer Gruppe usw. reserviert.

Es könnte eine Instanz für alle drei Hauptregionen geben, um die Latenz gering zu halten, aber es würde Ihnen erlauben, immer noch mit anderen Spielern von zB SEA zu spielen, wenn Sie mit einer Verzögerung von 140 ms leben können (was immer noch nichts imho ist).

Wann immer Sie eine Instanz wechseln oder in eine andere Welt reisen, gibt Ihr aktueller Server alle Ihre Daten an den nächsten Server weiter und stellt sicher, dass Sie keine große zentrale Datenbank benötigen. Sie könnten immer noch eine haben, die regelmäßig zu Analysezwecken aktualisiert wird.

Wenn Sie sich abmelden oder der Server die Verbindung verliert, können die Daten in eine umfangreiche Datenbank übertragen werden, die für die Speicherung der Daten optimiert ist. Die Instanzserver können dann für einen hohen Durchsatz optimiert werden.

Gibt es einen bestimmten Grund, warum dies nicht funktioniert? Gibt es noch andere Probleme, die ich vermisse?


Was ist mit der Tatsache, dass viele dieser Spiele mittelgroße bis große Teile ihrer Engines neu schreiben müssten, um dies zu unterstützen? Und diese Zeit und das Geld könnten besser verwendet werden, um mehr Inhalte hinzuzufügen.
Xavon_Wrentaile

Ich habe nicht vorgeschlagen, vorhandene Spiele zu ändern, sondern vielmehr, warum das Design so gewählt wurde, wie es ursprünglich war.
MMLAC

Antworten:


12

MMORPGs, einige MOBAs wie League of Legends oder sogar StarCraft 2 zwingen Sie normalerweise, einen Server auszuwählen. Normalerweise sind es USA, EU und SEA, in MMORPGs viele pro Ort. Ich kann sehen, dass dies vor ein paar Jahren notwendig war, aber jetzt, mit dem Aufkommen von AWS und ähnlichen Angeboten, mit denen Sie Ihre "Serverleistung" nahtlos skalieren können, warum gibt es noch separate Server?

AWS ist keine so offensichtliche Lösung, wie es scheint. Es kann teuer sein, in einigen Fällen sogar teurer als die Verwendung von internen Rechenzentren (für einen Verlag können sich die Kosten beispielsweise über mehrere Produkte hinweg amortisieren). Darüber hinaus kann es Bedenken geben, vertrauliche Binärdateien und Protokolle auf Hardware zu speichern, die außerhalb der eigenen Kontrolle liegt. Schließlich ist die tatsächliche Rechenleistung nicht immer der Grund für die Trennung der "Server" -Population in MMOs.

Mein Gedankengang ist wie folgt (am Beispiel von Star Wars: The Old Republic): - Sie befinden sich immer auf einem Planeten, einer isolierten "Instanz" von anderen Planeten. - Wenn sich zu viele Menschen auf einem Planeten befinden, erstellt SW: TOR eine neue Instanz der Welt und versetzt die Spieler in diese Instanz. - Wenn Sie die Welt verlassen / Instanzen wechseln, haben Sie einen Ladebildschirm

Guild Wars 2 macht in der Tat etwas sehr Ähnliches. Karten werden von einzelnen Serverprozessen simuliert, und Überlaufinstanzen werden nach Bedarf basierend auf der Kartenpopulationsobergrenze und einigen Heuristiken für die Leistung der Karte erstellt.

In Guild Wars 2 gibt es zwei große Rechenzentren, eines in den USA und eines in Europa. Diese Rechenzentren (hauptsächlich für Handelsposten- und Handelssysteme) sind untereinander ausgetauscht, aber im Allgemeinen sind sie in dieser Konfiguration vorhanden Deutschland, Frankreich und so weiter müssen die höheren Latenzen für die US-Spieleserver nicht leiden. Innerhalb des Rechenzentrums werden die Spieler in "Heimatwelten" (oder "Scherben" im Volksmund) unterteilt. Einer der Gründe dafür ist jedoch, die Anzahl der Spieler zu minimieren, die ein Kunde sehen kann und die ihm gemeldet werden muss. Der clientseitige Aspekt dieses Problems wird nicht durch eine Skalierung auf mehr Serverhardware gelöst. Die serverseitige kombinatorische Explosion zusätzlicher Berichtspfade könnte

Gibt es einen bestimmten Grund, warum dies nicht funktioniert? Gibt es noch andere Probleme, die ich vermisse?

Sie vermissen eine ganze Reihe von Dingen, aber meistens handelt es sich um Details (und ich werde nicht erklären, wie wir damit umgehen, da sie als Geschäftsgeheimnisse betrachtet werden), die für eine so hochrangige Frage vom Typ Übersicht nicht relevant sind. Ich denke, der größte Fehler in Ihrem Vorschlag besteht darin, Spielerdaten an den neuen Server weiterzugeben, wenn ein Spieler wechselt. Dies ist ein komplexes Problem, das sich nicht gut skalieren lässt. In der Praxis ist es wahrscheinlich besser, die Spielerdaten auf einem zentralen Serversystem zu haben. Es ist durchaus machbar, wenn Sie diese Datenbanken und den primären Laufzeitdatensatzspeicher nicht für die Daten verwenden.


@Josh, würdest du sagen, dass Distributionsrechte auch ein wichtiger Faktor bei der Entscheidung sind, separate Server für separate Regionen der Welt zu erstellen und zu warten?
Trevor Powell

Ich bin mir nicht sicher, was Sie meinen. Sprechen Sie über die Präsentation der EU-Version als andere SKU für Preisanpassungszwecke (und möchten Sie folglich auch das Server-Backend anders gestalten?).

7

Meist geht es um Latenz.

Erstens verringert sich die Latenz, wenn Sie einen Server in Ihrer Nähe haben. Befindet sich der Server auf der anderen Seite der Welt, ist die Latenz höher als in wenigen Schritten Entfernung.

Zweitens sind Dienste wie AWS nicht für Echtzeitarbeit ausgelegt. Sie sind für einen hohen Durchsatz auf Kosten einer gewissen Latenz ausgelegt. Wenn das Laden Ihrer Webseite einmal 250 ms länger als gewöhnlich dauert, ist das für niemanden wichtig. Wenn Ihr Spiel jedoch 250 ms länger als gewöhnlich dauert, um eine Nachricht zu verarbeiten, kann das Gameplay ernsthaft beeinträchtigt werden. Aus diesem Grund werden MMOs fast immer auf dedizierter Hardware gehostet.

Es geht aber auch um Spieledesign. Wenn Sie den Eindruck erwecken, dass sich alle auf der gleichen Welt befinden und eine Zone aufteilen müssen, wenn sie zu voll ist, sind die Leute frustriert, dass sie ihre Freunde nicht an den festgelegten Treffpunkten finden können. Diese Art von Problem würde sich auf Gilden, Massen-PvP-Kämpfe usw. erstrecken. Spieler sind heutzutage an Instanzen gewöhnt, aber es gibt bestimmte Bereiche, die voraussichtlich geteilt werden. Wenn Sie völlig getrennte Server haben, gibt es hier zumindest keine Überraschungen.

Schließlich sind noch andere technologische Aspekte zu berücksichtigen. Selbst wenn jede Instanz ziemlich isoliert von den anderen ist, müssen in der Regel immer noch verschiedene Dienste miteinander kommunizieren. Serverübergreifende Kommunikation ist in Echtzeitsoftware nur schwer zu realisieren und hat in der Vergangenheit zu verschiedenen Exploits und Fehlern bei MMOs geführt. Insbesondere die Weitergabe maßgeblicher Spielerdaten von einem zum anderen ist riskant. Daher sind Entwickler häufig vorsichtig und haben klar umrissene Grenzen zwischen Servern, was den Datenverkehr verringert, der zu deren Überquerung erforderlich ist.


"Wenn Sie völlig getrennte Server haben, gibt es hier zumindest keine Überraschungen." Dann kannst du einfach nicht mit deinen Freunden spielen. In SW: TOR erfahren Sie, um welche Instanz es sich bei dem Gruppenleiter handelt, und Sie können sofort dorthin wechseln. Ich (persönlich) denke, das ist ausreichend genug. Vielen Dank für die technischen Einblicke, dies hilft mir wirklich, die anstehenden Probleme zu verstehen!
MMLAC

1
In einigen Spielen können Sie die Instanz auf diese Weise wechseln, aber das funktioniert in Dungeons und Questbereichen viel besser als in geteilten Besprechungs- und sozialen Bereichen. Letztendlich sind jedoch die technischen Probleme bedeutender.
Kylotan

Und wie in meinem Kommentar an Philipp erwähnt, glaube ich nicht, dass man Hauptstädte und Hauptstädte ohne Instanzen betreiben kann.
MMLAC

3

Eigentlich glaube ich, dass die Antwort nicht auf das Netzwerk oder die Architektur bezogen ist, sondern auf das Spiel. In der Regel gibt es bei dieser Art von Spielen Ereignisse, und diese Ereignisse werden nach den angenehmsten Zeitrahmen für die Leute, die auf dem Server spielen, terminiert, und das ist normalerweise so Bezogen auf die Zeitzone, in der Menschen leben, daher EU und USA usw.

Ein weiterer Grund ist, eine Trennung zwischen den Welten zu schaffen, damit eine zu starke Gruppe das Spiel nicht für alle Beteiligten durcheinander bringt und Sie sich immer in eine Welt begeben können, die weniger "herausfordernd" ist.

Auf der Seite der Server-CPU-Fähigkeit gibt es, obwohl die heutigen Maschinen ziemlich stark sind, immer eine Grenze für den Umgang mit einer Maschine. Daher ist es notwendig, eine Trennung zwischen den Welten zu schaffen, um das Spiel vor Überlastung zu schützen und den Leuten die Wahl zu lassen, welche Welt sie wollen Spiele mit, damit sie mit ihren Freunden spielen können. Horizontales Skalieren ist nicht nur eine Frage der Maschinen, Sie müssen Ihre Anwendung auch in einer horizontal skalierten Architektur einsetzen können, und das ist nicht so einfach, wenn Tausende von "Aktionen" gleichzeitig ausgeführt werden und sich möglicherweise gegenseitig beeinflussen müssen alles synchronisieren. Ich denke, es wäre sehr schwierig, das über mehrere Maschinen hinweg zu tun.


Nun, zumindest in SW: TOR gibt es nur Einflüsse auf die aktuelle Instanz, auf der Sie sich befinden. Das bedeutet, dass die Weltbosse, die Sie in Beispiel 1 töten, in Beispiel 2 immer noch unversehrt sind. Die Trennung ist also bereits vorhanden. Ich kann den Grund für die unterschiedlichen Server auf der Stromseite sehen, aber unter dem Strich könnten sie auch so skalieren, so dass Sie keine künstlichen Populationsgrenzen haben. Die Zeit sollte keine Rolle spielen, da lokale Veranstaltungen von Einheimischen besucht werden. Wenn Sie gerade online sind, warum sollten Sie dann nicht teilnehmen dürfen? Es ist einfach nicht auf Ihre Zeitzone zugeschnitten.
MMLAC

Ich habe Lineage2 auf einem US-Server gespielt, während ich in der EU-Zeitzone war (bevor sie die EU-Server erstellt haben), und ich kann Ihnen sagen, dass es eine Schlampe ist! Ich musste um 3 Uhr morgens aufwachen, wenn ich an Razzien und Burgbelagerungen teilnehmen wollte, denn dann fand alles statt. Die Zeit ist also definitiv ein Problem.

Nun ja, Zeit ist ein Problem, wenn Sie nur einen Server in der falschen Zeitzone haben. Mit meiner Idee sind Menschen auf der ganzen Welt online. Wenn du an diesem 3-Uhr-Überfall teilnehmen willst, mach weiter! Im Moment sind Sie SOL und müssen warten, bis "Ihre" Server-Raids aktiv sind - möglicherweise jeden Samstag um 22:00 Uhr -, für die Sie keine Zeit haben. Gehen Sie also um 15 Uhr zu den EU-Razzien. Ist das sinnvoll?
MMLAC

2

Was ist falsch an der automatischen Instanzerstellung? Wenn ein Ort zu voll ist, platzieren Sie die 1000 Spieler einfach in 10 verschiedene Instanzen.

Das Problem dabei ist, dass sich Online-Spiele ausschließlich um die Community drehen. Stellen Sie sich vor, Sie haben ein Treffen mit Leuten vereinbart, die Sie zuvor getroffen haben, und wenn Sie alle zu einem bestimmten Zeitpunkt da sind, sehen Sie sich nicht, weil Sie alle in unterschiedlichen Situationen sind? Das nervt und bricht das Eintauchen.

Wie kann dies verhindert werden? Dies könnte geschehen, indem jeder Spieler zu jeder Zeit in dieselbe Instanz versetzt wird, sodass Sie sicher sein können, diesen Spieler wieder zu treffen, wenn Sie sich beide am selben Ort befinden, wenn Sie sich einmal mit einem anderen Spieler treffen. Sie werden niemals Spieler treffen, die anderen Instanzen zugewiesen sind.

Aber was ist, wenn Sie jemanden von außerhalb des Spiels treffen möchten? Wie ein echter Freund hast du eingeladen, das Spiel mit dir zu spielen? Um dies zu ermöglichen, müsstest du die Möglichkeit haben, die Instanz beim Erstellen deines Charakters auszuwählen. Wie aus einer Liste von Instanzen mit leicht zu merkenden Namen. Leider erscheint der Name "Instanz" dem durchschnittlichen Benutzer verwirrend. Sie sind an dieses Wort nicht gewöhnt. Wäre es nicht besser, einen Begriff zu verwenden, an den sie gewöhnt sind? Ein Begriff wie ... Server ?


1
Verwechseln Sie nicht den Begriff Instanz und Server. Mit Instanzen können Sie zwischen den beiden wechseln. Server sind normalerweise atomar. Nein rein und raus. Um Leute zu treffen: Setzen Sie alle auf eine Instanz und Ihre Hauptstädte haben 20.000 Leute darin. Gleichzeitig. Das würde weder funktionieren noch wünschenswert sein, deshalb muss man sowieso Instanzen erstellen. Mein Gedankengang war, diese Instanzen global zu machen, anstatt sie auf einen Server zu beschränken.
mmlac

Aber ich denke, der Punkt ist, dass Sie normalerweise möchten, dass die Menschen eine vorhersehbare Erfahrung in den bewusst geteilten Bereichen haben. Sie müssen sie aus Performancegründen partitionieren, aber sie sollten mit allen geteilt werden. Idealerweise haben Sie eine feste Partition (z. B. Server) und keine Variable (z. B. Instanz). Nur wenige MMOs, die ich kenne, werden diese Art von Bereich einrichten, da dies aus Community- und Gruppierungsgründen als wichtig erachtet wird, damit jeder jeden dort sehen kann.
Kylotan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.