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
Da fühl ich mich schon mal beruhigtEs gibt viele Multiplayer-Spiele, die teils gezwungenermaßen TCP/IP benutzen und gut funktionieren, WoW nutzt AFAIK auch nur TCP.
Interessanter Artikel - bin ihn eben mal überflogen.Ich würde an Deiner Stelle versuchen eine Bibliothek für die Kommunikation zu finden. Oft kann man die dann auch auf UDP umstellen. Außerdem solltest Du Dir überlegen sowas wie protobuf von Google zu nutzen, das wurde bei Diablo 3 auch eingesetzt, sowas erhöht Deine Produktivität sicher. Schau mal hier, da spricht ein erfahrener Spieleentwickler über Netzwerkbibliotheken: http://www.codeofhonor.com/blog/choosing-a-game-network-lib
Zitat von »"Glocke"«
nd warum sollte Gott keine Aktualisierungen über UDP verschicken?
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Den Satz musste ich einfach nochmal zitieren, denn genau das ist bei Spielen nämlich meist der Fall. Die meisten der verschickten Pakete will man ja tatsächlich an alle Clients oder den Server schicken, sodass auch garantiert ist, dass sie ankommen und das meist auch noch in der richtigen Reihenfolge. Sonst landet man in Out of Synch oder der Spieler fühlt sich laggy.Meistens kommt man zu dem Schluss das man viele Features von TCP benötigt und zwar für recht viele Daten.
Rein vom Funktionsprinzip ist es auch einfach ... immer dieser Detail-Teufel ]:->
Netzwerk ist halt prinzipiell einfach, aber der Teufel steckt im Detail weil es maximal asynchron ist.
Gerade weil es weniger Features bietet als TCP ist es ja so schnell ... hat Vorteile, hat NachteileDann kommt man natürlich zu der Annahme, dass UDP viel besser/schneller ist, da es viele Dinge nicht überprüfen muss.
Headshot ...Nun muss man aber überlegen. Was benötige ich für Features von TCP für mein Spiel? Was benötige ich vor allem wie häufig? Meistens kommt man zu dem Schluss das man viele Features von TCP benötigt und zwar für recht viele Daten. Jetzt kann man natürlich anfangen, TCP selbst zu implementieren und intern UDP nutzen. Das Problem hierbei ist, dass TCP und UDP in der Hardware implementiert sind. Das ist natürlich viel viel schneller als wenn ich jetzt Highlevel (am besten noch mit irgendeiner Skriptsprache) den ganzen kram nachbastel.
Ich finde es auch sinnvoller an eben dieser Stelle anzusetzen, als erstmal TCP "nachzubauen" und damit auch ewig viel Zeit zu verschenken.Wenn man sich ein paar Gedanken macht kann man Nachrichten vielleicht sinnvoll zusammen fassen und verkürzen. Es gibt allgemein sehr viele Möglichkeiten zu optimieren. Vermutlich läuft es damit hinterher stabiler und schneller wenn man hier richtig angeht.
Ich denke genau das werde ich machen: erstmal mit TCP arbeiten und schauen, ob meine Anwendung damit an die Grenzen kommt; und dann ggf. noch einmal überlegen/Hilfe suchen/etc.Nun warum liest man dann so oft im Internet, dass UDP doch das muss ist? Die meisten die das schreiben haben es selbst vermutlich nie getestet. Hier wird Halbwissen weiter getragen, was irgendwo aufgeschnappt wird. Am sinnvollsten ist meiner Meinung nach, und das trifft auf viele Probleme beim entwickeln zu, erst mal den einfachen Weg zu gehen. Wenn ich merke, dass ich optimieren muss, dann kann ich damit anfangen. Versuch es dir erst einfach zu machen. Wenn das nicht klappt kannst du es immer noch kompliziert versuchen.
Ich wüsste halt jetzt auch nicht mehr, welche Pakete denn verloren gehen dürften Ich glaube das macht echt nur Sinn, wenn die Pakete - wenn sie am Client antreffen - qualitativ schon veraltet sind, und im nächster (möglichst kurzer Zeit) aktualisiert und die Daten somit überschrieben werden würden.Den Satz musste ich einfach nochmal zitieren, denn genau das ist bei Spielen nämlich meist der Fall. Die meisten der verschickten Pakete will man ja tatsächlich an alle Clients oder den Server schicken, sodass auch garantiert ist, dass sie ankommen und das meist auch noch in der richtigen Reihenfolge. Sonst landet man in Out of Synch oder der Spieler fühlt sich laggy.
simbad
unregistriert
Werbeanzeige