Es wäre eine Vermutung, zu sagen, "Internet ist jetzt ziemlich schnell und zuverlässig", wie @Ordous betonte, und eine gefährliche auch.
Der Grund, warum das benutzerdefinierte UDP + -Protokoll für übermittlungskritische Pakete bei den meisten Spielen magisch ist, besteht darin, dass es manchmal "in Ordnung" sein kann, wenn Sie ein Paket verlieren (nur für z. B. sekundäre unkritische Ereignisse, um das Spiel zu beenden). Es gibt auch Zeiten, in denen es "überhaupt nicht in Ordnung" ist, Daten für z. B. Cursorbewegung usw. zu verlieren. (Ich mache keine Spieleentwicklung, um meine vagen Beispiele zu verzeihen.)
Standardmäßig verschwendet UDP keine Zeit damit, sie immer wieder zu pushen.
Übrigens scheinen viele Spiele das "Okay, manchmal zu verlieren" -Paket mehr zu haben als "immer ohne Fehler liefern zu müssen" -Pakete. Damit machen Sie sich auf natürliche Weise fit für diese Aufgabe.
Alles, was für UDP benötigt wurde, war die Verwendung eines benutzerdefinierten Protokolls, das nur dazu beiträgt, dass die "Immer ohne Fehler zu liefern" -Pakete ordnungsgemäß zugestellt werden müssen, und die restlichen Spieldaten der Gnade der Netzwerkverbindung überlässt.
Wenn Sie jetzt entscheiden, welche Art von Verkehr die meisten Ihrer zu übertragenden Daten ausmacht, können Sie eine bessere Entscheidung treffen.
Der Punkt gegen TCP wäre, dass die für Wiederholungsversuche aufgewendete Zeit eher für das Senden von Paketen verwendet werden könnte, die JETZT von Bedeutung sind.
Es besteht auch die Möglichkeit, dass TCP bei Problemen während der Übertragung zu einem heruntergekommenen Gameplay-Szenario für den Benutzer führt, das seine Erfahrung im Vergleich zu UDP + Custom Stack beeinträchtigt dies an andere Experten hier, um dies zu kommentieren. Würde gerne mehr über die Möglichkeiten dieses Szenarios erfahren).
internet is now pretty fast and reliable
Nein, ist es nicht. Die Bandbreite hat sich zwar dramatisch erhöht, aber die Latenz ist immer noch recht hoch. Bei reinem TCP muss die Server-Tick-Zeit länger als die maximal erschwingliche Latenz sein, es sei denn, Sie führen Paket-Squishing durch - am besten auf dem Client über UDP. Das Problem ist, dass einige Informationen in einem Spiel zuverlässig sein müssen, während andere schnell sein müssen. Benutzerdefinierte Protokolle auf UDP ermöglichen dies ebenso wie eine Reihe von proprietären Protokollen, die Ihnen alles bieten, was Sie in einem netten Paket benötigen.