Die fünfte Woche ist nun hinter uns und die Arbeit an den Paketen erfolgreich ausgeführt worden. Die Kommunikation zwischen dem Server und mehreren Clients steht!
Meine Aufgabe im Netzwerkprotokoll bestand darin, die Erreichbarkeit von Server und Clients zu testen. Damit ist die Dauer gemeint, wie lange ein Packet vom Absender, zum Empfänger und wieder zurück zum ursprünglichen Absender braucht. Es kann passieren, dass durch schlechte Verbindung der Transport der Pakete viel zu lange braucht, oder sogar garnicht erfolgt. In einem Multiplayergame, wo die Spieler voneinander abhängen, wäre es nicht konsequenzenlos, wenn ein Spieler überhaupt nicht mehr korrekt interagieren könnte und die Aktionen seiner Gegenspieler zeitlich stark versetzt sieht.
Um solche Fehler zu vermeiden, haben wir zwei Kriterien aufgestellt: Bleibt ein versendeter Ping für mehr als 10 Sekunden unbeantwortet oder verbleiben zur Zeit mehr als 90% der versendeten Pings ebenfalls unbeantwortet, so wird der jeweilige Spieler disconnected. Das Verschicken der Pingpakete ist automatisiert und erfolgt jede Sekunde durch die "PingManager" Klasse. Der Server besitzt für jeden Client wie auch jeder Client selbst einen Pingmanager, der bei jedem Eintreffen eines Pongpakets beziehungsweise eines Antwortpakets die durchschnittliche Pingzeit berechnet und updatet. Diese soll später immer für jeden Spieler auf dem Bildschirm ersichtlich sein. Die Pings werden von der Client Seite wie auch von der Server Seite verschickt.
Nebst dem Netzwerkprotokoll war das QualityAssurance-Konzept ein weiterer wichtiger Punkt dieser Woche!
Für den zweiten Meilenstein sollten wir Qualitätssicherungsmassnahmen für unser Projekt finden, welche uns versichern, dass unser Endprodukt die geforderte Qualität besitzten wird. Zudem sollten wir auch Kriterien definieren, welche die Einhaltung dieser überprüfbar machen. Als Qualitätssicherungsmerkmale haben wir folgende identifiziert: Code Standards, Issue Tracker, Kommunikation, GIT, Unit Tests, Javadoc und Logging.
Was man jetzt schon aus dem Projekt lernen kann, ist, dass eine gute Organisation des Teams sehr wichtig ist und viel Input aller Mitglieder erwartet! Der Komplexitätsgrad der Kommunikation steigt, sobald mehrere Personen in einem Projekt involviert sind.