gutes Design/OOP ?
-
Servus,
ich soll ein vier-gewinnt fürs Netzwerk proggen. Bin dabei auf ne grundsätzliche Frage gestoßen:
Wie soll ich die Verbindung realisieren?
Zwei Varianten hab ich zur Auswahl (falls euch mehr einfallen, her damit):
1. Einer ist Server, der andere Client. Server und Client haben dieselben Aufgaben, Senden/Empfangen usw.
2. Beide sind Clients, einer der beiden startet einen unabhängigen Server in nem weiteren Thread, der sich nur um Nachrichtenverteilung kümmert.
Nummer 1 ist schneller zu proggen, und im Aufbau einfacher. Nummer 2 find ich erweiterbarer, besonders wenn nacher n Spectatormodus und ein Chat eingebaut werden soll, zudem muss keiner der beiden einen Server starten, das kann auch ein ganz anderer User machen, lässt sich vielleicht zu nem Treff ausbauen, wo man sich mit anderen zum Spielen verabredet oder so...
Welche Möglichkeit würdet ihr favorisieren? Und besonders: Welche hat das bessere Design, das bessere OOP ?
Vielen Danke für Antworten
-
Welche hat das bessere Design, das bessere OOP ?
Bisher ist hier weder Design noch OOP im Spiel. Nichtmal P. Du sprichst hier gerade über Architektur.
Ohne zu wissen, was du genau am Ende haben willst, kann man imo auch keine sinnvollen Tips geben. Wenn es z.B. einfach nur um ein Vier-Gewinnt-Spiel geht (ohne die Geschichte mit Chat, Spectatormodus usw.) dann würde ich z.B. auf der logischen Ebene das Netzwerk ignorieren. Die Netzwerk-Verbindung wäre ein technisches Detail, dass am Ende z.B. über Proxies (siehe Proxy-Pattern) realisiert werden könnte.
Wenn letztlich der Netzwerkaspekt das zentrale Element ist (weil du später einen Chat, einen Spectatormodus, einen Treff usw. einbauen willst), dann macht so ein Ansatz natürlich weniger sinn. In diesem Fall würde ich klar zwischen Client und Server trennen. Vielleicht sogar mit dem Ziel, dass der Client am Ende der Webbrowser des Benutzers sein kann.
-
Das Netzwerk zu abstrahieren ist immer eine gute Idee. Besser noch man macht sich nicht von verbindungsorientierten Protokollen abhängig.