UDP vs. TCP

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

.Yukito.

Betreff: UDP vs. TCP

BeitragDi, Jun 01, 2004 12:19
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich hab mich damit noch nicht recht beschäftigt und wollte mal fragen:
UDP => Internet?
TCP => Netzwerk?
also wofür man es vorzugsweise nehmen sollte...

und bei UDP hatte ich so ein kleines problem.
in der blitzbase hilfe steht, das wenn man bei sendudpmsg den port nicht angibt, wird der standard port, den man in CreateUDPStream verwendet hat, verwendet.

seltsamerweise funzt es nur, wenn ich ihn angebe... Sad
AMD 2000+, 512MB DDR, ATI Radeon 9000, 80 GB HDD, DX9.0, C4D 8.0, Adobe Photoshop 7.0

eizdealer

BeitragDi, Jun 01, 2004 12:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Falsches Forum Smile

Ich hab mich zwar selber noch nicht mit Netzwerkcode beschäftigt, aber ich habe gehört, dass das Blitz TCP ur langsam sein soll (wegen irgend so einem Anitpackageverliermechanismus). Wie wärs, wenn du einfach mal beides ausprobierst und das Ergebnis nochmal postest? Also von der Geschwindigkeit und von der Einfachheit.

Übrigens gilt das UDP = Internet / TCP = Netzwerk nicht. UDP und TCP sind Protokolle und nicht Hardwaregebunden (jedenfalls nicht so Razz). Also kannste beides mit beidem verwenden.

DC

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragDi, Jun 01, 2004 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe beides ausprobiert und denke behaupten zu können, dass UDP für "schnelle" Spiele die erste Wahl sein sollte. Grund: Die von Eizdealer erwähnte Routine die dafür sorgt, dass die Nachrichten ankommen. Die alleine wäre halb so schlimm, allerdings kommt in Blitz Basic ein Aspekt hinzu, der TCP für schnelle Spiele praktisch unbrauchbar macht: Blitz Basic hält beim Versenden von TCP Nachrichten komplett an, bis vom Empfänger die Antwort kommt. Das führt unweigerlich zu Rucklern. DirectPlay scheint das ganze auch zu verwenden (zumindest bei als wichtig deklarierten Nachrichten) was auch dort für Ruckler sorgt.

Ich hab bei CS2D ja mal TCP probiert da bei UDP nicht alles ankommt - hat bei mehreren Spielern ordentlich geruckelt - bei 2 gings aber noch.

Der beste Weg für schnelle Multiplayer Games wie z.B. Shooter, ist dann wohl UDP mit eigenen Routinen die es einem ermöglichen Nachrichten so zu senden, dass sie wirklich ankommen. BlitzPlay hat sowas glaub ich. Mit Types lässt es sich aber auch relativ einfach realisieren.
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com |
www.CarnageContest.com | www.Stranded3.com
 

furbolg

BeitragDi, Jun 01, 2004 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
DC hat Folgendes geschrieben:
Ich habe beides ausprobiert und denke behaupten zu können, dass UDP für "schnelle" Spiele die erste Wahl sein sollte. Grund: Die von Eizdealer erwähnte Routine die dafür sorgt, dass die Nachrichten ankommen. Die alleine wäre halb so schlimm, allerdings kommt in Blitz Basic ein Aspekt hinzu, der TCP für schnelle Spiele praktisch unbrauchbar macht: Blitz Basic hält beim Versenden von TCP Nachrichten komplett an, bis vom Empfänger die Antwort kommt. Das führt unweigerlich zu Rucklern. DirectPlay scheint das ganze auch zu verwenden (zumindest bei als wichtig deklarierten Nachrichten) was auch dort für Ruckler sorgt.

Ich hab bei CS2D ja mal TCP probiert da bei UDP nicht alles ankommt - hat bei mehreren Spielern ordentlich geruckelt - bei 2 gings aber noch.

Der beste Weg für schnelle Multiplayer Games wie z.B. Shooter, ist dann wohl UDP mit eigenen Routinen die es einem ermöglichen Nachrichten so zu senden, dass sie wirklich ankommen. BlitzPlay hat sowas glaub ich. Mit Types lässt es sich aber auch relativ einfach realisieren.


Das kommt nicht von Blitz Basic sondern direkt von Winsock, unter C/C++ gibts die möglichkeit das ganze mit select zu machen. Is fast so schnell wie UPD und so sicher wie TCP IP, nur das warten wird anders gelöst (interner thread oder sowas).

Bei Blitz wird ich für Ego und alles was schnell sein Muss UPD nehmen, für Strategie lieber TCP IP, da dort die einzelnen Messages wichtig sind. (wenn man wenig senden will gibts da paar kniffe, stichwort bit shifting, huffman etc).
 

kstadler

BeitragDi, Jun 01, 2004 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
furbolg hat Folgendes geschrieben:

Bei Blitz wird ich für Ego und alles was schnell sein Muss UPD nehmen, für Strategie lieber TCP IP, da dort die einzelnen Messages wichtig sind. (wenn man wenig senden will gibts da paar kniffe, stichwort bit shifting, huffman etc).


Ich stimme dem voll und ganz zu. Ich hoffe mit UPD meinst du udp.

Wenn's jemanden interessiert. TCP und UDP sind beides Transportprotokolle des TCP/IP Schichtenmodel. TCP ist verbindungsorientiert, d.H. es gibt einen Verbindungsauf/abbau und fehlende Pakete werden erneut angefordert. UDP dagegen ist verbindungslos, man muss also auf einer höheren Schicht kontrollieren, ob alle Pakete angekommen sind. Weiter ist der Header von udp sehr Schlank, produziert also wenig Overhead. Dies ist der Grund das FPS Engines wie QUAKE z.B. udp benutzen.

Ich hoffe das hilft bei der Entscheidung etwas weiter.
 

.Yukito.

BeitragDi, Jun 01, 2004 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
hab mich für UDP entschieden ^^
thx
AMD 2000+, 512MB DDR, ATI Radeon 9000, 80 GB HDD, DX9.0, C4D 8.0, Adobe Photoshop 7.0

Peer

BeitragSa, Jun 05, 2004 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab schon mehrere Netztwerk/Internetspiele geschrieben und arbeite gerade auch an einen.

Vorteil TCP: Die Pakete kommen immer und in der reihenfolge an wie du sie abgeschickt hast

Nachteil TCP: Langsamer als UDP

Vorteil UDP: Schnell(sehr schnell)

Nachteil UDP: FIREWALLS!!! Die meisten Firewalls haben probleme mit UDP da es ein verbindungsloses Protokoll ist.

Also wenn ihr ein Actionbasiertes Spiel proggt werdet ihr fast nicht um UDP herumkommen. Sobald es aber in Richtung Strategie oder Rundenbasiert geht würde ich nur TCP verwenden.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group