UDP Übertragungsstrategien
Übersicht

![]() |
ZaPBetreff: UDP Übertragungsstrategien |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Ich bin also wieder an dem Punkt angelangt, die Netzwerkfunktionalität zu erstellen. In der früheren Version meines Projektes hatte ich alles impulsweise übertragen, hier ein Pseudo-Code zur verdeutlichung: Code: [AUSKLAPPEN] --Frame1: Spieler: Ich laufe und bin @0 12 31 --Frame2: Spieler: Ich laufe und bin @2 12 21 ... Ich hatte mir jetzt ein paar andere Strategien überlegt, zum Bleistift: Code: [AUSKLAPPEN] --frame1: Spieler: Ich fange an zu laufen --frame2: -nix- --frame3: Spieler: Ich laufe nichtmehr, bin @0 3 34 Oder Variante 2: Code: [AUSKLAPPEN] --frame1: Spieler: Ich möchte laufen Server: Du darfst laufen --frame2: -nix- --frame3: Spieler: Ich möchte nicht weiterlaufen Server: alles klar, du bist jetzt @0 64 21 Gibt es noch bessere Varianten, um die Bandbreite und Latenz möglichst gering zu halten, denn bei der allerersten Variante, also die impulsvariante, gab es oft Nachrichtenstaus, die werde ich aber auch sein lassen.? MfG |
||
Starfare: Worklog, Website (download) |
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die erste Variante ist prinzipiell schon richtig für ein Arcade-Spiel. Also sowohl Position als auch Richtung zu übertragen.
Nur darfst Du diese Daten nicht jedes Frame übertragen! Hier muss man ein bisschen probieren, aber 10 - 20 Übertragungen pro Sekunde sollten schon reichen. Dadurch, dass ja auch die Richtung übertragen wird, kannst Du den Spieler in diese Richtung solange weiterbewegen, bis ein neues Paket ankommt und die Position aktualisiert wird. Ansonsten kann man auch inter- und extrapolieren, das ist aber auch ein Thema für sich. Von Deinen anderen Varianten würde ich eher abraten, da das Spiel z.B. bei Paketverlust schnell asynchron werden kann. Kommt aber auch immer auf das Spielprinzip drauf an. |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oh da fällt mir ein, dass ich zu erwähnen vergaß, dass es sich hierbei um einen FPS handelt. Auf deine Idee bin ich noch gar nicht gekommen, erst einmal danke dafür. Ich glaube die werde ich ebenfalls austesten. Das größte Problem ist bei mir und Leuten mit denen ich alles teste, dass sich oft Daten stauen, und es dadurch ein riesigen Spielstatusunterschied gibt.
Zum UDP Datenverlust muss ich generell auchmal etwas loswerden, ich hatte verschiedene Testläufe gemacht, innerhalb Deutschlands: Berlin -> Südbayern, u.a. und von 600 Paketen sind ausnahmslos alle angekommen, wenn man ein Delay von 1-2ms einbaut, 1ms reicht oft schon. Wie es von hier über See aussieht wäre aber auch interessant. MfG |
||
Starfare: Worklog, Website (download) |
![]() |
biggicekey |
![]() Antworten mit Zitat ![]() |
---|---|---|
ZaP hat Folgendes geschrieben: von 600 Paketen sind ausnahmslos alle angekommen, wenn man ein Delay von 1-2ms einbaut, 1ms reicht oft schon. Wie es von hier über See aussieht wäre aber auch interessant.
rein aus interesse: sieht das ohne delay anders aus? und an welcher stelle stzt du das delay? vorm lesen der streams? |
||
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller Nothing more to register - you've cleaned us out![/size] |
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das Delay hilft gegen Datenverlust durch Paketstaus, mit Paketverlust generell hat das nichts zu tun.
Über eine saubere Verbindung sollte es normalerweise auch nicht zu Verlusten kommen, es kann aber eben auftreten. Und wenn man nur Differenzen übermittelt, kann Dir ein einzelnes verlorenes Paket das Spiel zerstören. Ansonsten kann es bei UDP auch vorkommen, dass die Pakete nicht in der richtigen Reihenfolge ankommen, also auch hier aufpassen. Bei der von mir genannten Methode sollte man also noch einen Paketzähler einbauen. So kann man verspätete Pakete erkennen und wegwerfen. |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
In der idealen Welt verliert UDP nix.
In der realen Welt bis zu 20% der Pakete ... Ohne eine eigene Reliable Implementation (-> Rottnet für die die net selbst eine schreiben wollen) ist da nix zu holen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group