Historymodule

Daniel Künne

Um bereits komplett abgeschlossene Spiele im Nachhinein betrachten zu können, müssen im Verlauf des Spieles bestimmte Aktionen gespeichert werden. Hierfür wird das Historymodule eingesetzt, welches sich am Messagebus registriert und auf die zu den Aktionen gehörigen Nachrichten reagiert.

Solange für ein Spiel noch nicht die Nachricht der Beendigung beim Historymodule angekommen ist, werden die Daten in einem allgemeinen Format in eine Tabelle der Datenbank geschrieben. Die wesentlichen Informationen eines Datensatzes sind der Zeitpunkt des Auftretens, die ID eines möglichen Elternelementes, die ID des aktuellen Elementes, der Typ dieses Elementes sowie die Art der Nachricht mit möglichen ergänzenden Informationen.

Beispielsdatensätze aus der History
timestampparent_idchild_idtypemessageparams
2011-02-27 17:42:44.3031718258giftcreatedposition:POINT (8.0214282 52.2839609);item:1;
2011-02-27 17:48:49.8824718318playermovedposition:POINT (8.07649612664144 52.25366454280925);

In obiger Tabelle sind zwei Beispiele von Einträgen zu sehen, wie sie das History-Module erstellt hat. Die erste Zeile gibt den Zeitpunkt und die geographische Koordinate einer neu erstellten Geschenkbox an, während in der zweiten Zeile die Positionsveränderung eines Spielers weggeschrieben wurde.

Empfängt das Historymodule die Nachricht, dass das Spiel beendet wurde, so startet es im Hintergrund eine Funktion auf der Datenbank, die die gesammelten Informationen wieder für die Anzeige im Gameviewer aufbereitet. Diese Aufbereitung kann erst nach Abschluss des Spiels erfolgen, da ansonsten die Bearbeitungszeit der einzelnen Anfragen an den Server unnötig verlängert würde und es zu Verbindungsunterbrechungen bei den Clients kommen würde.


Page last modified on March 21, 2011, at 05:48 PM