Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

17.03.2012, 19:59

Spieler position / aktion übermitteln [Netzwerk]

Hey,

ich hab hier einiges gelesen und auch sonst im internet dazu wie man daten synchronisiert zwischen 2 spielern.

hier bei sind ein paar ansätze rausgekommen und ich würd mich freuen wenn ihr mir sagen könntet welchen und wieso ihr gut findet oder ob ihr einen ganz anderen verfolgen würdet.

- Tastatur eingaben übermitteln: jeder spieler bekommt von den anderen spielern die tastatur eingaben übermittelt, so das jeder client selbst die bewegungen ausrechnen kann
- Richtung übermitteln: es wird nur eine richtung übermittelt und der andere client geht davon aus das die endlos ist bis eine neue kommt, zur sicherheit werden auch koordinaten zwischen durch ausgetauscht.
- Position übergeben: es wird einfach dauernd die position übergeben.

gerade bei nem rennspiel (wie ich es gerade baue) finde ich es schon relativ wichtig das möglichst exakt zu haben, da es sehr negativ ist wenn die gegner plötzlich wo anders sind.

lg
philipp

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

2

17.03.2012, 20:22

Ich habe es so gelöst, dass Befehle gesendet werden. Sowas wie, wenn du auf der Tastatur ne Taste drückst, wird ein Befehl gesendet. Der wird gleichzeitig im System für die Prediction benutzt und auch zum Server gesendet. Zwischendurch sendet der Server mal seine Koordinaten an alle Clients damit auch alles gleich ist.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

18.03.2012, 02:25

Die entscheidende Frage ist eigentlich, wie der Server die Daten an die Clients verteilt. Wenn man auf einen Server verzichtet (P2P) oder einen Nachrichten basierten Ansatz verfolgt, muss man nicht nur gewährleisten, dass die Nachrichten korrekt weitergeleitet werden, sondern auch, dass die Befehle immer zum gleichen Zeitschritt in der Simulation ausgeführt werden. Sprich wenn ein Objekt sich bei t=0 auf 0,0,0 befindet und bei t=1 auf 0,1,0 befinden würde, macht es einen Unterschied ob ein Drehbefehl schon bei t=0 oder erst bei t=1 ausgeführt wird.
Außerdem hat ein Nachrichtenverteilungsansatz immer ein Problem mit Cheatern. Bei einem Server basierten Sync Ansatz kann die Sichtbarkeit vom Server verwaltet werden und wenn man den Server nicht trauen kann, ist ehe alles verloren.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

4

18.03.2012, 13:11

Wie sähe denn der Sync basierte Austausch aus? Das einfach nur die Koordinaten verschickt werden oder das alle ihre eingaben an den Server schicken und der die Berechnungen macht und weiter schickt bzw zurück an den Clienten und ihn so prüft?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

5

18.03.2012, 13:22

Das kannst du doch lösen wie du möchtest. Du kannst auch die Logik beim Client lassen. Der Server sollte dann aber prüfen und gegebenenfalls die Clients passend aktualisieren. Da gibts ja keine Grenzen.
Netzwerkspiel, Was muss ich wissen? Dieser Thread ist sicherlich hilfreich. Vor allem die Links sind wirklich gut.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

18.03.2012, 16:07

Also ich persönlich bin kein Fan vom weiterverteilen von Nachrichten, weil die Fehler vieler Netzwerkspiele einzig und alleine auf das Konzept zurück zu führen sind (typische Desync Probleme, die dann zum Totalschaden führen). Beim Sync-Ansatz hat man zwar auch das Problem, dass es zu einem temporären Desync kommen kann, aber da ja die Daten vom Server auf die Clients gespiegelt werden, ist das Problem beim nächsten Update auch wieder passé. Man vermeidet also mit einem Sync-Ansatz einen Totalschaden und bekommt statt dessen "nur" Lags, was aber gerade als nicht so erfahrener Programmierer (wozu ich mich zählen würde) weniger frustierend ist.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

7

18.03.2012, 17:11

Kommt ja auch immer auf die Anforderung an. Ich wollte ihm damit lediglich sagen dass viele Wege nach Rom führen. Man sollte sich die Möglichkeiten anschauen und dann selbst entscheiden was einem am meisten zusagt. Dabei kann man dann natürlich auf die Nase fallen. Aber dafür gibt es ja dann Quellen im Internet, wie andere so Probleme angehen. Da kann man sich viel abgucken und selbst einbauen. Habe ja zu einem Thread verlinkt. In dem hat Fred 3 Links gepostet die meiner Meinung nach wirklich hilfreich sind. Am besten fängt man mit Link3 an. Dann kann man sich ein paar Sachen von Unreal angucken. Danach mal in Source reinschauen. Wirklich hilfreich.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Nexxtron

Alter Hase

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

8

18.03.2012, 18:42

was für mich in der Synchronisation von Objekten sehr hilfreich war ist die Seite hier, aber du solltest erst die Themen wie Prediction verstehen und dann kannst dir die ganzen Beispiele mal anschauen:
http://create.msdn.com/en-US/education/c…varea=19&sort=1

ist zwar in c# aber wenn man programmieren kann dann versteht mans
New Project: Operation CityRacer

Werbeanzeige