Achtung: Archivierter Beitrag
Lieber Leser, lieber Pentaquin-Follower, dieser Artikel bezieht sich auf das ursprünglich geplante Pentaquin-MMORPG, dessen Entwicklung wir auf Eis gelegt haben. Die Inhalte können dementsprechend nicht mehr aktuell sein.
Weitere Infos zu diesem Kurswechsel gibt's hier | Zum Nachfolgerprojekt
Alles rund um die MMORPG Programmierung von Pentaquin und was bei der Spielentwicklung unter der Haube passiert.
Hier erfahrt ihr mehr über die technischen Details der MMORPG Programmierung. Das Online-Rollenspiel wird in der Programmiersprache Java entwickelt. Unsere bereits weit entwickelte, eigens für Pentaquin ins Leben gerufene Engine PentaCore basiert auf LibGDX und LWJGL, ist dementsprechend leistungsstark und unterstützt OpenGL-Grafik.
Game Client Programmierung
Der Spiel Client basiert auf unserer PentaCore Engine und der Network Engine, die extra für das Spiel Pentaquin entwickelt wurden.
Hier kommt alles zusammen, was das Spiel betrifft - Gameplay Mechaniken, Story, Spielwelt, Charakter Design, Grafiken, Sounds usw.
Sobald der Client weiter fortgeschritten ist, werden hier hier weitere Features präsentieren können.
Eigenes Map Format und Map Synchronisierung
Zur Erstellung unserer Maps benutzen wir den kostenlosen Map Editor Tiled, welches wir zusammen mit einem selbst geschriebenem Plugin verwenden, um unser Haus eigenes PQM Map Format zu exportieren.
Dieses Format ist speziell an unser Entity-Component-System und unsere Bedürfnisse angepasst, wird auf dem Server gespeichert und dann mit dem Client synchronisiert.


Server Backends
Eines der wohl größten Herausforderungen eines 2D Massively Multiplayer Online Role-Playing Games (kurz MMORPGs) stellt die Server Backend Architektur dar.
Die MMORPG Programmierung stellt hierbei besonders viele Anforderungen:
- viele Spieler auf einer Spiel Welt --> möglichst horizontale Skalierung der Server
- gemeinsame Kämpfe
- möglichst geringe Latenz
- möglichst keine Lade- / Wartezeiten
- flüssiger Ablauf des Spiels
- rolling updates (Entwickler können im Hintergrund ihre Server updaten, ohne dass dies auch nur ein Spieler wirklich merkt)
- und viele mehr...
Pentaquin besitzt aus diesem Grund bereits jetzt 5 verschiedene Server Arten
- Session Server (hält alle Sitzungen der eingeloggten Spieler über die Server hinweg)
- Login Server
- Proxy Server (mit diesem Server verbindet sich der Spieler)
- Cluster Manager Server (verwaltet das Server Cluster an sich)
- Region Server (ist jeweils für einzelne Regionen der Spielwelt zuständig)
- Update Server (noch nicht implementiert, liefert Updates an die Clients aus)
Moderne Datenbanken
Bei einem MMORPG ist die Wahl der richtigen Datenbank(en) ebenfalls entscheidend für die späteren Zugriffszeiten und damit Latenzen. Außerdem speichert man bei einem MMO nicht gerade eine unbedeutende Menge an Informationen.
Wir haben uns speziell für die NoSQL Datenbanken Hazelcast und Cassandra entschieden, da diese nicht nur zu den schnellsten auf dem Markt gehören (laut einigen Berichten ist Hazelcast wohl die schnellste NoSQL Datenbank aktuell auf dem Markt), sondern sich auch schon bei großen Firmen (z.B. Apple, Facebook, usw.) etabliert haben. Alle beide sind natürlich kostenlos in der Community Edition für jedermann verfügbar. Dank ihrer einzigartigen Performance Werte sind diese beiden Datenbanken auch speziell für MMOs geeignet. Die Datenbank Cassandra wurde z.B. von Facebook initiiert und natürlich auch genutzt, wird heutzutage aber von der Apache Software Foundation weiter entwickelt, basiert auf Googles BigTable Technologie und wurde speziell für BigData Anwendungen entwickelt.
Hazelcast ist ein In Memory Data-Grid, was bedeutet, dass Hazelcast alle Daten komplett im Arbeitsspeicher (RAM) hält und somit quasi horizontal skalierbar ist. Somit nutzen wir eine Hybrid Lösung mit Cassandra als persistenten Speicher und Hazelcast für die nötige Performance, die ein MMO so abverlangt. Dies soll bei Pentaquin nicht nur für die nötige Performance sorgen und absolute Ausfallsicherheit und Redundanz garantieren, sondern den Programmierern auch mehr Freiheiten und Flexibilität verschaffen.
