Bartosz Fenski aka fEnIo wrote: >severity 311307 wishlist >thanks > >On Mon, May 30, 2005 at 05:34:27PM -0500, Adam Majer wrote: > > >>This is supposedly an "action" game and yet it uses TCP connections. >>Games should use UDP connections *always*. TCP is unreliable (in games) and >>undesirable protocol to use. TCP is for streaming data, like files, >>audio, movies, etc.. >> >>The only disadvantage of UDP over TCP in games is that it is more >>difficult to write an engine around UDP since packet order must be >>maintained in the engine. I don't think that is an excuse! >> >>- Adam >> >>PS. Important because it makes the entire game experience worse. For >>other examples of games where TCP "wrecked it" see xshipwars. >> >> > >Hello Adam. > >Did you play netpanzer at all? I played it many times even with 20 players >on map and there were NOT any problems with speed. > > Yes. There is no problem with speed. But at least once, in a game where there were over 500+ units, things slowed down (response wise) to a crawl until the game crashed due to a "pipe broken".
>Here are some quotes from my talk with upstream maintainer: > > It is not a problem with the speed, it is a problem with the actual connection. Many times there is some crap about "pipe broken" and connection going down. This would never happen with UDP because there is no "connection" in the first place. If you get a "pipe broken" error, then you can ignore it. UDP will *not* save bandwidth. Implementing retransmission of packets is not right either since that is what TCP does is what contributes to lag (not a big deal in this type of game). Most games will use UDP packets to send unit's states. The only other thing that needs to be added is some sort of a timestamp to these states such that when you send packets 1,2,3,4,5 and they arrive in 1,4,2,3,5 order then you ignore 2 and 3. Also, with UDP you can gauge how many units you can have per game for what connection speed. You can't do that with TCP due to the extra overhead (any retransmissions => huge backlogs especially for high latency connections) Anyway, TCP is to be used for streaming data that must arrive at destination reliably. UDP is for time sensitive data, that when lost or mangled will be lost forever (ie. if you can't transmit, you might as well not transmit at all - stale data is no good). That is why this is a design error - using the wrong protocol for the task. >So as you can see there won't be probably rewrite of net code. >Submitting it with severity "important" doesn't seem for me as reasonable >either so I've just decreased it to wishlist. > > How about #294213? I think it might be related to the use of TCP. When I get "pipe broken" message, there are usually a lot of units on the field. Especially if you want to move a lot of them at once. After the exit the connection state in some sort of a WAIT state. Many times reconnecting puts you right back in the game meaning that the server did not crash (sometimes it did appear it crashed though). - Adam -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

