Wie werden Massively Multiplayer Online RPGs gebaut?

9

Wie werden Massively Multiplayer Online RPG-Spiele gebaut?

  • Auf welche Serverinfrastruktur bauen sie auf? vor allem mit so vielen Kunden in Echtzeit verbunden und kommunizieren.

  • Verwalten sie Skripts, die auf Seitenanforderungen ausgeführt werden? oder installierte Dienste, die im Hintergrund laufen und die Kommunikation mit verbundenen Clients verwalten?

  • Verwenden sie andere Protokolle? weil HTTP es Servern nicht erlaubt, Daten an Clients zu übertragen.

  • Wie funktionieren die "Engines", um Hunderte von widersprüchlichen Gameplay-Events zentral zu bearbeiten?

Danke für Ihre Zeit.

    
Robin Rodricks 13.09.2009, 20:24
quelle

6 Antworten

3

Auf welcher Serverinfrastruktur bauen sie auf? vor allem mit so vielen Clients verbunden und in Echtzeit kommunizieren.

Ich nehme an, dass die Server fast 99% der Zeit unter Linux, BSD oder Solaris laufen.

Verwalten sie Skripts, die auf Seitenanforderungen ausgeführt werden? oder installierte Dienste, die im Hintergrund laufen und die Kommunikation mit verbundenen Clients verwalten?

Der Server, mit dem Ihr Client spricht, ist ein Server, auf dem Dämonen oder Dienste ausgeführt werden, die inaktiv sind und auf Verbindungen warten. Für Instanzen (Dungeons) wird normalerweise für jede Gruppe ein neuer Prozess gestartet, was bedeuten würde, dass es irgendwo einen Dispatcher-Dienst gibt (analog zu einem Threadpool)

Verwenden sie andere Protokolle? weil HTTP es Servern nicht erlaubt, Daten an Clients zu übertragen.

UDP ist das verwendete Protokoll. Es ist schnell, da es keine Garantien gibt, dass das Paket empfangen wird. Es ist dir egal, ob ein bisschen Latenz den Client dazu bringt, seine Weltposition zu verlieren.

Wie funktionieren die "Engines", um Hunderte von widersprüchlichen Gameplay-Events zentral zu bearbeiten?

Die meisten MMOs haben Zonen, die das auf eine bestimmte Anzahl von Leuten beschränken. Für diejenigen, die 100 Personen in einem Bereich haben, gibt es normalerweise eine hohe Latenz. Der Server muss mit 100en Sprüchen umgehen, die auf seinem Weg gesendet werden. Er muss die Schadensbeträge für jeden einzelnen berechnen. Für die Big Five MMOs stelle ich mir vor, dass es 10-20 sehr intelligente, mathematisch begabte Entwickler gibt, die täglich daran arbeiten und es gibt kein MMO da draußen, das es schon richtig verstanden hat, die meisten brechen nach 100 Spielern.

-

Schauen Sie nach Wowemu (es gibt keine offizielle Website und ich möchte nicht auf diese verlinken) eine zwielichtige Website). Dies basiert auf ApireCore , welches ein MMO-Simulator oder im Grunde ein Reverse-Engineer des WoW-Protokolls ist. So laufen die privaten WoW-Server ab. Soweit ich mich erinnere, ist Wowemu

  • mySQL
  • Python

ApireCore ist jedoch C ++.

Das Backend für Wowemu ist verblüffend einfach (ich habe es 2005 versucht) und wahrscheinlich eine vollständige Vereinfachung des Datenbankschemas. Es gibt Ihnen eine gute Vorstellung davon, was beteiligt ist.

    
Chris S 14.09.2009, 08:34
quelle
5

Viele Straßen führen nach Rom, und viele Architekturen führen zu MMORPGs.

Hier sind einige allgemeine Gedanken zu Ihren Stichpunkten:

  • Die Serverinfrastruktur muss die Skalierbarkeit unterstützen ... zusätzliche Server hinzufügen, wenn die Last zunimmt. Dies ist übrigens für Cloud Computing gut geeignet. Ich betreibe derzeit eine große App für Finanzdienstleistungen, die je nach Tageszeit und Jahreszeit skaliert werden muss. Wir verwenden Amazon AWS, um virtuelle Server fast sofort hinzuzufügen und zu entfernen.
  • MMORPGs, mit denen ich vertraut bin, verwenden wahrscheinlich keine Webdienste für die Kommunikation (da sie zustandslos sind), sondern ein benutzerdefiniertes serverseitiges Programm (z. B. ein Dienst, der TCP- und / oder UDP-Nachrichten abhört).
  • Sie verwenden wahrscheinlich ein benutzerdefiniertes TCP- und / oder UDP-basiertes Protokoll (schauen Sie sich die Socket-Kommunikation an)
  • Die meisten Spiele sind in "Welten" unterteilt, wodurch die Anzahl der Spieler im selben virtuellen Universum auf die Anzahl der Spielereignisse begrenzt wird, die ein Server (wahrscheinlich mit vielen CPUs und viel Speicher) vernünftig verarbeiten kann. Der genaue Mechanismus zur Ereignisverarbeitung hängt von den Anforderungen des Spieleentwicklers ab, aber im Allgemeinen erwarte ich, dass eingehende Ereignisse in eine Prioritätswarteschlange gehen (priorisiert nach empfangener Zeit und / oder Zeit und wahrscheinlich nach anderen Kriterien wie "wie schlimm ist es, wenn ...") wir ignorieren dieses Ereignis? ").

