• Herzlich Willkommen!

    Nach der Schließung von inDiablo.de wurden die Inhalte und eure Accounts in dieses Forum konvertiert. Ihr könnt euch hier mit eurem alten Account weiterhin einloggen, müsst euch dafür allerdings über die "Passwort vergessen" Funktion ein neues Passwort setzen lassen.

    Solltet ihr keinen Zugriff mehr auf die mit eurem Account verknüpfte Emailadresse haben, so könnt ihr euch unter Angabe eures Accountnamens, eurer alten Emailadresse sowie eurer gewünschten neuen Emailadresse an einen Administrator wenden.

Fragen zu Desync

Gast

Guest
Fragen du Desync

Es geht mir um das Phänomen Desync, welches zwar hauptsächlich im PvP Bereich grossen Einfluss hat aber von der Sache her sehr technisch ist, daher hoffe ich das ihr mir dazu ein paar fragen beantworten könnt. Es gibt schon einige Sachen die ich darüber weis, das es grundsätzlich dadurch entsteht das die beiden Clients aufgrund der Entfernung nicht 100% Synchron arbeiten und das der Ping, Frw auf Str Bugten items, und das Frw bzw die Bewegungsgeschwindigkeit im allgemeinen die grössten Einflussfaktoren sind. Allerdings gibt es einige Sachen die ich mich nicht wirklich erklären kann:


1. Die Tatsache das Desync scheinbar auch auf den desyncenden Char selbst wirkt, man desynct sich quasi selber. Indizien dafür ist vorallem die Tatsache das Palas die viel mit Charge arbeiten es oft gar nicht sehen wenn sie in Prisons festsitzen. Man sperrt sie ein, killt sie und sie wundern sich warum, da sie auf ihrem Bildschirm gar nicht eingesperrt waren und schon meilenweit weg waren.

Weiterer Punkt den man auch öfter hat. Man stirbt irgendwo und wenn man dann die Leiche holen geht stellt man fest das sie an einer ganz anderen Stelle liegt als die an der man vorher, laut Bildschirm, gestorben ist. Hab es schon erlebt das zwischen meiner vermeintlichen und der tatsächlichen Sterbeposition ein kompletter Screen lag.

Noch ein Punkt wäre einer der zahlreichen WW Bugs. Man macht nen nl WW aber statt zu wirbeln steht der Barb nur da, kann nicht mehr agieren und hat eine Wirbelanimation um sich herum. Auf dem eigenen Bildschirm bewegt man sich nicht von der stelle, auf dem Schirm vom Gegner (und Serverseitig scheinbar auch denn man bekommt und verursacht ja Schaden) wirbelt man ihm allerdings hinterher.


2. Es gibt den verbreiteten Glauben das der ständige Wechsel des Waffenslots an sich schon Desync hervorruft. Bestes Beispiel sind Amazonen die Pfeil und Bogen in einem und Titans + Schild im anderen slot haben und ständig hin und her wechseln. Kann an dieser Geschichte etwas dran sein oder ist evtl entstehender Desync allein auf die 30 frw von Titans zurückzuführen?


Das wars an konkreten Fragen. Würde mich freuen wenn jemand da konkrete, belegbare Antworten darauf hat, keine Erfahrungsberichte.
 
Also bei #4 glaube ich liegt dass nur daran, dass man die 30 frw vom titan bekommt, um zu desynchen
 
Ich möcht mal als Frage hinzufügen, warum im Akt1 die Brücke am Dorf (wenn eine da is) Desync-fördernd ist.
 
sehr interessante fragen... den Thread muss ich mitverfolgen...

allerdings kann ich zu dem Prisson sagen, dass es auch der fall sein kann, dass die Prissons bei dauerChargen net immer treffen... d.H. dass die Prissons ab und zu auch leer dastehen, und keinen einsperren.... hatte ich schon ein "paar" mal... in Duell games.. bei meinem V/T oder auch schon beim hammerdin...
 
Meine Antwort bezieht sich aus meinen Kenntnissen über Netzwerktechnologie und Informatik. Ich habe keine Ahnung, ob alle Annahmen stimmen, die ich im Zusammenhang mit D2 in diesem Post treffe. Daher ist alles mit Vorsicht zu genießen und insbesondere nicht "belegt", hilft aber nichtsdestotrotz, das Gesamtprinzip zu verstehen.

