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
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