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?
Antworten:
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.
quelle
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.).
quelle
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.
quelle
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.
quelle
Für EVE hielten sie auf der PyCon 2009 einen Vortrag über StacklessIO: http://us.pycon.org/2009/conference/schedule/event/91/
quelle
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.
quelle
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.
quelle