Wochenrückblick: Ultraschneller Worldloader, Umfangreicheres Custom UI und Boosts

Allgemein

Die letzten zwei Wochen standen bei uns im Schatten des Worldloader-Problems. Nach wochenlanger Vorbereitung lief das System zwar dann im Groben, doch an einem kritischen Bug bissen sich unsere Entwickler ganze eineinhalb Wochen die Zähne aus. Einige Tage später mussten sich sogar die Nicht-Programmierer im Team die Funktionsweise des Codes erklären lassen, in der Hoffnung, dass ihnen dabei Ideen kommen und Dinge auffallen, auf die ein Programmierer in der Regel nicht kommt.


Und so mussten wir uns am Anfang der letzten Woche schweren Herzens eine Frist setzen: Wird der Fehler bis Sonntag nicht gefunden, wäre das Cardboard-Projekt gescheitert und der Klankrieg müsste aus Performancegründen ein radikales Downgrade erhalten! =O

Hochwertige Icons und intuitives UI

Unsere Artists haben derweil begonnen, unser User Interface zu polishen und hierbei eine ganze Reihe an Verbesserungsvorschlägen herausgearbeitet. Mit einer ganzen Palette an neuen Icons wollen wir langfristig z.B. völlig auf Minecraft-Items als Symbole verzichten. Hierdurch kann man immer klar unterscheiden, ob es sich um ein Item handelt, oder um ein UI-Element.


In der bald bevorstehenden Polishing-Phase wollen wir auch noch einmal gesondert darauf achten, dass Menüs so übersichtlich und klar geordnet wie möglich sind.


Mächtige Boosts

Die Gameplay-Entwickler erarbeiteten unterdessen die Grundlage für verschiedenste Boosts. Hierdurch können wir ganz unterschiedliche Events stattfinden lassen. Etwa ein 2x Exp-Event am Wochenende, oder regelmäßig einen doppelte Geldausbeute-Beute Donnerstag. Auch Spieler können zusätzlich Boosts on Top aktivieren, sodass alle Spieler dann für einen bestimmen Zeitraum lang doppelt geboostet sind.



In den kommenden Wochen werden wir im Zusammenhang mit unserem Balancing austesten und final entscheiden, welche Boosts es genau geben wird, wie man sie bekommt und wie wir sie visuell umsetzen.

Ultraschneller Worldloader

Geduld kann sich auszahlen! Nach Tagen des Stillstands bei den Core-Entwicklern, in denen sie verzweifelt den Fehler suchten, fanden sie am Mittwoch, wenige Tage vor der Deadline endlich den Schuldigen:

Zitat von Scrayos

Es lag zuletzt an einem Bug, der wirklich sehr schwer aufzuspüren war, weil die Auswirkungen sehr verstreut waren und man nicht wirklich auf die entsprechende Ursache schließen konnte. Dennoch ist diese Bug-Suche ein schönes Beispiel dafür gewesen, wie wenig gradlinig die Entwicklung verlaufen kann. Während die eigentlichen Funktionen relativ zügig abgeschlossen waren, dauerte die Bug-Suche wesentlich länger. Am Ende fehlte eine einzige Verknüpfung von weniger als 10 Zeichen an einer einzigen Stelle und schon funktionierte alles wie am Schnürchen.


Motiviert davon, dass der Bug nun endlich beseitigt war, konnten wir uns so auch direkt an ein weiteres Ziel des SHARD-Systems begeben: Wir wollten ausprobieren, ob wir eine SHARD-Welt auch als die Hauptwelt eines Servers verwenden können. Das wäre besonders gut, weil unsere Welten wesentlich sparsamer für die Ressourcen sind und wir so auch Schematics für die Hauptwelten (von z.B. Hub-Servern) verwenden könnten. Es ist nicht selbstverständlich, dass das einfach möglich ist, weil die Hauptwelt von Minecraft-Servern viele spezielle Aufgaben übernimmt, die andere Welten nicht übernehmen müssen. Zum Beispiel wird diese Welt für die Speicherung der Spielerdateien, die Speicherung der Scoreboard-Einträge, die Konfigurationen und viele weitere Aspekte verwendet. Deswegen ist es zum Beispiel auch nicht möglich, einen Server gänzlich ohne eine Welt hochzufahren.


Zitat von Scrayos

Wider unserer eigenen Erwartungen konnten wir mit unserer geleisteten Vorarbeit aber sehr gut eine SHARD-Welt als Hauptwelt einfügen. Innerhalb von weniger als einer Stunde hatten wir einen laufenden Server mit einer solchen Hauptwelt ohne Fehler am Laufen. Diese Funktion kommt uns jetzt insbesondere bei den Hub-Servern zugute.


Nachdem nun also die Kernfunktionen alle funktionierten und vollständig kommentiert sowie dokumentiert waren, ging es daran, unsere Serversoftware Cardboard auch in unsere Plugins einzubinden. Wir sind bereits vor einiger Zeit auf das Userdev-Plugin von Paper umgestiegen. Erstmals haben wir hier (im Spoiler) davon berichtet. Userdev ermöglicht uns, sauber mit dem Minecraft-internen Code zu arbeiten, der nicht Teil der öffentlichen API ist. Da wir Cardboard mit dem technischen Gegenstück dazu entwickeln, ließ sich alles nahtlos und sauber auf unsere neue API umstellen. Wir hatten ein paar Probleme mit dem Zugriff auf unsere API-Abhängigkeiten (weil das Userdev-Plugin hier nicht vorsieht, dass die entsprechenden Dateien eine Autorisierung voraussetzen), aber am Ende ist jetzt alles sauber eingebunden.


Der nächste Schritt wird sein, für Cardboard auch eigene Docker-Images bereitzustellen, damit wir die ersten produktiven Server in unserem Cluster ausrollen können.

Ausblick

Mit unserem verbesserten Wordloader können neue Welten in weniger als einer Sekunde zusammengesetzt werden. Ein atemberaubendes Feature, dass wir beim Klankrieg mit seinen dynamisch generierten Maps dringend brauchten, aber dass man nur bemerkt, wenn es nicht da ist. Denn wer will schon ewig im Teleport-Limbo stecken bleiben?


Wir haben auf jeden Fall Grund zum Aufatmen und arbeiten (endlich wieder ungebremst) die noch offenen Aufgaben ab. Sobald wir neues für euch haben, geben wir natürlich umgehend per Discord, Instagram und Twitter Bescheid! <3