Eventhandler

Aus Owiki
Zur Navigation springen Zur Suche springen

Inhaltsverzeichnis

Eventhandler

Der Eventhandler ist wie das Kampfscript elementarer Bestandteil eines jeden Universums. Er läuft ständig im Hintergrund während des Spiels und erfüllt unter anderem folgende Aufgaben:

  • Erzeugung von Spionageberichten, hierzu muss der aktuelle Stand der Rohstoffproduktion auf dem fraglichen Planeten ebenfalls berechnet werden und evtl. über die Lagerkapazitäten hinaus lagernde Rohstoffe führen zum deaktivieren der jeweiligen Minenproduktion
    • Zurücksenden der Sonden zum Startort
    • alternativ: generieren eines KBs im Falle der Entdeckung
  • Anstoßen des Kampfscriptes nach Bedarf
    • Zurücksenden der verbleibenden Schiffe der angreifenden Flotte
    • Anpassen der verbleibenden Schiffe und Verteidigungsanlagen auf dem Zielort

Der Eventhandler hat u.a. großen Einfluss auf die Genauigkeit beim Timen von Flotten, da er die zentrale Verarbeitungstelle für alle Ereignisse im Spiel ist. Wie auch beim Kampfscript wird die genaue Funktion des Eventhandlers nicht bekannt gegeben.

Events

(von engl. für Ereignis) Ein Event ist ein Ereignis auf der virtuellen Zeitleiste im Spielgeschehen.

So werden z.B. alle Daten einer zu versendenden, durch das Flottenmenü in einer Datenbank abgespeichert - nicht nur die Anzahl und Art der Schiffe, sondern auch Absende- und Ankunftszeiten. In dieser Datenbank sammeln sich die Events aller Spieler im Universum. Sie können je nach Flugzeit sehr zeitnah, wie das Stationieren einer Spionagesonde zwischen eigenem Mond und Planeten, aber auch sehr weit in der Zukunft liegen, wie bei einem Flug von Galaxie 1 nach Galaxie 9 mit einem Todesstern auf 10% Geschwindigkeit. Der Eventhandler durchläuft diese Datenbank und prüft, ob die Zeit für das Event erreicht ist. Entspricht die Eventtime der Serverzeit, stößt der Eventhandler dann entsprechende Prozesse an, wie z.B. das Kampfscript bei feindlicher Flottenberührung oder das Umladen der Rohstoffe vom Schiff auf den Planeten.

Lag

Als Lag bezeichnet man die Zeitunterschiede zwischen der realen OGamezeit als "Serverzeit" (im Übersichtsmenü angezeigt) und dem Eintreffen der zu erwartenden Events. Es kann vorkommen, dass der Eventhandler bzw. der Server so sehr ausgelastet ist, dass die Verarbeitung der Events stark verzögert wird.

Diese Verzögerung ist für das normale Spielgeschehen nicht weiter tragisch und führt im Extremfall meist nur zu unerwartet langen Wartezeiten bis z.B. Spionageberichte eintreffen. Will man jedoch auf fremde Flotten timen, muss dieser Lag ggf. mit einberechnet werden, da sich sonst die Flotten nicht wie geplant begegnen. Der "normale" Lag ist bisher meist zwischen 0-3 Sek. groß und fällt kaum jemandem auf. Sind jedoch viele Daten zeitnah in den Eventhandler eingetragen oder die Datenbank ungepflegt, kann in Folge der Lastabhängigkeit der Lag für kurze Zeit auf einige Sekunden anwachsen.

Als Lag bezeichnet man also die Zeit, die der Eventhandler hinter der realen Spielzeit nachläuft.

Bugs

Der Eventhandler ist auf Grund seiner zentralen zeitkritischen Rolle im Spiel sehr anfällig für Störungen im Spielbetrieb. Ein "hängender" Eventhandler kann Ursache für Folgeprobleme bis hin zum Absturz eines Universums sein. Er selbst ist wiederum auf zentrale Dienste, wie die Datenbank, angewiesen.

Einige Fehler wie im OGameForum beschrieben, scheinen darauf hin zu deuten, das immer mal wieder Prozesse nicht gestartet werden können, die der Eventhandler jedoch auslösen müsste. Der Eventhandler ist wie das Kampfscript stark verändert worden und heute deutlich zuverlässiger und leistungsfähiger als früher. Vor allem bei Datenbankproblemen scheint er aber weiterhin fehleranfällig und damit auch für manchen Spielbug zuständig zu sein.