Es gibt schon einige Sachen die ich darüber weis, das es grundsätzlich dadurch entsteht das die beiden Clients aufgrund der Entfernung nicht 100% Synchron arbeiten
Diese Annahme ist falsch formuliert. Bei korrekter Formulierung werden einige der anderen Punkte klar.

Es sind nicht die beiden Clients, die untereinander nicht synchron laufen, es ist jeder einzelne Client, der mit dem Server nicht synchron läuft. Bleiben wir erst mal bei einem einzelnen Client.

Für den Server sind sämtliche Bewegungen eine Mischung aus Richtungsvektoren und Tempo. Der Client hat jedoch die schwierige Aufgabe, dazu eine passende Charanimation = Bewegung zu berechnen und anzuzeigen. Klickt man mit der Maus auf ein Ziel, so wird am Client dazu die passende Animation errechnet. Das Ziel sowie dessen aktuelle Aktion (falls es z.B. ein Monster/Gegner ist) sind ihm seit der letzten Synchronisation mit dem Server bekannt.

Zudem sendet der Client die Information des Mausklicks an den Server, der nun seinerseits die entsprechenden Aktionen berechnet und das Ergebnis anschließend an den Client (an alle relevanten Clients) zurücksendet.

Im Idealfall sind die beiden Berechnungsergebnisse von Client und Server identisch und der Client braucht keine Korrektur durchzuführen. Deshalb gibt es selten Probleme, wenn man einfach irgendwo in die Gegend klickt, wo sonst nix is. Keine anderen Aktionen, keine fremden Clients usw. Trotzdem gibt es winzige Korrekturen, die das Spiel "vertuscht" (unsichtbar vollzieht), die auf Grund des Ping und der Serverlast zustande kommen. Ist der Server hoffnungslos überlastet, stellt man fest, dass man zwar optisch sein Ziel erreicht, dann aber nix mehr weiter geht. Monster laufen auf der Stelle, der Char reagiert nicht usw. In diesem Fällen wartet der Client auf die Reaktion des Servers. Vertuschen klappt nicht mangels Daten. Es laged.

Sind nun viele Monster unterwegs, aber nur ein Spieler im Spiel, gibt es auch relativ selten Lags, weil die Monster ja nur auf einen Client reagieren müssen und deshalb die Abweichungen bei den Berechnungen nicht so groß sind.

Sind aber mehrere Clients im Spiel, so muss der Server die Daten mehrerer Mausklicks verarbeiten und alle Clients müssen synchronisiert werden. Das Problem potentiert sich mit zunehmender Zahl an Einflüssen. Auf einem halbwegs ausgelasteten Server kann dies schon zu Lags führen, ohne dass besondere Dinge im Spiel sind. Insbesondere berechnet jeder Client aus den Daten des Servers selbsttätig die Bewegung der anderen Spielerchars. Wenn nun einer der Spieler einen schwachen Ping hat, so ist es für den Server schwierig bis unmöglich, diesen mit allen anderen sauber zu synchronisieren bzw. wird dieser Client informativ immer ein bisschen hinterherhinken, sowohl was gesendete als auch empfangene Daten betrifft.

Leider bewirkt das für die "schnellen" Clients aber ebenfalls Lags, weil die Aktionen, die auf der Gegenseite getätigt werden, nicht rechtzeitig übermittelt werden. Typischerweise ist der Nachteil für den langsamen Client jedoch viel größer als für den schnellen.

So viel zu den Grundlagen. Jetzt zum PvP.

Hier sind einige Besonderheiten zu beachten, die die ganze Problematik deutlich erschweren. Zum einen gibt es einen Str.-Bug, der dafür sorgt, dass Items nicht (korrekt) an die anderen Clients übermittelt werden, sofern dieses Item nur mit Stärke/Dex von Charms (Torch) getragen werden kann. Das führt dazu, dass ein anderer Client nicht die vollständigen Daten zur Berechnug der Animation des Mitspielers erhält.

