In welchen Sprachen werden MMORPGs wie EVE Online und WOW entwickelt? [geschlossen]


22

Wie ich es verstehe, sind MMORPGs Spiele, die auf Ihrem Computer wie jedes andere normale 3D-Videospiel ausgeführt werden, aber bei jeder Aktion, die im Spiel ausgeführt wird, werden Änderungen am Universum über HTTP-Aufrufe an den Server vorgenommen. Der Computer des Spielers leistet also den größten Beitrag zum Rendern der Grafiken und Animationen, während die Online-Kommunikation über Web-Frameworks erfolgt.

  • Ich frage mich also, welche Web-Frameworks, Webserver und Datenbanken zum Erstellen von MMORPGs wie EVE Online und WOW verwendet werden.

  • Welche Programmiersprachen und 3D-Game-Engines werden verwendet, um die Client-Seite (3D-Grafik / Animation / Sounds) in das Spiel einzubeziehen?


Ich denke, dass so ziemlich jedes MMO mit handelsüblichen Technologien beginnt und diese dann verdammt noch mal individuell anpasst, sobald sie eine bestimmte Größe erreicht haben und anfangen, ihre Tools wirklich zu spezialisieren. Stackless I / O in EVE Online ist ein fantastisches Beispiel: eveonline.com/devblog.asp?a=blog&bid=584
Michael Stum

Meinen Sie TCP-Aufrufe an den Server? HTTP (HyperText Transfer Protocol) wird von Webservern und Browsern für Webseiten verwendet und hat nichts mit MMOs zu tun, es sei denn, Sie meinen ein browserbasiertes Spiel wie urbandead.
Stonemetal

Michael Stum, wird Stackless I / O mit Stackless Python erstellt?

@Adam keine Ahnung, ob diese beiden verwandt sind oder nicht.
Michael Stum

@Michael Stum Gerade herausgefunden, dass es aus diesem Video stammt us.pycon.org/2009/conference/schedule/event/91

Antworten:


30

Die meisten Unternehmen verwenden C ++. Eva ist ein Ausreißer, die Kerngrafik-Engine ist in C ++, während die Spielelogik, wie andere angemerkt haben, in Python ist. CCP leistet auch viele Beiträge zu Stackless selbst, das größtenteils in C enthalten ist. WoW ist C ++ für das Spiel selbst, obwohl die Benutzeroberfläche in Lua geschrieben ist. Cryptic (Champions Online, Star Trek Online) verwendet einfaches C, was in der Branche jedoch eher selten vorkommt. Ab und zu taucht Java auf, z. Runescape, aber mir fällt nichts AAA ein. Disney hat Panda3D (eine in C geschriebene Python-basierte Engine) für eine Reihe seiner MMOs verwendet, aber wie bei Eve ist das ungewöhnlich.

Insgesamt scheint es C ++ für die Spielelogik und die Engine zu sein, wobei Lua für das Client-Scripting dem Standard am nächsten kommt.

Was die Webseite angeht, ist alles vorbei. Wir (Cryptic) verwenden eine Mischung aus PHP, C und Python (Django) für verschiedene Bits. CCP verwendet ASP für die Website selbst und Python für die Stromversorgung des Backends (das jedoch langsam zusammenwächst). WAR und LOTRO verwenden beide PHP für ihre Site, obwohl nicht klar ist, welche speziellen Frameworks sie verwenden (falls vorhanden).

Sie haben erwähnt, dass MMOs über Web-API-Aufrufe funktionieren, was jedoch nicht der Fall ist. Ein HTTP-basiertes Protokoll wäre viel zu ineffizient, und HTTP ist nicht für Verbindungen mit langer Laufzeit ausgelegt. Nahezu alle MMOs (die nicht wie Kingdom of Loathing oder Urban Dead webbasiert sind) verwenden benutzerdefinierte Server und benutzerdefinierte Protokolle. Die Clients sind in hohem Maße statusbehaftet und führen so etwas wie das Aufrufen einer Inventar-Benutzeroberfläche nicht dazu, dass eine Anforderung an den Server ausgelöst wird, da alle diese Informationen auf dem Client zwischengespeichert werden.


Wenn Sie also sagen, dass die Clients einen hohen Status aufweisen, bedeutet dies, dass die Client-App alle Daten dort speichert und nicht immer Anforderungen an den Server sendet. Wie lernt man außerdem, benutzerdefinierte Server und Protokolle zu entwickeln?

2
Ja, um den Netzwerkverkehr zu reduzieren, speichert der Client viele Informationen lokal zwischen (im Gegensatz zu einem Webspiel, bei dem normalerweise alles direkt vom Server stammt). Der Server ist jedoch weiterhin autorisierend, um Betrug zu verhindern. Was das Lernen betrifft, wie man so etwas entwickelt. Ich würde nach einem Buch über "Netzwerkprogrammierung" suchen. Es gibt eine Menge Tools, die helfen können, Twisted, Protocol Buffers, usw. usw. Eine Menge hängt davon ab, in welcher Sprache und in welchen Frameworks Sie sich am wohlsten fühlen.
coderanger

3
Panda3d ist in C ++ programmiert, nicht in C.
jokoon

5

Ein paar Links für EVE Online:

