Worum geht's
Die Idee war das Spiel „Tetris“ als Onlinespiel zu entwickeln. Dieses ist für gewöhnlich nur für 1-2 Spieler gedacht. Die vorliegende Version erlaubt es bis zu 10 Spieler gegeneinander antreten zu lassen. Zusätzlich erlaubt ein eingebauter Chat die Kommunikation zwischen den Spielern. Die größte Herausforderung bestand in der Implementierung eines geeigneten Kommunikationsprotokolls zwischen Clients und Server.
Die Belastung des Servers sollte so gering wie möglich sein. Andererseits sollte die Interaktion zwischen den Clients nahezu im Echtzeitmodus erfolgen.
Aufgabenstellung
Entwerfen, erstellen und präsentieren Sie eine verteilte Anwendung. Sie können das Thema der Applikation frei wählen.
Die Aufgabe soll eine persistente Datenhaltung beinhalten, zum Beispiel durch Zugriff auf eine Datenbank.
Die möglichen Technologien, um diese Applikation zu realisieren, sind:
- Sockets
- Middleware wie RMI oder CORBA
- Java Messaging (JMS)
- Webservices
Für die vorliegende Client/Server Anwendung kamen folgende Technologien zum Einsatz:
- Java
- Applet
- Application
- JSP/Servlet mit Beans
- HTML
- MySQL Datenbank
- Socket (TCP/IP)
- AXIS (Java SOAP)
Webanwendung - los geht's
Der Webservice ist Startpunkt der Anwendung. Hier erfolgt das Registrieren, Anmelden und der Spielstart.
Applet - das Spiel
Das eigentliche Spiel ist in einem Applet implementiert. Das Applet besteht aus zwei Komponenten. Zum Ersten aus dem ausgewählten Spiel und zum Zweiten aus einem integrierten Chat, in dem die Spieler sich unterhalten können.
Die Kommunikation findet zum einem über AXIS mit dem Webserver und zum Anderem mit Socket über den Spiel-(Socket-)Server statt.
Socket Server - Spielmanager
Der Datenaustausch zwischen den einzelnen Clients ist über Socket gelöst. Der Socket-Server führt eine Liste aller Spielräume, in denen jeweils eine Liste der diesen Raum beigetretenen Spieler enthalten ist. Der Spielraumname für die Liste setzt sich aus dem Spielnamen und dem Raumnamen zusammen, so dass keine Kollision zwischen verschiedenen Spielen aber gleichen Raumnamen entstehen kann. So wird gewährleistet, dass nur die Spieler eines Raumes die Nachricht erhalten.
Technische Details:
AXIS zwischen Client-Applet und Webserver
Der Client kommuniziert mit dem Webserver über AXIS (Java SOAP). Dies erfolgt beim Betreten des Raumes, indem der Client die von der HTML-Seite übergebenen Daten in der Datenbank prüft. Bei korrekten Werten wird der Client für das Spiel frei geschaltet. Andernfalls bleibt das Spiel deaktiviert. So kann der Spieler nur einen Raum betreten, wenn er eingeloggt ist.
Socket zwischen Client-Applet und Spiel-Server
Die Kommunikation zwischen dem Client-Applet und dem Spiele-Server wird durch Sockets realisiert. Im folgendem wird dieser als Socket-Server bezeichnet. Die Clients kommunizieren untereinander über den Socket-Server.
Die Auswahl der Kommunikationstechnologie wurde aufgrund des geforderten zeitnahen Datenaustausches getroffen. Für Event-Gesteuerte Spiele wie z.B. Poker oder Memory könnte die Kommunikation über jeden anderen langsamen Kommunikationsweg laufen. Bei zeitkritischen Spielen wie z.B. Tetris oder Tennis hingegen ist ein langsamer Datenaustausch nicht vertretbar. Um die Kommunikation einfach zu halten, wurde darum ein einheitliches System gewählt.
Dieses Projekt entstand im Rahmen einer Projektes im Fach Verteilte Systeme im 3-Team.