Java-Code für Client-Server-Spiel auf Android

8

Ich habe ein Spiel für Android entwickelt. Jetzt möchte ich es über WLAN oder 3G spielen. Ich habe Spielpakete, die ich vom Client (mobil) an den Server und dann an einen anderen Client (mobil) senden möchte.

Ich weiß nicht, wie man Code in Java schreibt, um die playPackets kontinuierlich an den Server zu senden und das playPacket kontinuierlich vom Server an die Clients zu empfangen.

Ich muss wohl zwei Threads verwenden, einen zum Senden und einen zum Empfangen.

Kann mir jemand mit dem Code oder dem Verfahren zum Schreiben von Code helfen?

GameBuilder
quelle

Antworten:

2

Ok, fangen wir von vorne an. Ich weiß nicht, was Sie tun und wie, aber wenn Sie mit dem Netzwerk arbeiten, müssen Sie das REACTOR- Muster ausprobieren .

Grundsätzlich ist der Reaktor eine Möglichkeit, die Verwendung von Gewinden zu vermeiden oder sie zu verschieben, wenn eine Gewindeaufgabe durch den Kern stärker entkoppelt ist.

Das Zentrum des Reaktors ist die Auswahlfunktion : Sie registrieren Ihre Ereignisquellen und bitten die Auswahl, wann zurückzukehren etwas mit einer dieser Quellen passiert .

Wenn etwas angehängt wird, findet die Reaktorhauptschleife einfach, was an welche Quelle angehängt ist , indem sie ein Ereignis erstellt und dieses Ereignis an Objekte an solchen Ereignissen interessiert sind.

Ich bin kein Java Guru, aber ich weiß, dass Sie Sockets einrichten können (auch UDP-Sockets) und sie als nicht blockierend festlegen können. Ich weiß, dass es in einem Paket namens NIO eine Klasse namens Selector gibt. Diese Dinge stimmen überein, um eine gemultiplexte, nicht blockierende E / A-Einrichtung zu definieren

Sie müssen lediglich zwei UDP-Kanäle einrichten: einen für das Abhören des Servers und einen für das Sprechen des Servers. Registrieren Sie den zuhörenden Reaktor und integrieren Sie den Reaktionsschritt des Reaktors in Ihre Hauptschleife.

Berücksichtigen Sie, dass Sie mit dieser Art von Ansatz gleichzeitig eine Verbindung mit verschiedenen Kanälen herstellen können, um ein Peer-to-Peer-Spiel zu entwickeln (kein Serverengpass und verteiltes Design ... klingt gut!).

PS

Bitte beachten Sie, dass Sie wahrscheinlich bereits einen Reaktor verwenden, wenn Sie eine Art GUI-Einstellung / Einrichtung verwenden ...

FxIII
quelle
1

Ein guter Anfang für die Client-Server-Programmierung wäre kryo net, da es leicht zu erlernen ist und häufig in der Entwicklung von Java-Spielen verwendet / verwendet wird. Es ist ereignisbasiert, so dass Sie hier keine Threads benötigen.

kromit
quelle