2016-04-18 9 views
0

Wir planen eine Echtzeit-Netzwerkspielanwendung für Handys.
Nach einigen Recherchen und Studien haben wir uns entschieden, eine TCP-Verbindung zwischen dem Server und den Clients (Mobilgeräte) zu verwenden, indem wir Socket implementieren.
Während wir die Protokolle schreiben, sind wir auf folgende Frage gestoßen: Wo sollten wir die Berechnung implementieren? Auf dem Gerät des Benutzers oder auf dem Server?Implementieren der Berechnung in einer TCP-basierten Spielanwendung

Stellen Sie sich zum Beispiel ein kurzes Spiel zwischen 5 Spielern vor, das keine Kommunikation erfordert, bis das Spiel endet (so schnell wie möglich auf den Bildschirm zu schlagen oder so).
Am Ende der Runde senden die Kunden ihre Punkte an den Server, und die Anwendung sollte den Verlierer oder den Gewinner anzeigen.

Wo sollte die Berechnung stattfinden? Sollte der Server alle Punkte sammeln, das Maximum und das Minimum berechnen und den Verlierer und Gewinner zurückschicken? Oder sollte der Server alle Ergebnisse an die Spieler zurücksenden, in denen ihre Geräte die Ergebnisse berechnen?
Was sind die Vor- und Nachteile jeder Strategie?

Antwort

1

Ein paar Dinge hier:

1) Verwenden Sie keine permanente Socket für mobile Anwendungen nutzen. Connectivity ist zu pickelig.

2) Verwenden Sie ein höheres Protokoll wie HTTP. Sie müssen kein solches Low-Level-Protokoll verwenden. Dadurch werden Sie viel mehr Arbeit erledigen als nötig. Denken Sie darüber nach, ob Sie dies in ein webbasiertes Spiel einbauen oder auf einem Gerät implementieren möchten, das keine rohen Sockets zulässt.

HTTP ist nett, weil es firewallfreundlich ist, die meisten Firewalls lassen bereits HTTP auf Standardports durch. Deshalb ist es heutzutage so beliebt.

3) Sie sollten sehr skeptisch über die Geräte nachdenken. Im Allgemeinen sollten Sie Kunden so wenig wie möglich vertrauen. Sie können die Verarbeitung auf dem Client durchführen, sie sollte jedoch mit dem Rendering in Zusammenhang stehen. Allgemein angenommen, dass Ihr Client bösartig ist, ist dies ein guter Ansatz für n-Tier-Architekturanwendungen. Vor allem mit Spielen.

+0

Was meinst du mit "zu spotty"? Ich muss Socket verwenden, um Nachrichten von den Clients an den Server zu senden, wie kann ich das über HTTP erreichen? – itaied

+0

HTTP-POST: https://en.wikipedia.org/wiki/POST_(HTTP) Werfen Sie einen Blick auf http://www.drdobbs.com/web-development/restful-web-services-a-tutorial/240169069 –

+0

Ich habe fälschlicherweise von Client zu Server geschrieben, ich wollte vom Server auf den Client schieben. Ich weiß, dass Websocket das erreichen kann, aber es verwaltet nur 1 Verbindung – itaied

Verwandte Themen