Frage

Wie Massively Multiplayer Online RPG Spiele gebaut?

  • Welche Server-Infrastruktur sind sie gebaut auf? vor allem mit so vielen Kunden in Echtzeit verbunden und kommunizieren.

  • Sie sie verwalten mit Skripten, die auf Seite Anfragen ausführen? oder installierten Dienste, die im Hintergrund laufen und verwalten die Kommunikation mit angeschlossenen Clients?

  • Verwenden sie andere Protokolle? da HTTP erlaubt keine Server Daten an Clients zu drücken.

  • Wie die "Motoren" der Arbeit, zentral Hunderte von kollidiere Gameplay Ereignisse zu verarbeiten?

Vielen Dank für Ihre Zeit.

War es hilfreich?

Lösung

Welche Server-Infrastruktur sind sie gebaut auf? vor allem mit so vielen Kunden in Echtzeit verbunden und kommunizieren.

Ich würde die Server erraten werden unter Linux, BSD oder Solaris fast 99% der Zeit ausgeführt werden.

Sie verwalten sie Skripte mit, die auf Seitenanforderungen ausführen? oder installierten Dienste, die im Hintergrund laufen und verwalten die Kommunikation mit angeschlossenen Clients?

Der Server Ihrer Client-Gespräche werden ein Server ein Daemons oder Dienst ausgeführt wird, die für Verbindungen im Leerlauf Hören sitzt. Für Fälle (Dungeons), in der Regel ein neuer Prozess für jede Gruppe ins Leben gerufen, das es bedeuten würde, ist ein Dispatcherdienst irgendwo mananging dieser (analog zu einem Threadpool)

Haben sie andere Protokolle verwenden? da HTTP erlaubt keine Server Daten an Clients zu drücken.

UDP ist das Protokoll verwendet. Es ist schnell, da es keine Garantie das Paket empfangen wird macht. Sie kümmern sich nicht, wenn ein bisschen Latenz des Clients führt ihre Weltposition zu verlieren.

Wie die „Motoren“ der Arbeit, zentral Hunderte von kollidiere Gameplay Ereignisse zu verarbeiten?

Die meisten MMOs haben Zonen, die diese zu einer bestimmten Menge von Menschen zu begrenzen. Für diejenigen, die in einem Bereich 100s von Menschen zu tun haben, ist es in der Regel mit hohen Latenz. Der Server ist mit mit 100s von Zaubern zu tun ist, seinen Weg geschickt, die es Schaden beläuft sich für jeden berechnen müssen. Für die großen fünf MMOs ich mir vorstellen, es gibt Teams von 10-20 sehr intelligent, mathematisch begabte Entwickler täglich daran arbeiten und es ist kein MMO da draußen, dass es richtig noch bekommen hat, die meisten Pause nach 100 Spieler.

-

Haben Sie einen Blick für Wowemu (es gibt keine offizielle Seite und ich don ‚t will eine zwielichtige Seite verlinkt). Dies basiert auf ApireCore das ist ein MMO-Simulator, oder im Grunde ein Reverse Engineering des WoW-Protokoll . Dies ist, was der private WoW-Server ablaufen. Von dem, was ich Wowemu erinnern ist

  • mySQL
  • Python

Allerdings ApireCore ist C ++.

Das Backend für Wowemu verblüffend einfach ist (ich versuchte, es in 2005 jedoch) und wahrscheinlich eine vollständige über die Vereinfachung des Datenbankschemas. Es ist gibt Ihnen eine gute Vorstellung davon, worum es geht.

Andere Tipps

Viele Wege führen nach Rom, und viele Architekturen führen zu MMORPGs.

