In der sechsten Woche des Projektes haben wir uns an die Game Logic und wichtige Klassen dafür gesetzt. Ich habe mich vor allem mit den Einstellungen, Items und dem Highscore befasst.
Jedes normale Spiel beinhaltet auch gewisse Einstellungen, welche der Spieler vornehmen kann. Diese werden in der Regel jedoch nicht jedes mal neu abgefragt, sondern für ein nächstes Mal gespeichert. Dieses Abspeichern erfordert jedoch, dass man eine Java Klasse in ein anderes Format umwandeln und abspeichern kann.
Um dieses Problem zu lösen, habe ich mich mit der Java Serialisation auseinander gesetzt. Bei der Serialisation wird eine Java Klasse in ein .ser Format umgewandelt und kann zu einem anderen Zeitpunkt wieder ausgelesen werden. So speichern wir die Einstellungen und rufen sie beim nächsten Start des Spieles wieder ab. Nach jeder Änderung an den Einstellungen wird die Klasse wieder neu serialisiert und die alten Einstellungen überschrieben.
Wir haben uns für das Interface Serlialisation entschieden, da wir keine externen Libraries für die Serialisation benützen dürfen und die Java interne Seliarisation sehr einfach und robust funktioniert.
Um unser Spiel ansprechender und spannender zu gestalten, haben wir uns schon zu beginn für Items entschieden. Diese Items werden vorerst von sogenannten "Fragezeichenblöcken" erzeugt und mit einer zufälligen Wahrscheinlichkeit erscheint eines der existierenden Items.
Im Ersten Schritt haben wir die vier wichtigsten Items definiert und festgehalten. Unsere wichtigsten Items sind:
Diese Items wurden im Verlauf der Woche inklusive neuer Netzwerkpakete implementiert. Weitere Items sind geplant, jedoch haben wir uns für den kommenden Milestone auf diese konzentriert.
Eine weitere Anforderung an das Spiel ist ein Highscore, welcher auf dem Server gespeichert wird. Um diesen auch über einen Lebenszyklus eines Servers zu behalten, haben wir uns hier auch wieder für die Serialisation entschieden. Die Serialisation ermöglicht es uns, den Highscore über längere Zeit zu behalten.
Der Highscore besteh aus den top zehn Spielern, welche am schnellsten die nötige Anzahl Gold gesammelt haben. Dafür wird ein Spieler mit seinem Namen und seiner Zeit in der ArrayList gespeichert und ist abrufbar für alle Spieler. Der Highscore wird auf die top zehn Spieler festgelegt, da es nicht wichtig ist, die anderen zu speichern. Alle aktuellen offenen Spiele werden in einer anderen Form gespeichert.