Eine Wirkung davon ist, dass andere Spieler Rüstung und Waffe des Verursachers nicht sehen können. Eine weitaus relevantere Wirkung ist, dass auch die Berechnung der Animation des Verursachers auf den anderen Clients zwangsläufig zu einem falschen Ergebnis führen muss, da auch bewegungsrelevante Daten fehlen.

Typisches Beispiel sind upped Titans. Amas staten nur sowiel Str./Dex, um diese mit Torch tragen zu können. Der Gegner sieht die Waffe nicht und sein Client berechnet bei der Bewegung des Gegners das Run von der Waffe nicht mit.

Gleichzeitig haben PvP-Chars oftmals so viel Run, dass schon allein wegen der schnellen Richtungswechsel und dem enormen Tempo der Mausklicks die Synchronisation scheitern muss. Teleport ist noch schlimmer.

Wenn nun ein Char sehr schnell läuft, und ein anderer führt eine Aktion durch, die vom Server nur mit Verzögerung übertragen wird, kann es z.B. passieren, dass ein chargender Pala eine Sekunde lang nicht mitbekommt, dass er im Knochengefängnis festhängt. Wobei gerade Palas und Barbs es ja darauf anlegen, durch Desync die Gegner zu verwirren, von daher sind sie also oftmals selbst Schuld an ihrem Problem. Der Char desynct sich selber, weil er für den Server und den anderen Client schlicht zu schnell unterwegs ist, was der eigene Client natürlich nicht mitbekommt. Insbesondere wenn der Gegner selber noch desyncht, wird das ein reines Ratespiel, wer gerade woher kommt.


Das Problem mit der Leiche ist vermutlich darauf zurückzuführen, dass der Client auf Grund des Todes des Chars die letzten Animationen nicht mehr ausführen konnte, die zur Korrektur von falschen Berechnungen erforderlich gewesen wären. Bei schnellen Chars kann da schon mal ein ganzer Bildschirm dazwischen liegen.


Das WW-Problem ist wohl auf einen Bug zurückzuführen. Das Hinterherwirbeln hört einfach nicht auf, es gibt offenbar keine saubere Abbruchroutine für unerreichbare Gegner. Das passiert auch im PvP, wenn ein Bossmonster teleportiert. Dass der Client des Barb das Hinterherwirbeln nicht anzeigt, liegt möglicherweise daran, dass er die Information zur Bewegung nicht vernünftig übermittelt bekommt oder durch einen Bug nicht richtig verarbeitet. In der DL ist Namelock-WW daher afaik verboten, allerdings lässt es sich nicht immer verhindern.


Das Wechseln des Waffenslots selbst bei der Ama dürfte keinen Desynch bewirken. Aber schon das Wechseln, während die Ama auf irgendein Ziel zuläuft, müsste Probleme verursachen.


Ich hoffe, das erklärt diverse Ungereimtheiten zumindest soweit, dass sich keiner mehr über Desyncs und deren Zustandekommen wundert.
 
Ich wusste gar nicht, dass es den Begriff Desync wirklich gibt, ich nenne das auch immer so, wenn mir das passiert.

Desync tritt bei mir nur mit dem Paladin auf, und zwar habe ich in Classic einen Pure-Charger, also alle Syns + Fanatismus skillt.
Stärke hat er ohne Items 79, keins der Items braucht mehr als 70 Stärke. Ein Ausnutzen des Stärkebug liegt nicht vor. Trotzdem kommt es im PvE und PvP häufig zu folgenden Beobachtungen:

- Angechargte Monster blocken jeden Angriff.
Grund: Zwischen dem Pala und dem Monster ist ein Hindernis, meistens irgend ein anderes Monster. Ich muss also teilweise Monster in dritter Reihe anchargen, die eigentlich gar nicht erreichbar sind, aber per Charge angreifbar sind. Da ich in dem Getümmel aber nicht erkennen kann, welches Monster angreifbar ist, bleibt oft nur der Rückzug und das Aufteilen der Gruppe (weglaufen, locken, weglaufen, dann einzeln abarbeiten).
Gefördert wird dieser Fehler durch den Zurückwerfeneffekt des Angriffs, wenn das Ziel nicht stirbt. Und je mehr Monster, desto schlimmer.

