Alles anzeigen2. Preview-Branch: rewrite API-Store
Der API-Store ist eine der Haupt-Komponenten (und somit auch eine der wichtigsten Komponenten) im Kern des LSSM. Er kümmert sich darum, dass die Kommunikation mit der API des Spiels läuft, kennt alle eure Fahrzeuge und Gebäude, eure Einstellungen vom Spiel, die aktuell laufenden Lehrgänge etc.. Dieser API-Store hat aber den großen Nachteil, dass er historisch gewachsen ist und ziemlich inperformant läuft.
Um mal ein Beispiel zu nennen: Wir haben Objekte, in denen die Fahrzeuge gruppiert werden, zum Beispiel ganz einfach nach Gebäude oder nach Leitstelle. Jedes mal, wenn sich jetzt ein Fahrzeug ändert, wird jedes dieser Objekte neu berechnet und dazu muss einmal komplett über die Fahrzeugliste drüber iteriert werden. Kommt jetzt also ein Funkspruch rein, dann wird intern 4 oder 5 mal über alle eure Fahrzeuge iteriert und die Objekte werden neu berechnet. Das ist zugegeben sehr inperformant, eigentlich wollen wir ja gar nicht über alle Fahrzeuge neu iterieren, bei allen außer einem hat sich ja nichts geändert. Vor ein paar Monaten haben wir das schon mal ein bisschen optimiert, dass das nicht bei jedem Funkspruch passiert, sondern erst, wenn mal 100ms lang kein Funkspruch reinkommt. Das hat zumindest ein bisschen was geholfen für die Situationen, in denen viele Funksprüche auf einmal reingekommen sind.
Aber das reicht noch nicht, wir iterieren trotzdem noch viel zu oft über alle Fahrzeuge drüber, also macht es am meisten Sinn, das ganze Ding einmal komplett neu zu schreiben, damit es auch in Zukunft besser wartbar ist.
Und genau daran arbeiten wir derzeit!
Ja, wir arbeiten daran, denn es ist noch nicht fertig, wir haben uns aber ganz bewusst dazu entschieden, diesen Preview-Branch jetzt schon zu veröffentlichen, damit man das schon mal austesten kann. Ich möchte hier kurz darauf eingehen, was man aktuell erwarten kann:Zum jetzigen Zeitpunkt sind schon einige Sachen migriert, darunter die Informationen über mögliche Einsätze, die Einstellungen-API, die Credits-API (gibt Infos über den aktuellen Nutzer, also über dich) und die Verbandsinfo-API (gibt Infos über den Verband und die Nutzer des Verbands). Außerdem ist der API-Store auch für alle Serveranfragen, die der LSSM manuell macht, zuständig. Auch das ist bereits migriert.
Das ganze wird ganz sicher keine großen Performance-Verbesserungen bringen, denn die "großen Klopper" Fahrzeuge und Gebäude sind noch nicht migriert, das kommt dann nach einer ersten Testphase. Wir möchten hier erstmal um ein erstes Feedback bitten, was so die ersten Erfahrungen sind und ob es zu Problemen kommt oder ob es wie bisher gewohnt läuft.
Hier sind wir auf euer Feedback angewiesen! Testet also fleißig! Der Preview-Branch ist Feature-Mäßig immer auf dem selben Stand wie Beta, allerdings eben mit dem zusätzlichen jeweils aktuellen Migrations-/Rewrite-Stand.
Übrigens: Wir schreiben damit nicht nur den API-Store neu, sondern wir eröffnen uns auch den Weg, dass wir einfacher weitere Performance-Verbesserungen einbauen können, denn wir können dann teure Operationen (die viel Rechenleistung und -zeit kosten) auf einen eigenen Thread auslagern. Das heißt im Prinzip, die Seite friert bei ausgelagerten Operationen tendenziell deutlich weniger ein. Das wird aber im Rahmen der Migration erstmal getestet und initial-Implementiert und kann dann bei Erfolg später auch an anderen Stellen eingebaut werden.Außerdem steht ebenso auf dem Plan zu verbessern, wie der LSSM allgemein Dinge persistent speichert (also wie er sich Dinge merkt, die auch nach einem Neuladen der Seite oder des Browsers noch verfügbar sein sollen), dazu gehören zum Beispiel auch die Einstellungen. Auch das wird auf dem Preview-Branch bereits genutzt, um die Informationen über mögliche Einsätze zu speichern.
Nun noch einmal kurz die Erklärung, wie man auf den Preview-Branch wechselt: Einfach in den LSSM-Einstellungen unter "Allgemeine Einstellungen" die Einstellung "Version wählen" anklicken und dort dann pr2921 🔀♻️⚡️ rewrite -store wählen (Eigentlich war geplant, dass er 🔀♻️⚡️ rewrite `api`-store heißt, aber irgendwie hat das nicht geklappt, da müssen wir bissl was am Namen speichern abändern, hat aber geringe Priorität). Wir werden euch hier informieren, wenn es Neuigkeiten auf diesem Branch gibt, die getestet werden können und wollen.
Jetzt wünsch ich euch aber viel Spaß beim Testen, ich hoffe, ich hab nichts vergessen zu erzählen, ansonsten wird das irgendwann noch nachgetragen.
Die Zahl der Rückmeldungen ist zwar bislang noch nicht groß gewesen, aber es gab auch keine Beschwerden. In persönlichen Gesprächen habe ich auch eine Verbesserung der Performance raushören können (zumindest soweit es die subjektive Wahrnehmung zulässt). Das ganze ist in Kombination mit den frischen Performance-Problemen des Spiels natürlich auch nicht ganz einfach zu beurteilen, nachdem diese ja das Gesamterlebnis beeinträchtigen.
Wir haben gestern still und heimlich auch die Lehrgangs-API in den neuen API-Store migriert, da die aber nur in LSSM-Gebäudekomplexen genutzt wird und daher nicht wirklich Probleme verursachen kann/sollte.
Heute haben wir jetzt (ab Version 4.7.12+20240229.1056, welche jetzt live ist) auch die Fahrzeuge in den neuen API-Store migriert. Hier sollte es zu wahrnehmbaren Verbesserungen bei Fahrzeug-Operationen kommen, allerdings dürften die einen vermutlich nicht vom Hocker reißen. Außerdem äußern wir hier die begründete Vermutung, dass die Zahl der Freezes und Performance-Einbrüche reduziert sein sollten im Vergleich zu vorher, zumindest die, die durch Fahrzeugupdates verursacht wurden.
Wir wünschen euch viel Spaß beim Testen und freuen uns auf weitere Rückmeldungen!
P.S. schaut auch ab und zu gerne mal in die Konsole (F12 → Konsole, bzw. bei Opera Strg+Umschalt+I → Konsole), ob dort rote Fehlermeldungen auftauchen. Es ist nicht auszuschließen, dass abundzu mal ein Fehlerchen auftritt, die sollten aber hoffentlich keine Abstürze oder sonstigen Probleme verursachen.
Zur Info: Die Änderungen sind weiterhin nur auf dem Preview-Branch pr2921 online, nicht auf stable oder beta
Viele Grüße aus dem HeadQuarter
Euer LSSM-Team