Kapselung der Netz-Objekte

Scarabol

Mitglied
Hey Leute,

ich versuche mich gerade an einem kleinen Netzwerkspiel und springe die ganze Zeit zwischen mehreren Ansätzen wie ich die Objekte am besten verpacke:

1. Client und Host benutzen die gleichen Klassen
- Vorteil: wenig Implementierungsarbeit, Objekte können "einfach" verschickt werden
- Nachteil: Client und Host brauchen teills sehr unterschiedliche Funktionalitäten für das Objekt, daher viel Overhead und/oder ungültige Zugriffe, da das Objekt ja immer 2 Seiten hat. So werden auf dem Host z.B. keine Bilder geladen und können daher auch nicht nach ihrer Größe abgefragt werden.

2. Client und Host benutzen für jedes Objekt im Spiel eine eigene Klasse
a) Die Klassen erben von einer gemeinsamen Basisklasse, die über das Netzwerk verschickt werden kann und die "wichtigen" Member enthält die auf beiden Seiten gültig sind. Dabei sind die Erweiterungen von Client und Server immer transient.

b) Es gibt drei Sätze von Klassen für jedes Spielobjekt, eine beim Client, eine beim Host und eine Klasse, die über das Netzwerk verschickt werden kann. Beim Versenden und Empfangen werden die Objekte nun von der "lokalen" Klasse (Client oder Host) in eine Instanz einer Netzwerk Klasse gepackt und bei Empfang wieder in eine "lokale" Instanz umgewandelt.
- Vorteil: Es werden immer Kopien der Objekte verschickt, unerwünscht mitgesendete Daten kann es so fast nicht geben.
- Nachteil: Implizit wird erstmal gar nichts gesendet

Da ich "fast" keine Ahnung von "echter" Programmierung habe, würde mich interessieren, wie man sowas "in echt" angeht???

Gruß
Scarabol
 

Massenhaft

Mitglied
Hi,

ich habe mich auch mal an einem Netzwerkspiel versucht. Ich habe nur Nachrichten verschickt und
keine expliziten POJOs. Die Nachrichten sind durch "OPCodes" gekennzeichnet.
Code:
ENTITY_POSITION ((byte) 0x9, 18),
In den Nachrichten ist die "gemeinsame" Entity-Id für den Client und Server vermerkt, dadurch ist klar für welches POJO die Nachricht war. Die POJOs konnte ich im Client und Server nutzen.
Das gesamte Projekt findest du unter:
slick-netty-network-game-example - An UDP 2d netwok game example - Google Project Hosting
 

Scarabol

Mitglied
Hi, danke für die Infos.

Hier gehts mir lediglich um die Infos, wie ich das ganze in Code gieße. Aber falls es dich interessiert, ich schick die Objekte einmal über TCP rüber, wenn Sie erstellt werden und update die Objekte dann nur noch mit UDP Packeten die aus der ID und der Information bestehen, so ähnlich wie du denke ich.

Gruß
Scarabol
 

strade87

Mitglied
DU könntest natürlich auch ein eigenes Protokoll entwickeln, mit dem du dann nur die eigentlchen Nutzdaten sendest und daraus wieder das Ursprungspaket generieren kannst. Hat natürlich den Nachteil, dass du selber die Bauanleitung für die Pakete schreiben musst.
Wenn du kaum Content hast würde ichs aber machen, wies Massenhaft vorgeschlagen hat.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Gedankenspiel Synchronisation zweier Datenbanktabellen übers Netz Netzwerkprogrammierung 4
L Größe einer Datei auslesen die im Netz liegt Netzwerkprogrammierung 4
W browse / durchsuchen übers netz Netzwerkprogrammierung 2
S welche Rechner sind im lokalen Netz online Netzwerkprogrammierung 11
G Buchinformationen aus dem Netz abrufen? Kostenloser Service? Netzwerkprogrammierung 3
T Andere Rechner im Netz finden Netzwerkprogrammierung 21
A Broadcast - senden eines Packetes an alle rechner im netz Netzwerkprogrammierung 15
M Daten übers Netz verschlüsselt übertragen? Wie? Netzwerkprogrammierung 18
D dateien kopieren, am localhost funktionierts, im netz nicht Netzwerkprogrammierung 2
T JSON-Objekte richtig parsen Netzwerkprogrammierung 8
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
E Objekte versenden, Client-Server Netzwerkprogrammierung 25
A RMI RMI - Thread Objekte übertragen und auf anderer Machine weiterlaufen lassen Netzwerkprogrammierung 0
C List Deserialisierung entfernt Objekte Netzwerkprogrammierung 2
F HTTP Serialisierte Objekte aus Datei von Server Netzwerkprogrammierung 1
H Socket Objekte über Socket? Allgemeine Verständnisprobleme in Sachen Socket Netzwerkprogrammierung 3
V Socket Objekte werden nicht aktualisiert Netzwerkprogrammierung 2
S Socket Über UDP Objekte verschicken Netzwerkprogrammierung 9
B Eigene Objekte per RMI übergeben Netzwerkprogrammierung 2
B verschiedene Serialisierte Objekte identifizieren? Netzwerkprogrammierung 5
T Objekte im NIO unblocking mode versenden Netzwerkprogrammierung 11
C Socket ObjectInputStream liest nur Objekte der jeweiligen Programminstanz Netzwerkprogrammierung 5
G Frage zu Servlets und deren Objekte + Bilder in Servlets anzeigen? Netzwerkprogrammierung 11
G Objekte per TCP verschicken + Thread Netzwerkprogrammierung 4
T Laufen Objekte, die vom Cajo-Server geliefert werden, lokal auf dem Client? Netzwerkprogrammierung 4
T Inputstream -> verschiedene Objekte lesen Netzwerkprogrammierung 3
I Objekte über das Netzwerk Netzwerkprogrammierung 5
M Messenger - String oder Objekte Netzwerkprogrammierung 4
S Netzwerk und Objekte Netzwerkprogrammierung 5
S RMI 1.) Entfernte Objekte "Zwischenspeichern" 2.) Threadsicherheit Netzwerkprogrammierung 2
T rmi ssl zu große Objekte übergeben -> Exception Netzwerkprogrammierung 10
A Konflikt: Blocking und Non-Blocking bei Objekte versenden Netzwerkprogrammierung 4
N RMI und Datenbank Objekte Netzwerkprogrammierung 3
P Objekte über DatagramSocket versenden Netzwerkprogrammierung 12
R Mittels BufferedReader Objekte lesen? Netzwerkprogrammierung 5
M Objekte senden zwischen Java und PHP mit SOAP Netzwerkprogrammierung 9
A Objekte in übergebenen Objekten mit WebServices? Netzwerkprogrammierung 6
A RMI wie kann ich objekte übergeben? Netzwerkprogrammierung 5
P Serialialiserte Objekte übers Netzwerk verschicken Netzwerkprogrammierung 9
S Objekte zwischen Client und Server über Sockets senden Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben