Wie lange ist die typische Eingangsverzögerung von StarCraft 2 im Vergleich zu anderen Wettkampfspielen?

Battle.net 2.0 scheint schwere Netcode-Probleme zu haben, was bedeutet, dass Befehle länger dauern, um ausgeführt zu werden, als sie sollten. Dies ist wahrscheinlich ein Ergebnis der Vermeidung von Verzögerung und fallen gelassenen Verbindungen, aber es kommt zu den Kosten der Leistung. Im Vergleich zu Spielen wie Helden von Newerth, Dota2 und Counter-Strike, die eine ausgezeichnete Latenz haben, wie lange ist StarCraft 2's Verzögerung?

Es war ein Video, das darauf gemacht wurde, als SC2 erst vor Jahren herauskam, aber es ist jetzt verzweifelt veraltet; Patches haben das angeblich fixiert, aber der SC2 ist noch deutlich langsamer als Brood War iCCup #LL. Ein einfaches Beispiel für diese Kreuzvergleichsanalyse zwischen Spielen ist hier zu sehen, aber ich weiß nicht, wie man es repliziert.

  • Was ist die "kanonische" Option für die Wings of Liberty Split Missionen?
  • Wie kann ich die Konsole aktivieren, ohne dass es beim Start auftaucht?
  • Was macht der Starcraft 2 Gastpass?
  • Wie funktioniert der Performance Index?
  • Was ist der richtige Weg, um mit jemandem umzugehen, der Team tötet und dich in Starcraft 2 belästigt?
  • Wie gut ist Hard AI?
  • Ist jemand in der Lage, das Experiment für SC2 und möglicherweise auch für andere Spiele zu wiederholen?

  • Wie kann ich es einrichten, damit ich einen einzigen Schlüssel für mehrere Funktionen verwenden kann?
  • Was bedeuten die Einheitsstufen in StarCraft 2?
  • SCV Reparaturgeschwindigkeit
  • Was ist die beste Methode, um bei Microsoft in Starcraft 2 besser zu werden?
  • Bedeutung von Zerglings zu Zerg-Armeen
  • Was ist der Spiellängenbonus?
  • 2 Solutions collect form web for “Wie lange ist die typische Eingangsverzögerung von StarCraft 2 im Vergleich zu anderen Wettkampfspielen?”

    Das Verständnis, warum diese Frage etwas bedeutungslos ist, erfordert ein Verständnis dafür, wie die Netzwerkarchitektur von Starcraft 2 funktioniert.

    In den meisten Online-Spielen haben Sie einen Server und eine Reihe von Clients. Jeder Client sendet alle seine Aktionen an den Server, und der Server sendet das Ergebnis all dieser Aktionen an jeden Client. Der Server ist die Autorität – der Zustand der Spielwelt im Speicher des Servers ist die Art und Weise, wie die Spielwelt in diesem Moment tatsächlich aussieht. Die Spielwelt eines Klienten ist jedoch immer veraltet, denn es gibt eine gewisse Latenz (etwa die Hälfte des Ping ), wenn der Server Updates sendet und der Client sie erhält. Um dies zu bekämpfen, wird das Spiel versuchen, die realen Positionen von Objekten zu erraten . Halten Sie das Spiel glatt, wenn es erraten falsch ist kompliziert, und mehr Arbeit muss getan werden, um Latenz in der anderen Richtung Rechnung zu tragen. Kurz gesagt, es ist kompliziert.

    Doch das ist nicht so, wie die Vernetzung von Starcraft II funktioniert.


    Das primäre Problem mit dem Client-Server-Modell ist, dass jeder Server-Tick (in der Regel etwa 20 mal pro Sekunde) , müssen wir die neue Position / Geschwindigkeit / Gesundheit / etc senden. Von jedem Gegenstand, der sich verändert hat. Das ist gut in einem Spiel wie Counterstrike, wo man vielleicht von 60 Spielern und vielleicht ein paar Physik-Einheiten, um jedes Tick zu aktualisieren. Doch in einem RTS wie Starcraft II, wo ein 8-Spieler-Spiel konnte leicht über 1000 Einheiten, das ist einfach nicht machbar.

    Stattdessen nimmt Starcraft II (und jedes andere Mainstream-RTS) einen anderen Ansatz ein. Die Idee ist, dass das Spiel ganz deterministisch sein sollte, so dass das Ausführen des Spiels mit genau den gleichen Eingaben immer genau die gleichen Ergebnisse liefern sollte. Dann alles, was wir tun müssen, ist sicherzustellen, dass alle Spieler die gleichen Eingaben zur gleichen Zeit laufen, und sie sollten alle die gleichen Ergebnisse sehen. SCII tut dies, indem er jeden Befehl, den du ihm gegeben hast, irgendwann in der Zukunft (typischerweise etwa 12 Frames, dh 200ms) . Jeder sendet ihre Befehle an alle anderen und dann, wenn jeder hat alle Befehle, jeder führt sie alle auf einmal. Jetzt, anstatt Tausende von Einheiten zu synchronisieren, brauchen die Spieler nur eine Synchronisierung eine Handvoll Befehle, eine große Verbesserung. Und weil es keine Notwendigkeit für eine zentrale Autorität gibt, werden RTS-Spiele (einschließlich SCII) in der Regel nur Spieler direkt miteinander kommunizieren, anstatt einen zentralen Server zu haben. Diese Art von Netzwerkarchitektur heißt Peer-to-Peer (P2P) .


    Es gibt eine Reihe von Problemen mit dieser Peer-to-Peer-Architektur:

    • Observable "lag" . Da Befehle in der Warteschlange stehen und nicht sofort ausgeführt werden, gibt es eine beobachtbare Verzögerung zwischen, wenn ein Spieler auf die Maus klickt und wenn das Gerät antwortet. Diese "Verzögerung" ist nicht im traditionellen Sinn, da es nicht auf die Latenz zwischen den Spielern zurückzuführen ist; Vielmehr ist es eine fundamentale und unvermeidliche Konsequenz, wie die SCII-Netzwerkarchitektur funktioniert. Es ist nicht wegen der schlechten Kodierung auf Blizzards Teil – es gibt nichts, was sie tun können, um es zu vermeiden, ohne auf eine Client-Server-Architektur zu wechseln (was seine eigenen, schwereren Probleme haben würde, siehe oben)

    • Jeder Spieler ist so langsam wie der langsamste Spieler. Wenn die 200ms Warteschlange-Zeit vergangen ist und ein Spieler noch nicht ihre letzten Befehle ausgesendet hat, wird das Spiel für alle einfrieren, bis jeder die Befehle des Spielers erhält. In SCII, nach etwa einer Sekunde, keine Befehle von einem Spieler zu erhalten, wird der Dialog "Warten auf Spieler XXX" angezeigt. Auch wenn SCII erkennt, dass ein Spieler konsequent läuft, wenn er seine Befehle aussendet, erhöht das Spiel die Warteschlange, um dem langsameren Spieler mehr Spielraum zu geben. Dies ist, was die "XXX verlangsamt das Spiel" Nachricht bedeutet.

      Es ist auch der Grund, warum, wenn es einen Hängespieler gibt, werden Ihre Einheiten länger dauern, um auf Sie zu antworten, und warum Einheiten sich langsamer bewegen oder manchmal ganz einfrieren werden, auch wenn Ihr Computer mehr als in der Lage ist, so viele Einheiten zu handhaben.

      Schließlich ist es auch so, warum ich gesagt habe, dass Ihre Frage "etwas bedeutungslos" ist – es ist nicht so, dass SCII "netcode Probleme hat", es ist nur, dass SCII keine andere Wahl hat, als die Warteschlangenzeit zu erhöhen, um den Spieler zu kompensieren, der keine Befehle schnell aussendet . Dies ist unvermeidbar, und jeder Mainstream-RTS hat das gleiche Problem (Beachten Sie, dass Counterstrike Client-Server ist und da es nicht so viele Einheiten wie ein RTS gibt, gibt es eine gute Chance, dass HoN auch Client-Server ist. Server-Spiele haben nicht dieses Problem überhaupt.)

    • Desyncs sind möglich . Unter dem Client-Server ist das Desyncing (das heißt, ein anderer Spiel-Status als jeder andere) kein Problem, da das Spiel im Wesentlichen immer entschlossen ist und immer versucht, es zu kompensieren. Doch in einem P2P RTS-Spiel, da es keine eigentliche Autorität gibt, ist ein Desync katastrophal – wie wissen wir, wessen Spielzustand richtig ist !? SCII ist gut genug codiert, dass Desyncs außerordentlich selten sind, und es wird sein Bestes versuchen, sich zu erholen (zB wenn zwei Spieler einverstanden sind und man nicht, man kann sich doch sicher sein, dass die beiden Spieler den richtigen Zustand haben) , aber manchmal ist das auch so Einfach nicht möglich In SCII, das ergibt sich bei jedem, der aus dem Spiel mit der Meldung "Du wurdest entschlossen" getreten.

    • Betrügen In einem Client-Server-Spiel ist es möglich, jedem Kunden nur die benötigten Informationen zu geben. In einem P2P-Spiel muss jedoch, um die gesamte Simulation laufen zu lassen, jeder Spieler den gesamten Spielzustand jederzeit kennen müssen. Aus diesem Grund sind Maphacks in SCII möglich – wenn das Spiel Client-Server wäre, wäre Maphacks unmöglich. Auch können Spieler darüber liegen, wer ein Spiel gewonnen / verloren hat (siehe "Stats Tracking" unten) . Diese Tatsachen sind der Grund, warum viele Leute über die RTS-Spiele-Client-Server in der Zukunft sprechen, da die Bandbreite der Benutzer steigt. Alle Mainstream-RTS sind immer noch P2P.

    • Skalierung In einem P2P-Spiel steigt die Gesamtmenge des Netzwerkverkehrs quadratisch mit der Anzahl der Spieler an, im Gegensatz zu einem Client-Server-Spiel, bei dem der Netzwerkverkehr linear steigt. Was bedeutet dies, während P2P weniger Verkehr für eine kleine Anzahl von Spielern erfordert, erfordert es viel mehr für eine große Anzahl von Spielern. Sie werden wahrscheinlich nie ein 64-Spieler-P2P-Spiel sehen.

    Diese Liste von Nachteilen ist, warum Client-Server ist so viel beliebter. Für Spiele mit einer großen Anzahl von Objekten (vor allem RTS) sind diese Nachteile aber nicht annähernd so schlimm wie der Versuch, Tausende von Einheiten pro Update zu synchronisieren.

    Für weitere Informationen über P2P-Spiele, siehe den kanonischen Artikel, der im Wesentlichen vernetzte RTS ist möglich, 1500 Bogenschützen auf einer 28.8: Netzwerk-Programmierung in Age of Empires und Jenseits


    [Bearbeiten] Es gab einige Verwirrung über den Zweck von Battle.Net – schließlich, wenn es keinen zentralen Server gibt, warum brauchen wir Battle.Net? Battle.Net dient ein paar Zwecke:

    • Matchmaking Die Spieler kommunizieren direkt miteinander im Spiel, aber sie brauchen eine Möglichkeit, sich gegenseitig zu entdecken.
    • Stats Tracking Verfolgen Sie Gewinne / Verluste / Errungenschaften / etc. Natürlich, da das Spiel nicht tatsächlich auf Blizzards Servern läuft, muss Blizzard auf jeden Spieler ehrlich berichten, wenn sie gewinnen / verlieren, was zu einem Betrug führen könnte. Aber diese Art von Cheat ist leicht zu erkennen, da zwei Spieler, die einen Gewinn oder Verlust nicht einverstanden sind, selten sein sollten, und wenn es dem gleichen Spieler immer wieder passiert …
    • Nat Punch-Through Aus diesem Grund müssen Sie keine Ports in Ihrer Firewall öffnen, um Starcraft II zu spielen.
    • Anti-Piraterie Es gibt keinen technischen Grund, warum das Spiel beenden sollte, wenn Battle.Net für Reparaturen untergeht; Oder warum sollten Sie eine Internetverbindung benötigen, um Einzelspieler zu spielen. Sie tun dies nur als ein (fehlgeleitet, meiner Meinung nach) Versuch, Piraterie zu bekämpfen.

    Manche Leute haben das behauptet, während das Spiel nicht wirklich auf den Servern von Battle.Net ausgeführt wird, werden die Befehle, die Spieler aneinander senden, immer noch über Battle.Net geführt. Dies ist möglich, aber höchst unwahrscheinlich: es würde unnötig und enorm die Blizzard-Bandbreitenkosten erhöhen und die Verzögerung (möglicherweise deutlich) für alle Spieler erhöhen. Der einzige Vorteil wäre, die IP-Adressen der Spieler voneinander zu verbergen. Ich komme zu diesem Posten zurück, wenn ich mehr lerne.

    Starcraft 2 hat eine Eingangsverzögerung von 200 ms, wie Starcraft 1 (Battle.net) Referenz . Dies ist nicht aufgrund der netcode, aber die Server zwingen diese Verzögerung, um es konkurrenzfähiger zu machen.

    Dieses Beispiel gilt für jedes Server / Client-Layout, auch wenn der Server ein Client (Player) ist:

    Diese Verzögerung ist gezwungen, das Spiel ausgeglichener zu machen. Angenommen, ich wohne neben den Servern und lebst am anderen Ende des Landes. Ich habe eine super gute Verbindung, da ich in einer großen Stadt lebe und deine Verbindung ist schlecht, weil es keine guten Anbieter gibt, wo du lebst. Meine Verzögerung ist 10 ms und deine ist 190 ms.

    Während ich nicht beweisen kann, wie die Spiele gehostet werden oder welche Netzwerk-Engine Blizzard es benutzt, sollte es genügen, zu sagen, dass es eine untere Grenze gibt. Hast du jemals versucht, 1v1 mit einem Kumpel im selben Raum zu spielen? Ich meine sogar den schlimmsten Netzcode / Netzwerk Transfer mit so vielen Einheiten wie das Spiel möglich ist, um zu unterstützen, sollte nichts im Vergleich zu 1 Gigabit Ethernet sein.

    Wenn es irgendeine Art von P2P gibt, sollte GSL keine Verzögerung haben, da jeder auf dem gleichen Schalter ist (verbunden mit dem Internet). Nun, sie haben immer noch Probleme.

    Das gleiche gilt, wenn ein Spieler als Host ausgewählt wird, sind sie immer noch auf dem gleichen Subnetz, also sollte es immer noch keine Verzögerung geben.

    In anderen Spielen, sag HoN, würde ich einen riesigen Vorteil haben, denn meine Verzögerung wäre deutlich niedriger als deine. Starcraft 2 versucht dies zu kompensieren, indem er 200 ms Verzögerung zwingt. Wenn deine Verzögerung größer ist, dann ist es dein Problem und du musst die Konsequenzen erleiden.

    Es gibt keinen Sinn, die Verzögerungen zu vergleichen, da man nicht unter 200 ms gehen kann, zumindest nicht in Battle.net.

    Iccup umrahmte die 200 ms Starcraft 1 Verzögerung durch die Bereitstellung eines eigenen Servers (nicht Battle.net) ohne Blizzards Zustimmung, das funktionierte gut, weil es keine Richtlinien und das Spiel war ziemlich alt, so Blizzard akzeptiert es. Aber jetzt gibt es kräftige Geldstrafen für Reverse Engineering der Battle.net.

    Während Beta DarkBliz versuchte, die Battle.net zu hacken und der Gründer wurde mit Gesetzesklagen bedroht und unterstützt.

    Also grundsätzlich gibt es keine No / Low-Verzögerung Version von Starcraft 2 bis Blizzards sagt so. Bitte denke nicht, dass Blizzard einen schlechten Netcode implementiert hat. Ich meine, sie sind ein Multi-Milliarden-Dollar-Unternehmen und wenn sie wollten, dass Starcraft 2 eine kleinere Verzögerung haben würde, würden sie die richtigen Leute einstellen, wenn sie sie nicht bereits haben.

    Hier sind die von der Logik diktierten Tatsachen:

    • Es muss eine untere Grenze für Latenz sein, kein Starcraft 2 Spiel kann unter das gehen. Es könnte 200 ms sein, da viele Quellen diesen Wert vorschlagen und dies ist der bestätigte Wert für Starcraft 1. (siehe oben)
    • Blizzard muss ihre eigenen Gründe für diese Zwangsverzögerung haben, da sie diese Verzögerung in jedem RTS eingeführt haben, die sie freigegeben haben und jedes RTS war sehr beliebt.
    • Auch wenn Sie wüssten, dass ihr Code oder Software-Design fehlerhaft ist (lesen Sie schlecht) können Sie das nicht ändern.
    Wir lieben es zu spielen, vor allem Videospiele.