- Man wird getroffen, obwohl kein Monster direkt am Paladin ist.
Passiert bei größeren Mengen. Entweder ist man effektiv eingekesselt und das Spiel zeigt es nur falsch an, oder die Monster behindern sich gegenseitig, sodass weit wegstehende effektiv am Paladin dran sind.

Häufige Folgeeffekte hieraus:
- Monster telen gerne mal.
- Die Chargeanimation wird ausgeführt (auch Manaverbrauch), aber es wird effektiv nicht gechargt, sprich nur normal zugeschlagen.

Dass ein Chargepala dadurch ziemlich leidig zu spielen ist, brauche ich wohl nicht extra zu erwähnen...
 
Lag und Desync sind einander ähnlich, aber nicht gleich. Die Auswirkungen sind dieselben, es gibt falsche Anzeigen. Die Ursache ist aber eine andere. Beim Desync ist es ein Problem der unterschiedlichen Geschwindigkeit der verschiedenen Beteiligten. Beim Lag ist es ein Überlastungs-Problem des Servers oder ein Verbindungsproblem.

Der Charger hat grundsätzlich mit Desync zu kämpfen, weil er einfach saumäßig schnell unterwegs ist und gerade das Knockback schnell zum Problem wird, wenn ein Monster hinter ein Hindernis (z.B. einen Stein) geknockt wird, wo der Pala nicht durchkommt.

Was mir bei Monstermassen ganz gut geholfen hat, war die Idee, den Anlauf nicht ebenfalls per Charge zu machen, sondern mit normalem Run, d.h., Chargen, normal zurücklaufen, Chargen. Manche Chargen bei beiden Aktionen, was die Lags natürlich verschlimmert. Beim normalen Zurücklaufen können vom Spiel Korrekturen durchgeführt werden.
 
Danke für die ausführliche Antwort Drago, das war schon deutlich mehr als ich mir erhofft hatte. Ein paar fragen hab ich aber noch, hoffe du kannst die auch beantworten.


1. Das mit dem Server der zwischen den beiden Clients liegt und alles Synchronisieren muss stimmt zwar für das Battle Net aber wie ist es z.b. bei unseren Tcp/ip Games?
In diesem Fall fungiert ja einer der beiden Rechner, ausgehend von 2 Spielern, als Host und einer als Client. Übernimmt in diesem Fall der Host die Aufgaben des Servers und berechnet die Aktionen welche von dem anderen Client nurnoch in Animationen umgewandelt werden müssen oder übernimmt jeder Client die Serveraufgaben für seine eigenen Bereiche? Ich denke mal eher letzteres oder? Denn sonst müsste der Host ja quasi immun gegen Desync vom Gegner sein da er ja die Berechnung der Aktionen vornimmt und deswegen immer auf dem aktuellen stand sein müsste, oder wie ist das?


2. Wenn man Frw str buggen kann um damit desync zu erzeugen müsste das selbe doch eigentlich auch mit fcr und fhr gehen oder nicht? Zb indem man eine Upd Viper str bugd so das der andere Client (denke mal der Server weis in diesem Fall schon bescheid oder?) die Animationen und Bewegungen mit dem falschen Cap berechnet?


3. Bewirkt das wechseln des Waffenslots während man rennt an sich schon desync oder tritt der nur in Verbindung mit (verbugtem) Frw auf einem der beiden Slots auf? Oder anders gefragt, reicht es dem Server/Host durch das ständige Slotwechseln zusätzliche Arbeit zu machen um Desync zu erzeugen oder geht der bei den Amas zu beobachtende Desync allein auf das verbugte frw zurück?


4. Rein aus Interesse, ab wann gilt eine Aktion eigentlich als definitiv durchgeführt?
Beispiel im Bnet: Ein pala charged fröhlich umher und wird von einem Nec eingesperrt. An welchem Punkt ist der Pala tatsächlich eingesperrt?

Wenn der Client des Necs den Befehl zum Prison gibt, bzw die entsprechende Cast Animation durchführt.

Wenn der Server die entsprechende Aktion durchführt. (ist meine Vermutung)