Hier sind einige allgemeine Gedanken zu Aufzählungszeichen:

  • Die Server-Infrastruktur, braucht die Fähigkeit zur Unterstützung zu skalieren ... fügen zusätzliche Server als Last erhöht. Dies ist gut geeignet, um Cloud Computing durch die Art und Weise. Ich bin derzeit eine große Finanzdienstleistungen App ausgeführt wird, der bis skalieren muss und unten je nach Tageszeit und Zeit des Jahres. Wir verwenden Amazon AWS fast sofort hinzufügen und virtuellen Server entfernen.
  • MMORPGs, die ich vertraut bin mit wahrscheinlich keine Web-Services für die Kommunikation verwenden (da sie staatenlos sind), sondern eine benutzerdefinierte serverseitige Programm (zB ein Dienst, der für TCP und / oder UDP-Nachrichten hört).
  • Sie wahrscheinlich eine benutzerdefinierte TCP und / oder UDP-basiertes Protokoll (Blick in die Socket-Kommunikation)
  • sind die meisten Spiele in „Welten“ segmentiert, die Anzahl der Spieler, die Begrenzung der Anzahl der Spielereignisse in der gleichen virtuellen Universum sind, dass ein Server (wahrscheinlich mit vielen CPUs und viel Speicher) vernünftigerweise Prozess. Der genaue Ereignisverarbeitungsmechanismus hängt von den Anforderungen der Game-Designer, aber ich erwarte, dass im Allgemeinen, dass eingehende Ereignisse in eine Prioritätswarteschlange gehen (priorisiert von Zeit empfangen und / oder Zeit und wahrscheinlich auch andere Kriterien geschickt entlang der Linien von „wie schlimm ist es, wenn wir ignorieren dieses Ereignis? ").

Dies ist ein sehr großes Thema insgesamt. Ich würde vorschlagen, Sie Bücher über auf Amazon.com überprüfen dieses Thema abdeckt.

Da MMOs Großen und Ganzen erfordern die Ressourcen eines Unternehmens zu entwickeln und einzusetzen, an welcher Stelle sie sind wertvolle Firma IP, es gibt nicht eine Tonne von öffentlich zugänglichen Informationen über Implementierungen ist.

Eine Sache, die ziemlich sicher ist, dass seit MMOs im Großen und Ganzen Verwendung eines angepassten Client-und 3D-Renderer sie HTTP nicht verwenden, weil sie nicht Web-Browser sind. Online-Spiele gehen, um ihre eigenen Protokolle auf TCP / IP oder UDP gebaut haben.

Das Spiel Simulationen werden sich die gleichen Techniken wie jeder vernetzten 3D-Spiels gebaut werden verwendet, so dass Sie auf Ressourcen für diesen Problembereich schauen, um mehr zu erfahren.

Für den großen Papa, World of Warcraft, können wir vermuten, dass ihre Datenbank ist Oracle, weil Blizzard Joblisten häufig zitieren Oracle Erfahrung als Voraussetzung / Plus. Sie verwenden Lua für Benutzeroberfläche Scripting. C ++ und OpenGL (für Mac) und Direct3D (für PC) können als die Implementierungssprachen für das Spiel Kunden angenommen werden, denn das ist, was Spiele gemacht mit.

Ein Unternehmen, das über diskutieren ihre Umsetzung cool ist CCP, online Macher von Eve. Sie haben eine Reihe von Präsentationen und Artikeln über Evas Infrastruktur veröffentlicht, und es ist ein besonders interessanter Fall, weil sie Stackless Python für viele Evas Implementierung verwenden.

http://www.disinterest.org/resource/PyCon2006-StacklessInEve.wmv http://us.pycon.org/2009/conference/schedule/event / 91 /

Es gab auch einen letzten Game Developer Magazine Artikel über Evas Architektur:

https : //store.cmpgame.com/product/3359/Game-Developer-June%7B47%7DJuly-2009-Issue---Digital-Edition

Das Software Engineering Radio Podcast hatte ein

Traditionell basieren auf C ++ Server-Anwendungen auf Linux laufen, die mit einer Datenbank für Back-End-Speicher und Fat-Client-Anwendungen mit OpenGL oder DirectX MMOs haben.

In vielen Fällen sind der Client und Server einbetten ein Scripting-Engine, die Verhaltensweisen ermöglicht in einer höheren Sprache definiert werden. EVE ist in bemerkenswert, dass es vor allem in Python implementiert und läuft auf der Stackless anstatt meist C ++ mit einigen hohen Skripten.

Im Allgemeinen setzt sich der Server in einer Schleife Leseanforderungen von angeschlossenen Clients, die darin enthaltenen Spielmechanik zu erzwingen und dann Aktualisierungen an den Kunden versenden. UDP kann Latenz und die Weiterverbreitung von veralteten Daten zu minimieren, verwendet werden, aber als RPGs im Allgemeinen nicht Zucken Gameplay TCP verwenden / IP ist in der Regel die bessere Wahl. Comet oder BOSH kann verwendet werden, damit die bidirektionale Kommunikation über HTTP für Web-basierte MMOs und Web-Sockets wird in Kürze eine gute Option sein.

Wenn ich den Bau eines neuen MMO ich heute wahrscheinlich XMPP verwenden würde, BOSH und den Client in JavaScript bauen, wie das erlauben würden, ohne Fat-Client herunterladen zu arbeiten und mit XMPP basierten Instant Messaging und Voice-Systeme (wie GChat) interoperabel . Sobald WebGL wird weitgehend unterstützt dies würde auch Browser-basierte virtuelle 3D-Welten ermöglichen.

Da die Umgebungen zu groß sind, in einem einzigen Prozess zu simulieren, sie werden in der Regel geographisch zwischen Prozessen aufgeteilt, von denen jeder simuliert einen kleinen Bereich der Welt. Oft gibt es eine optimale Bevölkerung für eine Welt, so dass mehrere Kopien (Scherben) werden ausgeführt, die verschiedenen Gruppen von Menschen verwendet werden.

Es gibt eine gute Vorstellung über die Second Life-Architektur von Ian Wilkes, die der Director of Operations hier war: http://www.infoq.com/presentations/Second-Life-Ian-Wilkes

Die meisten meiner Gespräche über Second Life Technologie verbunden sind, um aus meinem Blog unter: http://jimpurbrick.com

Hier finden Sie aktuelle Erlang . Es ist eine gleichzeitige Programmiersprache und Laufzeitsystem, und wurde entwickelt, verteilt zu unterstützen, fehlertolerante, Soft-Echtzeit, non-stop-Anwendungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top