Dies ist insgesamt ein sehr großes Thema. Ich würde vorschlagen, dass Sie auf Amazon.com nach Büchern zu diesem Thema suchen.

    
Eric J. 13.09.2009 20:37
quelle
2

Da MMOs im Großen und Ganzen die Ressourcen eines Unternehmens für die Entwicklung und Bereitstellung benötigen, sind sie zu diesem Zeitpunkt wertvolle Unternehmens-IP. Daher gibt es nicht viele öffentlich verfügbare Informationen über Implementierungen.

Eine Sache, die ziemlich sicher ist, ist, dass MMOs im Großen und Ganzen einen benutzerdefinierten Client und einen 3D-Renderer verwenden und daher kein HTTP verwenden, weil sie keine Webbrowser sind. Online-Spiele werden ihre eigenen Protokolle haben, die auf TCP / IP oder UDP basieren.

Die Spielesimulationen selbst werden mit denselben Techniken wie jedes 3D-Netzwerkspiel erstellt. Sie können also nach Ressourcen für diese Problemdomäne suchen, um mehr zu erfahren.

Für den großen Vater, World of Warcraft, können wir vermuten, dass es sich bei der Datenbank um Oracle handelt, weil Blizzards Jobangebote häufig Oracle-Erfahrung als Voraussetzung / Plus angeben. Sie verwenden Lua für das Scripting von Benutzeroberflächen. C ++ und OpenGL (für Mac) und Direct3D (für PC) können als die Implementierungssprachen für die Spielclients angenommen werden, da Spiele damit gemacht werden.

Eine Firma, die cool darüber ist, ihre Implementierung zu diskutieren, ist CCP, die Eve Online-Entwickler ist. Sie haben eine Reihe von Vorträgen und Artikeln über die Infrastruktur von Eve veröffentlicht und es ist ein besonders interessanter Fall, da sie Stackless Python für viele Eve-Implementierungen verwenden.

Ссылка Ссылка

Es gab auch einen kürzlich erschienenen Game Developer Magazine Artikel über Eves Architektur:

Ссылка

    
Whatever 13.09.2009 21:37
quelle
1

Der Software-Engineering-Radio-Podcast hatte eine Episode mit Jim Purbrick über Second Life , in dem Server, Welten, Skalierung und andere MMORPG-Interna besprochen werden.

    
olle 13.09.2009 20:37
quelle
1

Traditionell basierten MMOs auf C ++ Server-Anwendungen, die unter Linux mit einer Datenbank für Backend-Speicher und Fat-Client-Anwendungen unter Verwendung von OpenGL oder DirectX kommunizieren.

In vielen Fällen enthalten der Client und der Server eine Skript-Engine, die es ermöglicht, Verhaltensweisen in einer höheren Sprache zu definieren. EVE ist dadurch gekennzeichnet, dass es hauptsächlich in Python implementiert ist und auf Stackless läuft, anstatt hauptsächlich C ++ mit einigen Skripten auf hoher Ebene zu verwenden.

Im Allgemeinen befindet sich der Server in einer Schleife, in der Anfragen von verbundenen Clients gelesen und verarbeitet werden, um die Spielmechanismen zu erzwingen und dann Aktualisierungen an die Clients zu senden. UDP kann verwendet werden, um Latenz und die Übertragung von veralteten Daten zu minimieren, aber da RPGs im Allgemeinen kein Twitch-Gameplay verwenden, ist TCP / IP normalerweise eine bessere Wahl. Comet oder BOSH können verwendet werden, um bidirektionale Kommunikation über HTTP für webbasierte MMOs und Web-Sockets zu ermöglichen, wird bald eine gute Option sein.

Wenn ich heute ein neues MMO erstellen würde, würde ich wahrscheinlich XMPP, BOSH verwenden und den Client in JavaScript erstellen, damit er ohne fetten Client-Download funktioniert und mit XMPP-basierten IM- und Voice-Systemen (wie gchat) zusammenarbeitet. . Sobald WebGL weitgehend unterstützt wird, würde dies sogar Browser-basierte virtuelle 3D-Welten ermöglichen.

Da die Umgebungen zu groß sind, um sie in einem einzigen Prozess zu simulieren, werden sie normalerweise geografisch zwischen Prozessen aufgeteilt, die jeweils einen kleinen Bereich der Welt simulieren. Oft gibt es eine optimale Population für eine Welt, daher werden mehrere Kopien (Shards) ausgeführt, die von verschiedenen Gruppen von Personen verwendet werden.

Es gibt eine gute Präsentation über die Second-Life-Architektur von Ian Wilkes, der hier als Director of Operations tätig war: Ссылка

Die meisten meiner Vorträge zur Second Life Technologie sind mit meinem Blog verlinkt: Ссылка

    
Jim Purbrick 11.06.2011 16:52
quelle
-2

Schauen Sie sich Erlang an. Es ist eine parallele Programmiersprache und Laufzeitsystem und wurde entwickelt, um verteilte, fehlertolerante Soft-Real-Time-Non-Stop-Anwendungen zu unterstützen.

    
ryeguy 13.09.2009 20:38
quelle