Oder erst wenn der Client des palas die Berechnungen des Servers bekommt und sie als Animationen darstellt.

Mir gehts hierbei um die tatsächliche Durchführung der Aktion, wann sie dargestellt wird ist klar und steht, wie ich vermute, auf nem anderen Blatt.
 
Meine Antworten hier nähern sich dem Bereich der wilden Spekulation mit Riesenschritten.

1. Prinzipiell ist beides möglich. Entweder spielt der Rechner des Spielleiters den Host und alle anderen sind Clients oder alle beteiligen sich gleichmäßig an der Rechenarbeit. Ich vermute allerdings, dass ersteres zutrifft, weil das andere eine völlig andere Strategie für die Berechnungen erfordert und ich vermute, Blizzard hat keine zwei verschiedenen Strategien programmiert zwischen BNet und den anderen Netzwerkspielarten.

Ich gehe also davon aus, dass der Leiter als Host arbeitet. Demnach müsste der "Client" auf diesem Rechner zumindest deutliche Vorteile gegenüber den anderen Clients haben, was die Synchronisation angeht. Wenn das nicht der Fall ist, spricht das tatsächlich für die andere Strategie. Natürlich bemerkt man das überhaupt nur dann, wenn es überhaupt Lags gibt, was bei sehr schnellen Verbindungen und einem sehr starken Hostrechner nicht unbedingt sein muss.

2. Prinzipiell müsste es auch mit FCR/FHR gehen, allerdings sind da die Unterschiede zwischen den Items deutlich geringer. Während 40% FasterRun schon mal 20 oder mehr Prozent im Chartempo ausmacht, geht es bei FCR um einzelne Frames. Bei Teleport führt das dann Prinzipiell zu demselben Effekt wie Charge, aber mit weitaus geringeren Unterschieden, es sei denn, du trägst lauter FC-Items mit Stärke-Bug. Im Normalfall ist es aber nur Spirit.

Was Schüsse angeht, berechnet vermutlich der Server die Salve und übermittelt die Ergebnisse an die anderen Clients, so dass ein Dutzend Feuerbälle auch ein Dutzend Feuerbälle ergibt. Der abfeuernde Char bewegt sich aber möglicherweise nicht dazu passend auf den anderen Clients. Ich glaube nicht, dass es hier starkes Desync gibt.

Bei FHR wüsste ich im Moment nicht, was Desync großartiges bewirken würde, außer dass die Anzeige ein bisschen hinterher hinkt. Wie bei FC geht es hier aber um einzelne Frames, die sich vermutlich nicht auswirken.

3. Wenn allein das Wechseln des Waffenslots reichen würde, müsste das bei allen Chars zu provozieren sein. Ich kenne es aber nur von Amas, was für Titans Run spricht.

4. Der Server ist in dieser Beziehung der entscheidende Faktor. Was dort berechnet ist und als durchgeführt gilt, ist auch so. Die Clients zeigen das nur an. Alles andere würde dem Server die Kontrolle nehmen und nicht funktionieren.
 
Ich gehe also davon aus, dass der Leiter als Host arbeitet. Demnach müsste der "Client" auf diesem Rechner zumindest deutliche Vorteile gegenüber den anderen Clients haben, was die Synchronisation angeht. Wenn das nicht der Fall ist, spricht das tatsächlich für die andere Strategie. Natürlich bemerkt man das überhaupt nur dann, wenn es überhaupt Lags gibt, was bei sehr schnellen Verbindungen und einem sehr starken Hostrechner nicht unbedingt sein muss.

Nun als Host hat man definitiv Vorteile, der Ping ist besser und man hat keinerlei Lags und ähnliches. Desync ist aber ähnlich stark wie sonst auch, nur das er halt nicht durch schlechten ping noch weiter verstärkt wird. Aber das man den pala netmal auf der Karte hat obwohl er schon vor einem steht passiert auch hier noch.
Dürfte doch eigentlich net sein wenn der Host Rechner die Serverarbeiten macht da er ja die aktionen des anderen Clients berechnet oder?


3. Wenn allein das Wechseln des Waffenslots reichen würde, müsste das bei allen Chars zu provozieren sein. Ich kenne es aber nur von Amas, was für Titans Run spricht.

