TCP vs UDP

Started by
4 comments, last by cerberus 24 years, 8 months ago
Well i do have a few ideas on that question.
Generally tcp is to slow to use on alot of games(e.g real time stratagy,FPS,and a few others) Now where tcp is used is like on starcraft transfering the map to another player. Also you can get away with it in turned based games and probally most rpg's (not sure on that thue). Anyways i belive in a mix of the two. Use tcp for msg's that you cant afford to be loss or maybe for setup data/maps ect. Use upd for the guts of the networking code. But like i said this depends on the game. Hope that helps.
Advertisement
We use TCP for our game, Artifact. It's a multi-player, online-only, real-time strategy game.

We don't use UDP at all currently. We may start using it to handle game chatter (where order of arrival is nearly irrelevant) some day, but so far TCP has worked quite well for us.

Despite what you read, it's not a "cut-and-dried" question. It may have been at some point, but I have no idea when that was. We've been using TCP exclusively for 3 years without significant issues.

Whether you use TCP or UDP, it's up to you to optimize your use of the connection bandwidth. The protocol will impact your lag far less than you do.

------------------
DavidRM
Samu Games
http://www.samugames.com

I read somewhere that Qtest (precursor to Quake) used TCP, but Carmack and Co. deemed it too slow and switched to a UDP model. I wrote UDP code for a multiplayer space arcade-type game, and had all sorts of problems with dropped packets, i.e. my local client would fire a torpedo, but the peers wouldn't see it, etc. For my upcoming project, I'll probably use TCP or a mix of TCP and UDP...though the latter might be too complex...sockets programming can be confusing enough with ONE type of socket =)

Thanks for the replies, btw...great forum, great website.

So long as you dont use Direct Play you should be okay

Seriously, I'd consider utilising a mixture of the two, UDP for the majority of the traffic, and TCP for those has to get there in one piece type messages (players chat for a start, not so time critical but it shouldn't be garbled).

With proper design at the start, your game should be playable even with a large amount of packet loss and definately responsive...

Point to note, if you are using UDP make sure not to transmit individual messages larger than 500 (cant remember exact size) bytes otherwise they WILL get fragmented. Make small messages stand alone.

There's probably a simpler, more elegant way of doing it but hell this is London
Any thoughts on which protocols work best for different types of games?
UDP is the most probable choice in most games. In all recent FPS, it's UDP only. In StarCraft, it's only UDP during the game, but if you go on battle.net, you'll have TCP becos TCP is better for chating and stuff. I havent seen a recent game use in game TCP, so I would say UDP is best, is more universal. TCP might be good for a very specific type of game, say, a slow, non realtime type of thing.

This topic is closed to new replies.

Advertisement