Dabei möchte ich Remote Procedure Calls implementieren. Anfragen des Clients nenne ich Request, die asynchronen Antworten des Servers Event.
- IRequestListener enthält alle gültigen Spieleraktionen (Login, Logout, Bewegung, Angriff, Stopp aller Aktionen)
- IEventListener beeinhaltet verschiedene Events, je nach Submanager in Model/View. Dabei soll der Client über neue Objekte, Veränderung von Objekten, Logouts etc. informiert werden.
- Das eigentliche GameModel implementiert dann alle nötigen Requests, so dass es auf den Spieler reagieren kann.
- Analog implementiert die GameView alle Events, um auf Änderungen reagieren zu können.
- Das ermöglicht unterm Strich erstmal die einfache Implementierung eines Singleplayer Controllers (für den die login-logout-Sache natürlich überflüssig ist). Da ich allerdings ein Multiplayer-Game beabsichtige, gehe ich nun einen Schritt weiter.
- Auf Basis der Listener-Interfaces will ich dann Stellvertreter-Model und -View implementieren, die sich genauso bedienen lassen (daher auf Basis des Interfaces), die Daten aber zur Gegenseite schicken. D.h. die ProxyView sendet vom Server an den Client, so dass die Events in der ClientView ankommen (ProxyModel analog die andere RIchtung).
- Darauf aufbauend kann ich dann für den Multiplayer einen Client- und einen Server-Controller implementieren.
Was haltet ihr von dieser Struktur? Bisher habe ich sie noch nicht implementiert (das Framework für die RPC-like Kommunikation allerdings schon). Erachtet ihr das System als geeignet für einen einfachen DungeonCrawler (mit sagen wir <10 Spielern)?
Für Verbesserungsvorschläge oder Diskussionen über die Machbarkeit / Sinnhaftigkeit würde ich mich freuen

LG Glocke