Grundsätzlich läuft EVE Online auf SQL Server 2005 und einer anderen Microsoft-Software. Das Client-Backbone ist jedoch meistens in Python (Stackless Python, um genau zu sein, soweit ich mich erinnern kann) und etwas C ++ geschrieben.

In Bezug auf World of Warcraft weiß ich, dass sie Lua für alle Client-GUI-Dinge verwenden, aber abgesehen davon denke ich, dass sie Lua für nichts anderes verwenden. C ++ ist wahrscheinlich das, was verwendet wird. WoW, ich würde denken, verwendet auch einige Windows-Boxen, aber es scheint wahrscheinlich, dass sie einige andere Arten von Boxen haben, die für bestimmte Aufgaben spezifisch sind, die möglicherweise überhaupt nicht auf Windows basieren.

Nicht viele Informationen, aber ich hoffe, es hilft.

Viele dieser Spiele trennen Server basierend auf der Funktionalität, sodass sie einen Datenbankserver haben, der nur für das Speichern von Objekten / was auch immer und der Server, auf denen die Spielwelt tatsächlich ausgeführt wird, zuständig ist (Überprüfen von Spieleraktionen usw.).


3

Ich bin mir bei EVE und WoW nicht ganz sicher, aber ich habe gesehen, dass MMO-Spiele C ++, C #, Java und sogar PHP für Server verwenden (letzteres jedoch nur für einfache browserbasierte Spiele).

Client wird am häufigsten in C ++ geschrieben (oder in Flash, wenn es sich um ein browserbasiertes Spiel handelt). Ich habe einmal mit einem .NET-basierten Client gearbeitet (C # gemischt mit C ++ / CLI).

Und fast immer wird eine Art dynamische Skriptsprache verwendet, um die Entwicklung von "Designer" -Inhalten zu erleichtern - z. B. Fähigkeiten, Aufgaben usw. - Dinge, die sich häufig ändern und von Spieledesignern im Gegensatz zu Programmierern geändert werden können.


3

Erstens verwenden MMORPGs oder Online-Spiele nicht in erster Linie HTTP oder "Web-Frameworks".

Ein Server wird wie das Spiel selbst in C ++ programmiert, und die Kommunikation erfolgt über Sockets, um Pakete über das Netzwerk zu übertragen.

Server führen oft ein anderes Betriebssystem aus und enthalten nur Spielcode, sodass viele Spieler problemlos auf einem einzelnen Server spielen können.

Ich weiß nicht, wie Blizzard ihre Server verwaltet, ich weiß nicht, ob sie Cluster verwenden oder nicht.

Wenn ich "Sockets" und "C ++" sage, spreche ich natürlich über das Echtzeitspiel, nicht über andere Dienste, die das Spiel möglicherweise bietet, wie zum Beispiel die Waffenkammer mit WoW. Sie verwenden möglicherweise nur eine Datenbank, die von mehreren Diensten gelesen werden kann, wie dem Forum, der Waffenkammer, dem Spiel, der Kontoverwaltung usw., aber ich bin der Meinung, dass sie abhängige Datenbanken haben, die nach neuen Einträgen usw. suchen, damit alles synchronisiert werden kann schön auf.

Ich denke, der Typ, der für den Netzwerkteil von WoW verantwortlich ist, könnte ein echter Horror sein.


3
"Ich denke, der Typ, der für den Netzwerkteil von WoW verantwortlich ist, könnte ein echter Horror sein." Kleine Serverpopulationen und clientseitige Bewegungen machen meiner Meinung nach nicht wirklich schlecht. Obwohl im Nachhinein auch 20/20 ist.


0

Es gibt Dutzende von Game-Engines. Die beiden, die mir in den Sinn kommen, sind Unreal Engine und Source.

Was die Sprachen betrifft, hängt dies von der jeweiligen Aufgabe ab. Das Rendern und andere leistungskritische Teile werden normalerweise in einer der Muttersprachen ausgeführt. C ++ zum Beispiel. Es ist jedoch üblich, eine dynamische Sprache zum Definieren von Skripten zu verwenden, da sich dieser Code mit höherer Wahrscheinlichkeit ändert und häufig von weniger "Hardcore" -Programmierern geschrieben wird :-) Lua, Python, Ruby - alle können hier verwendet werden.


0

WoW verwendet Lua auch für alle internen Skripte. Ich bin nicht sicher, ob sie die Sprache selbst geändert haben, aber ich würde es nicht bezweifeln, damit es ihren Bedürfnissen entspricht. Sie können wetten, dass sie über verschiedene Tools verfügen, mit denen ihre Designer Skripte leicht ändern / optimieren können. Dies sind Insider-Informationen von Freunden, die WoW-Entwickler waren.


Wenn man eine Sprache wie Lua ändert, bedeutet dies, dass sie ihren eigenen persönlichen Rahmen erstellen, der auf Lua basiert. Richtig? Wenn ja, verringert dies die Leistung / Geschwindigkeit der entwickelten Programme?

@ J3M7OR3 - Nach meinem Verständnis haben sie ihr eigenes internes Framework auf Basis von Lua erstellt, aber ich konnte unmöglich etwas über Leistung / Geschwindigkeit sagen.
Kyle C
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.