Klannexus Skins wip

Wochenrückblick: Eigene Serversoftware für effizientes Worldloading

Wochenrückblick10. Apr. 2022

Allgemein

In den vergangen Wochenrückblicken haben wir beschrieben, wie so langsam alles zusammenkommt. Auf technischer Ebene standen uns einige Bugs im Wege, doch inzwischen können wir all die vielen Elemente ausprobieren, die wir für den Release geplant haben. Was hier noch fehlt, ist das Feintuning (bzw. Balancing), die Performanceoptimierung und das Polishing, um hieraus etwas zu schaffen, was sich so richtig rund anfühlt.

Auf inhaltlicher Ebene darf es natürlich gerne mehr sein. Im Titelbild sehen wir zum Beispiel Testmuster für verschiedene Skins eines Nexus' (dem Herz einer Klanbasis). Hiermit prüfen wir, ob alles technisch einwandfrei funktioniert und was es zu beachten gibt.

Bei genauerer Betrachtung ist die Liste an offenen bzw. unvollendeten Aufgaben jedoch deutlich größer. Wir haben das letzte Wochenende genutzt, um uns gegenseitig zu Informieren und eine Übersicht darüber zu erschaffen, was wir vor dem Polishing noch erledigt haben wollen. Was wir hier übrigens nicht sehen, ist dass einiges davon auch schon weit fortgeschritten ist. Neben der Website, die eine zentrale technische Rolle für unser Netzwerk hat, müssen etwa auch die Tutorials, das Anti-Cheat-System und auch die Premiumfeatures überarbeitet und ausgebaut werden.

Eine grobe ToDo-Liste

Paper-Fork Cardboard

Dass Performance bei uns doch wieder zum Thema geworden ist, mag den einen oder anderen, der schon lange die News verfolgt oder an den Betatests teilgenommen hat, doch sehr überraschen. Denn zum einen war hier die Spielperformance zuletzt ziemlich makellos und wir haben ja über Monate daran gewerkelt, dass das auch so bleibt, wenn hunderte Spieler spielen wollen.

Doch haben wir noch eine große Hürde zu überwinden: Das Initalisieren der Welten für den Klankrieg. Beim Starten eines Klankriegs wird eine zufällige Karte gewählt, die dann abhängig von den Skins, die die beiden Klans für ihre Basen gewählt haben, völlig anders aussieht. Hierbei müssen mehrere Millionen Blöcke in der Welt gesetzt werden. Das setzen einer solchen Menge von Blöcken ist für Minecraft ein hoch aufwändiger Prozess. Das liegt zum Beispiel an den vielen Neuberechnungen des Lichts, die hierdurch ausgelöst werden. So kann die Initialisierung der Karte aktuell gerne schon einmal zwischen einer und zwei Minuten benötigen.

Minecraft ist also technisch nicht für unsere Pläne gewappnet. Deshalb haben wir unsere eigene Serversoftware "Cardboard" ins Leben gerufen. Cardboard ist eine Erweiterung der Paper-Serversoftware, in der wir weitere Schnittstellen einbauen können, existierende Features verbessern und allgemein Funktionen ergänzen, die wir für unser Netzwerk benötigen.

Dieser Server nutzt Cardboard

Das erste große Feature ist dabei unser eigener Worldloader für unser "SHARD" (Shard Highly Augmented Region Data) Weltenformat. Damit können wir stark optimierte Welten laden, bei denen nur die nötigsten Informationen enthalten sind. So sind die Welten-Dateien viel kleiner, können als rohe Bytes komprimiert in der Datenbank abgelegt werden und es ist viel leichter ersichtlich, welche Blöcke in der Welt enthalten sind.

Unser SHARD-Format hat aber noch einen weiteren Clou: Es ist eine Erweiterung unseres Schematic-Systems. Jede Schematic ist so gleichzeitig eine gültige Welt. Wir können also praktisch Welten als Schematics nutzen und Schematics als Welten. Und da wir Schematics kombinieren können, ohne sie dafür in den Welten laden zu müssen, können wir die komplette Welt (inklusive der Skins und Basen) zusammenstellen, bevor wir sie laden.

Der Loader wird direkt in die Serversoftware eingebaut, damit wir von kurzen Latenzen und einer sauberen Integration in das bestehende Weltensystem profitieren können. Die Welten werden dabei immer vollständig im Arbeitsspeicher gehalten der Zugriff auf die Entitäten, Chunks und co. findet über optimierte Methoden statt.

Ausblick

Noch sind wir hier in der Umsetzung und können daher noch keine Test-Ergebnisse oder erste Benchmarks präsentieren, aber es geht in großen Schritten voran, weshalb wir vielleicht schon in der nächsten Woche etwas mehr zeigen können.

Auch beim Thema Balancing geht es gut vorwärts. Hier wurde eine erste Version des Interfaces für die Verwaltung der Values/Balancing-Config entwickelt. Man kann nun beliebig die Werte bearbeiten, neue Werte anlegen und existierende Werte löschen. Dabei werden auch die in der letzten Woche besprochenen Formeln unterstützt.

Unser Wochenrückblick erscheint (nahezu) jeden Sonntag um 19 Uhr. Folg uns gerne auf Discord, Instagram und Twitter, um keine News zu verpassen!