Müsste man mal testen glaub ich. Das im Bnet noch keiner auf die idee gekommen ist muss nicht zwangsläufig heissen das es nicht geht...
 
Dürfte doch eigentlich net sein wenn der Host Rechner die Serverarbeiten macht da er ja die aktionen des anderen Clients berechnet oder?
Jeder Client synchronisiert sich ja nur alle paar Zehntelsekunden mit dem Server(prozess). So kann es auch sein, dass der Client vom Hostrechner zunächst mit der falschen Information arbeitet, bevor die korrekten Daten beim nächsten Synchronisierungsprozess übermittelt werden. Danach rechnet er wieder mit falschen Daten weiter, allerdings aufgrund der zeitnahen Aktualisierung mit relativ korrekten Server-Daten. Das ändert aber nichts daran, dass er falsch rechnet, weil er nicht die korrekten Daten der anderen Clients hat. Je nachdem, wie oft die Synchronisation erfolgt und wie stark der Gegner desynced, ist das sicherlich bemerkbar.

Wie oft die Synchronisation erfolgt, weiß ich nicht. Die Entwickler müssen hier natürlich abwägen zwischen Genauigkeit, Serverlast und Signallaufzeit. Das sind widersprüchliche Ziele (wie so oft bei Netzwerktechnik). Eine typische Signallaufzeit im BNet beträgt 100 ms (typischer ping bei normaler Verbindung). Manche sind deutlich schneller, einige aber auch deutlich langsamer. Natürlich könnte man diese Laufzeit ignorieren und trotzdem alle 20 ms aktuelle Daten senden (in jede Richtung), aber dann muss man mit viel Datenmüll hantieren, der durch Desync entstehen würde (z.B. eine Bewegung, die gar nicht möglich ist usw.).

Dazu kommt, dass beide Seiten ja auch noch Daten verarbeiten müssen, was ebenfalls Zeit kostet. Insbesondere muss der Server-Prozessor doppelte Arbeit leisten, weil er ja den eigenen Client bedienen muss und alle angeschlossenen sowie den Server-Prozess. Da heutige Grafikkarten den Uralt-Grafikmodus von D2 nicht mehr unterstützen, muss der Hauptprozessor auch noch die ganze Grafik auf dem Rechner mitberechnen. Wenn es voll wird, ist er also gut beschäftigt. Kann also durchaus sein, dass das bei der Synchronisation noch mal 1-2 Zehntel kostet, womit wir schon bei 3/10 wären. Und in 3/10 legt ein chargender Pala schon eine nette Strecke zurück.

Die Zahlen sind alle sehr grob geraten. Ich hab keine Erfahrungswerte mit TCP/IP in dem Zusammenhang.
 
drago schrieb:
Gleichzeitig haben PvP-Chars oftmals so viel Run, dass schon allein wegen der schnellen Richtungswechsel und dem enormen Tempo der Mausklicks die Synchronisation scheitern muss. ?Teleport ist noch schlimmer.

Heißt das, man kann mit Teleport auch Desyncen, oder habe ich da etwas falsch verstanden?
 
ja, sollte an und für sich gehen
 
jop.. hatte ich auch schon.. mit ner 105 fcr sorc lange und wirr telen, da kommt auch oftmals ein falscher standpunkt von dir beim anderen an...... aber bei chargen oder viel FrW amas gehts am besten... bei teleport nur seltener...

is meine erfahrung

@drago deine posts sind sehr aufschlussreich.. danke
 
Das Problem ist, dass man Teleport-Desync so schlecht nachweisen kann.
Es könnte eben auch ein Lag sein, was die gleichen Eigenschaften besitzt.

Ich denke da an Spirit und z.b. einer Hoto-Geißel. Das wärn schonmal 75FC, die desyncen. Auf einer 105er Sorc müsste man somit auf dem Gegnerclient bei 30FC sein.

Das sind schonmal satte 3 Frames Unterschied, die auf jedenfall bemerkbar sein müssten.
 
Obwohl hier ein paar Gebannte rumrennen, würde ich den Thread ungern gelöscht sehen
 
Zurück
Oben