UpdateOptimierungen im Backend

SanX

[Admin]

SanX


Posts:

1287

am 14.02.2018 um 01:25

Da der Server in den letzten Wochen relativ viel Andrang hatte und bei 25 Spielern die Performance im Keller war, wurden einige Schritte unternommen, um vor allem die vielen kleinen Aussetzer zu minimieren.

Aber zuerst zu den Änderungen an der Funktionalität:
  • /skills-Menü ist nun in mehrere Kategorien unterteilt, sodass es übersichtlicher ist.
  • Der Text bei Köpfen kann entfernt werden, indem der Kopf auf den Amboss gelegt wird.
  • Bei Sesseln braucht man nicht mehr zwei Schilder, sondern mindestens eines, wodurch eckige Bänke möglich sind, aber man problemlos bauen kann.
  • Verzauberungsskills leveln nun richtig.
  • Elytren verlieren nun wie andere Werkzeuge mit der Zeit Verzauberungen.

Natürlich wurden auch etliche Bugs behoben:
  • Die meisten Bugs im Bugtracker gefixt.
  • Bug bei aufbrauchenden Skills gefixt.
  • Berufs-Wiederaktivierung geht nun, wobei man nur noch einen Basisberuf haben kann. Ob das so bleibt, ist noch zu diskutieren.
  • Man bekommt nun eine Fehlermeldung, wenn man inkompatible Verzauberungen kombinieren will.
  • Im Abenteuermodus verändert und verlängert sich der Pfad nicht so oft.


Nun zu den Performance-Optimierungen:
  • Neue Datenbankanbindung mit einer separaten SQL-Connection pro Thread anstatt einer zentralen Connection.
  • Maps werden effizienter verwendet, indem statt containsKey()- mit get()-Abfragen nur noch get()-Abfragen verwendet werden.
  • Votepoints, Geschlecht und andere Daten werden nun gecacht.
  • Tabelle mit den abgeschlossenen Quests umstrukturiert. Die Quester werden nun in einer separaten Tabelle gespeichert, anstatt als zusammenhängenden String.
  • Quest-Plugin überarbeitet, sodass unter Anderem Daten aus diesen Tabellen gecacht werden.
  • TreeChopper bei den Dungeons verbessert.
  • Statt ChatColor werden direkt die Colorcodes in Stringliteralen verwendet.
  • Achievements und Skills eines Spielers werden nun in einem Array anstatt in einer Map gecacht.
  • Anstatt von der UUID auf die UserId zu mappen, wird die UserId direkt in einer vorhin unbenutzten Membervariable in der CraftPlayer-Klasse gespeichert. Da die UserId sehr oft abgefragt werden muss, ist dies wohl eine der ausschlaggebendsten Optimierungen.

Was noch nicht optimiert wurde, aber die Performance sehr drückt, ist Chunk I/O. Dazu bräuchten wir einen Rootserver mit SSD. Neostralis ist schließlich ein Server mit großer Map und Spielern, die kreuz und quer darüber verteilt sind und sich noch dazu dank des Adventuremodus häufig bewegen.

Da sich bei solch tiefgreifenden Änderungen immer wieder Fehler einschleichen, sollten in den nächsten Tagen kleinste Uneinstimmigkeiten sofort gemeldet werden.