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