Wochenrückblick: Hochfahren des Hubs unter Velocity und Bauarbeiten am Spawn

Allgemein

Mit JCVelocity haben wir die Grundlagen dafür geschaffen, sehr viele Spieler auf nur einem Server spielen lassen zu können. Doch Velocity und unser Plugin dafür ist nur ein Teil eines komplexen Systems, in dem viele Elemente miteinander kommunizieren und harmonieren müssen. In dieser Woche war es an der Zeit, das ganze System hochzufahren. Zwar noch im kleinen Maßstab: Also auf einem Server, aber mit einem Unterbau, der mehr kann. Mehr dazu erfahrt ihr im Abschnitt „Entwicklung“.

PvP-Spawn

In dieser Woche können wir euch erste Bilder von der zentralen Kirche am Hauptplatz des PvP's zeigen. Auch wenn letzte Details noch nicht abgeschlossen sind, so dient sie für uns als Referenz dafür, welche Qualität wir für die zentralen Bauwerke des Spawns anzielen ("Target-Art" genannt). Noch befinden sich die Bauarbeiten am Spawn in einer sehr frühen Phase, sodass wir es für diese Woche bei diesem Bild belassen werden. Jedoch wollen wir in der nächsten oder spätestens übernächsten Woche mehr vom großen Ganzen zeigen:


WIP: Bei der Kirche fehlt noch die große Kuppel in der Mitte und das runde Endstück. Außerdem sollen die Dächer der beiden Haupttürme nochmal überarbeitet werden.

Entwicklung

Nachdem ja in der letzten Woche endlich wieder alles kompilieren konnte, hat Scrayos nun versucht, alle neuen Komponenten gemeinsam hochzufahren:

Zitat von Scrayos

Dabei war insbesondere das Hochfahren von Velocity natürlich sehr interessant, weil wir hier gar keinen Vergleichswert hatten und so nur mutmaßen konnten, ob unser „Port“ von BungeeCord zu Velocity erfolgreich sein würde. Immerhin mussten wir hier auch viel mit der internen Arbeitsweise von Velocity hantieren und Velocity und BungeeCord verhalten sich (in Bezug auf Events, Server und Befehle) oft unterschiedlich.


Insgesamt gab es aber nur ein, zwei kleinere Flüchtigkeitsfehler (die auch alle mit MongoDB und nicht mit Velocity zusammenhingen) und so konnte Velocity direkt am ersten Tag hochgefahren werden. Und auch der Hub war schnell bereit für den ersten Verbindungsversuch.


Die erste Verbindung prüft praktisch ALLE unserer neuen MongoDB-Komponenten und deshalb konnten wir hier direkt ein paar kleinere Fehler finden, die sich aber allesamt in jeweils kurzer Zeit beheben ließen. Nach einem weiteren Tag war es dann möglich den Hub-Server durch den Proxy ohne einen Fehler zu betreten und wieder zu verlassen.

Jetzt kann man den Server komplett ohne Fehler betreten und verlassen!


Es gibt noch ein paar Dinge auf der ToDo, die noch nicht so klappen, wie sie klappen sollten: Zum Beispiel werden die Nutzer-Einstellungen noch nicht beim Betreten des Netzwerks geladen und direkte Änderungen an der Datenbank werden Ingame noch nicht für alle Attribute (optisch) live aktualisiert. Aber alle wichtigen Features funktionieren bereits wieder.


Zum Ende der Woche hin wurde mit einem größeren Refactoring der Einstellungen begonnen. Zum einen, damit die Einstellungen nun beim Betreten automatisch geladen und aktualisiert werden können, und zum anderen, weil wir sowenig Mapping-Code wie möglich schreiben möchten (also Code, der Daten von einer Repräsentation in eine andere konvertiert (Codecs)).


Ein solcher Codec konvertiert ein Java-Objekt (unter anderem eine Uhrzeit) in ein JSON-Objekt (das dann als normaler Text dargestellt werden kann). Diese Codecs benötigen wir also um Java-Objekte in die Datenbank schreiben und wieder auslesen zu können. Nahezu alle Objekte, die wir bei uns verwenden, können wir so ohne zusätzlichen Code einfach dauerhaft abspeichern. Das erleichtert die Programmierung ungemein.

Zitat von Scrayos

Zusammenfassend bin ich sehr zufrieden, wie reibungslos der Umstieg klappt. Es gab sicherlich hier und da ein paar Anpassungen, aber wir haben nun eine unheimlich robuste Struktur, müssen für denselben Effekt weniger Code schreiben und können nun noch besser verteilte Systeme schreiben, bei denen wir auch beispielsweise durch die Website Live Änderungen am Server vornehmen können, indem wir einfach nur einen Wert in der Datenbank setzen.

Ausblick

In der kommenden Woche wird wieder das alljährliche Teamtreffen stattfinden. Dieses Jahr werden wir jedoch in einem kleineren Kreis zusammen kommen. Denn einerseits war es schwieriger denn je, einen gemeinsamen Termin zu finden und andererseits wollten wir im Zusammenhang mit Corona auch keine große Sache daraus machen.


Dennoch gibt es gute Gründe, sich auf den kommenden Wochenrückblick zu freuen: Denn uns erwarten nicht nur Bilder vom Teamtreffen, sondern große Fortschritte an der Infrastruktur, am PvP wie auch an der Website. Die Infra-Entwickler werden sich als nächstes Kubernetes und Agones widmen, die Builder sowohl dem Spawn, wie auch dem ersten Eroberungspunkt und die Game-Entwickler werden an einem Prototyp für die Klanwelten arbeiten.


Wir halten euch natürlich per Discord , Instagram und Twitter auf dem Laufenden! <3