MultiPlayerFlashgame über Socketserver

Status
Nicht offen für weitere Antworten.

Marti

Mitglied
Hi.

Ich habe mal eine prinzipielle Frage zu dieser Thematik.

Wenn ich über einen JavaSocketserver den Datenaustausch zwischen zwei Flashclients organisiere für ein kleines Shootergame, wo sollte dann eures Erachtens die Spielkontrolle liegen.
Ich sehe da 2 Varianten:

1. Spieler A schießt, der Schuss wird initiiert. Diese Info wird gleichzeitig an den Server gesendet, der sie an Spieler B übermittelt. Dort wird der Schuss initiiert, und der weitere Verlauf der Flugbahn berechnet. Möglicherweise kommt es zu einem Treffer, dass würde Spieler A aber auch sehen ohne die entsprechende Rückmeldung, weil beide Clients identisch sind und der gleichen Spiellogik folgen.

2. Spieler A schießt. Info wird an Server gesendet. Server initiiert Schuss bei Spieler A und Spieler B und berechnet auch die Flugbahn. Der Server streamt an die Clients nur noch die Koordianten des Geschosses, die Clients bilden nur noch ab, machen selbst keine eigenen Berechnungen.


Der Vorteil bei der Variante 2 ist m.E. dass die erforderliche Synchronität gegeben wäre. Bei Variante 1 könnte es passieren, dass z.B. der flashplayer durch das auftreten eines externen Programms gebremst wird in seinem Ablauf. Das kann geringfügig sein, aber evt. einen gültigen Treffer in einen Streischuss verwandeln. Andererseits müßte dann sehr viel mehr Information ausgetauscht werden.
 

Illuvatar

Top Contributor
Grundsätzlich: Variante 2. Spiellogik sollte niemals von einem Client berechnet werden, weil sich erstens die Clients uneinig sein könnten und weil zweitens Cheater es dann sehr einfach hätten.
Du hast aber natürlich recht: Wenn der Server zu viel berechnet, muss viel zu viel Information asgetauscht werden. Ein Geschoss zu "streamen" würde vermutlich nicht gut funktionieren, spätestens wenn es viele Geschosse gleichzeitig gibt.

So denke ich, könnte es funktionieren:
Spieler A schießt. Diese Information geht an den Server, der Server überprüft ob das möglich ist (d.h. ob genug Munition vorhanden ist oder was auch immer). Wenn es möglich ist, schickt der Server allen Spielern eine Nachricht, dass es ein neues Geschoss gibt, mit Position x und Geschwindigkeit v. Die Clients können dieses Geschoss dann grundsätzlich selbst zeichnen - aber nicht entscheiden ob jemand getroffen wurde! Solange die Clients nichts vom Server hören fliegt das Geschoss stur weiter - auch wenn es für den Client so aussieht als wäre es ein Treffer. Nur wenn der Server entscheidet dass jemand getroffen wurde, kann er alle Clients benachrichtigen und die können das dementsprechend darstellen.
 

Marti

Mitglied
Ok, das klingt nach einer guten Methode.
Ich müßte dann allerdings die Kollisionserkennung den Server überlassen, bzw ihm auch die Formen und Größen der Objekte übermitteln. Das wird recht mathematisch. In Flash ist eine Kollisionserkennung ja recht einfach. Wobei da möglicherweise auch kooperiert werden kann. Wenn beide Clients einen Treffer registrieren, legt der Server kein Veto ein und läßt den Treffer zählen z.B.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Graphik über den Bildschirm legen (Windows) Spiele- und Multimedia-Programmierung 9
R Java App sendet Midi Daten über Flash Spiele- und Multimedia-Programmierung 3
C Port umleiten: lesen und schreiben für MCServer-Client über Skype Spiele- und Multimedia-Programmierung 0
O Bilder senden TV über DLNA? Spiele- und Multimedia-Programmierung 0
M [JOGL] Maus über einem gezeichnetem Objekt abfragen? Spiele- und Multimedia-Programmierung 5
T Iteration über isometrische Map Spiele- und Multimedia-Programmierung 3
K Bild von USB-Webcam über JMF Spiele- und Multimedia-Programmierung 2
T LWJGL - 2D Text über 3D Hintergrund Spiele- und Multimedia-Programmierung 7
c_sidi90 Lösungsansatz in 2D Welt über die Border hinaus Spiele- und Multimedia-Programmierung 10
ruerob Eure Meinung über Applet-game Spiele- und Multimedia-Programmierung 12
J [JOGL] Kamera zentrieren über Achse Spiele- und Multimedia-Programmierung 4
O Suche Tutorial zum Aufbau von großen Spielen(mit Multiplayer über Netzwerk...) Spiele- und Multimedia-Programmierung 3
H JMF Problem bei Video Receive über RTP Spiele- und Multimedia-Programmierung 2
Developer_X JLabels über Canvas3D Spiele- und Multimedia-Programmierung 2
U java3D über Webstart Spiele- und Multimedia-Programmierung 10
H mit Java2D Markierung über JTable zeichnen und diese bewegen Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben