Lang wars nun ruhig und es hat sich einiges getan.
Der LogonServer ist nun mit seinen Grundfähigkeiten im Live-Betrieb, naja es sind aktuell nicht viele Fähigkeiten, weil mich das Grunddesign doch mehr beschäftigt hatte als geplant (und ich zwischenzeitlich auch die Lust verloren hatte), aber hier die ganze Storry :P
Yumi hat nun schon seit längerem ausgedient und wurde nun durch Caroline ersetzt.
Der LogonServer wurde teilweise von ihr übernommen, sowie auch der größte Teil des Designs des Systems.
Weil nun die Core auf dem Hauptserver läuft und ich im Notfall umschalten muss, hab ich nun konsequent das hybride Design der Node weiterverfolgt.
Damit kann ich die Nodes als Verbund oder komplett allein anfahren.
Der größte Teil wurde aber im LogonServer geändert...
Das alte MT-Update-Design hatte sich bei vielen Spielern auf dem LogonServer als verdammt schwerfällig herausgestellt, also hab ich mal den Kram komplett umgestaltet.
Leider ist daraufhin auch der SingleThread-Modus weggefallen. Gut der wird auch nicht gebraucht, wenn man richtig Daten schubsen will.
Jetzt ist der LogonServer intern in 5 Teile gesplittet worden:
ClientSockets - Sessions - NodeSockets laufen nun asyncron zum MutterThread.
Die ControlPorts und dessen "Sessions" laufen nun alle Syncron zum MutterThread.
Letzterer wird gebraucht um bei einem Startup einer Node diese ins System wieder einzugliedern, durch diesen werden nun auch einige SteuerCommands versendet um die Nodes vom LogonServer steuern zu können.
Das wurde beim Rebase wichtig, denn hier müssen die Nodes 2x Restartet werden.
Die Sessions werden bei dem Vorgang gestoppt und anschließend wieder aktiviert.
Technisch braucht man den eigentlichen Server nur noch runterfahren, wenn man direkte Updates am LogonServer vornimmt.
Nun gut, bisher läuft die Kiste stabil bei rund 600 Spielern auf 2:4 Threads.
D.h. ich hab immer doppelt so viele SessionThreads eröffnet wie an SocketThreads laufen. Das scheint nun guter Wert zu sein, jedoch ists nicht Endgültig.
Netterweise hab ich um den Traffic von Logon/Node zu verringern einen Cache in den LogonServer gepackt um dort einige Templates zu speichern.
Technisch gesehen macht er nix weiteres als sich die Daten von der World zu ziehen und dem Spieler zurück zu geben.
Leider kann es vorkommen, dass wenn man Custom-Items auf einer anderen Node verwendet, diese nicht unbedingt in der HauptDB zu finden sind.
Das ist aber nicht tragisch, denn hier kann der LogonServer einfach die Abfrage zur Node leiten, diese schickt alles zurück und nun kennen Client und LogonServer die Templates
Soviel zum Stand bisher (mal ausgenommen der Realmpool Sache die nun Teilweise eingebaut aber noch nicht fertiggestellt ist).
Ach das wichtigste hab ich ja vergessen:
Das Teil kann HardRouting und ist somit in der Lage Spieler einfach auf andere Nodes zu verfrachten.
Aktuell ist es nur ein passives System, d.h. die Node sendet ein Command welcher den LogonServer veranlasst ein Routing auszuführen.
Nun schreib ich grad die Global-Channels in den LogonServer die Locals/Statics bleiben nun wo sie sind, warum sollte man sich auch mehr Mühe machen als man muss...