So. Die Notwendigkeit, eine Serverfunktion richtig zu implementieren, anstatt sie zusammenzuflicken, führte zu fast zwei Wochen Versuch und Irrtum.
Aber ... Sieg! Das ist die Kurzfassung.
Hier ist der längere. Es gab ein kleines Serverprogramm, das als Uhr fungierte. Solange dieses Programm unter dem gleichen Dach wie alles andere lief, war alles in Ordnung. Jede andere Komponente nahm ihre Daten daraus und alles summte mit. Das Problem trat auf, als ein anderes Programm Zugriff auf diese Informationen benötigte. Aufgrund seiner umfangreichen Datenbankarbeit konnte dieses andere Programm nicht mehr unter einem Dach laufen.
Viele Tage lang versuchte ich jeden Ansatz, an den ich denken konnte, um Zugang zu erhalten. Egal wie ich es verdreht habe, entweder gab es keinen Zugriff, es gab nur Zugriff auf ein nicht funktionierendes Segment, oder eine andere Kopie begann und war natürlich nicht synchronisiert.
Dies ist wichtig, weil alle Spielereignisse, Client-Server-Synchronisation und so weiter von dieser Uhr abhängen.
Und wenn Teile des Servers schließlich über verschiedene Ressourcen verteilt sind, musste ich entweder eine vollständige Kommunikation aufbauen oder eine andere Architektur entwickeln. Das derzeitige Arrangement funktionierte und hätte geflickt werden können, aber es war eine Sackgasse.
Also musste ich ein anderes Framework, Spring, in den Server integrieren und seine Architektur verwenden, um einen separaten Server zu starten, der API-Anforderungen verarbeitet und verarbeitet.
Im Klartext kann jedes Programm, das die richtige HTTP-Adresse und den richtigen Endpunktnamen kennt, jetzt den Wert einer Variablen anfordern und ihren Inhalt als Antwort erhalten, unabhängig davon, ob es sich auf demselben Computer oder in Australien befindet.
Insgesamt ermöglicht dies eine relativ schnelle Kommunikation zwischen verschiedenen Teilen des Servers, ohne Datenbanken zu verwenden. Es ermöglicht auch die Erstellung separater grafischer Schnittstellen zur schnellen Überwachung und Steuerung des Servers. Mit schnell meine ich, dass ein Controller und Anzeige für die Uhr vielleicht eine halbe Stunde dauern würde. Mit Praxis und vorgefertigten Beispielen wäre es noch schneller. Und es kann alles von jeder anderen Maschine laufen.
Am Ende habe ich es getan. Es funktioniert. Dabei habe ich viel Erfahrung und Wissen gesammelt.
Ja, es dauerte unerwartete zwei Wochen, aber es musste getan werden. Die schlecht funktionierende Uhr hielt die Serverkomponente hoch, die Änderungen im Schiffszustand behandelt. Ohne sie werden die kleinen Schiffe nicht richtig fliegen und landen.
Heute habe ich bereits mehr clientseitige Schnittstelle und Logik für gelandete und gestartete Schiffe hinzugefügt. Es ist noch nicht fertig, aber es ist viel getan.
Wir werden bald anfangen zu fliegen!
