Aaron Fischer Ingenieur, Vater, Heimwerker, Problemlöser

05 Februar, 2016

nitrado.net Gameserver Webinterface

TL;DR:

Für die Firma marbis GmbH entstand in Zusammenarbeit mit meinen Arbeitskollegen Alex das neue Gameserver Webinterface zur Administration von gemieteten Dienstleistungen. Besonderes Augenmerk wurde hier auf die Ausfallsicherheit der Web-Oberfläche und der darunterliegenden Dienste gelegt. Der Kunde bezahlt die Leistungen im Vorraus und hat dementsprechend Anspruch auf die gemieteten Dienste. Mit dem Nitrado Gameserver Webinterface kann der Server per Browser administriert und mit ihm interagiert werden. Mittlerweile sind über 50 verschiedene Spiele integriert.

Eine Neuimplementierung des in die Jahre gekommenen Gameserver Webinterface wurde unumgänglich. So flossen die in den vergangenen Jahren gelernten Erfahrungen mit diesem in die Konzeption und Umsetzung eines neuen Systems.

Altes Webinterface

Die Programmiersprache und die Datenbank wurden beibehalten (PHP, MySQL), doch als Basis wird nun das Framework Symfony verwendet. Ziel war es, eine flexible und modulare Toolbox zu schaffen, auf der dann Spiel für Spiel auf das neue System migriert werden kann. Am Ende sollte es möglich sein, neue Spiele innerhalb von ein paar Stunden in das neue System einzubinden. Bestandsdaten, sowie sämtliche Features des alten Systems mussten migriert und nachgebaut werden, so dass für den Kunden keine Verschlechterung der Dienstleistung eintritt.

Webinterface

Features, die jedes Spiel gemeinsam haben wie einen Dateibrowser oder der Logfile-Viewer wurden so umgesetzt, dass die nur ein Mal implementiert werden mussten. Speziell für jedes Spiel sind die Einstellungen: Diese werden auf den unterschiedlichsten Wegen am Gameserver vorgenommen. So wurde eine Abstraktion von UI (Schieberegler, Eingabefelder, Beschreibungen, Fehlermeldungen, Constraints, ...) zu der eigentlichen Konfiguration am Gameserver geschaffen. Diese erlaubt es nun, sehr einfach neue Einstellungen hinzuzufügen.

Settings

Einige Spiele benötigen darüber hinaus spezielle Views und Funktionen, die nun problemlos implementiert werden können, ohne den Rest des Programmcodes anzupassen. Bspw. die Minecraft Overview-Map, die Auswahl von Karten/Mods für DayZ oder die RCON Echtzeit-Serverconsole.

Da das Webinterface in verschiedenen Ländern genutzt wird, musste es in 9 Sprachen übersetzt werden. Hierfür wurde ein Automatismus entwickelt, mit dem neue Übersetzungen direkt an die entsprechenden Übersetzer delegiert und nach Beendigung wieder zurück in die Codebase eingepflegt werden können. Nicht nur in verschiedenen Sprachen, sondern auch auf den verschiedensten Geräten (Vom Smartphone bis zum TripleHead Gaming-PC) wird das Webinterface genutzt. So muss sich das UI komplett responsive verhalten.

Gameserver haben besondere Anforderungen an die Hardware und das Netzwerk. Die Latenz beeinflusst den Spielfluss. Profi-Spieler merken auch kleinste Veränderungen. Bricht die Verbindung nur kurzzeitig ab, werden (bei einigen Spielen) alle Spieler aus dem Spiel geworfen. Dieser Umstand macht Gameserver ideale Ziele für DDoS-Angriffe. Aus diesem Grund wird mit teurer Spezialhardware der Traffic live überwacht und Auffälligkeiten mitigiert. Um dies dem Kunden zu visualisieren, werden dynamisch Graphen aus den Traffic-Daten erzeugt.

DDoS Analyse und Mitigation

Für Mitarbeiter im Support ist das Webinterface ein Arbeitswerkzeug, um dem Kunden bei Problemen zu assistieren. Hierfür wurden spezielle Funktionen eingebaut, die nur Support-Mitarbeitern zur Verfügung stehen.

Als Backend wurde anfangs das alte System verwendet und Funktion für Funktion durch das NitrAPI-Projekt ersetzt. Das neue Nitrado Webinterface wird laufend weiterentwickelt und optimiert.