About a year and a half ago, before I got my current job, I had been applying around the industry. While I don’t usually do so, I went through a recruiter and indirectly spoke to Flagship Studios. After they looked at my network library, the recruiter called back and said they didn’t want me because I had UDP experience instead of TCP experience. They wanted to use TCP for their game because WoW does so, and the founders originally came from Blizzard.

If you are familiar with game network programming, you are probably thinking how strange that is. It’s like saying you don’t want someone to drive your automatic because they usually drive a manual. If I wanted change RakNet to use TCP there wouldn’t be much more to it than changing SOCK_DGRAM to SOCK_STREAM, disabling the nagle algorithm, and bypassing my reliable communications layer. Of course RakNet would then suck, losing efficiency, speed, and some features but my point isn’t that but that there’s little substantial programmatical difference between the two THAT I KNOW OF.

And that’s the key point, one I’ve been wondering for a year and a half about. Is the guy who spoke to the recruiter a genius or an idiot?

Idiot:
This guy wrote a UDP network library and we want TCP experience.

Genius:
There are many complex lessons from TCP game programming that only come from experience, and only he and a select few (excluding myself) know what they are.

An idiot would think there is some huge difference when there isn’t one while a genius would know of some huge difference that nobody else does.

I can’t figure it out. What do you think?

Average Rating: 4.7 out of 5 based on 290 user reviews.

6 Responses to “”

  1. Catid says:

    I’ve always wondered why such a great game used TCP.

  2. Rak'kar says:

    What I read at the time (this may be out of date) is that they partnered with AT&T to open data hubs around the country. My theory is that since you have a data hub near wherever you live, your pings will be low enough that you get very fast acks to your packets, meaning your data send buffer will be usually empty and you get very high performance.

  3. romulo says:

    great post and i agree with you…when i started at networking programming i started with tcp and i can say, it sux it sux hard…..i agree with your point and some things like that happens even with me..i wasnt hired because i code more with C++ isntead of C….thats ridiculous.

  4. the_viking says:

    That’s really awkward… They seem to “save work” by using TCP instead of UDP and miss the improved performance when using raw UDP for some stuff. But in my ideal thoughts I’m liking the approach to use both TCP and UDP, because with TCP you can send easily reliable messages and detect broken links, and with UDP you get all the speed for unreliable stuff.
    But people who are saying “You made UDP usage reliable, but we want someone who uses TCP” makes me really angry… I don’t see 1) the point why someone who can handle UDP couldn’t use TCP, too and 2) why they think that just the TCP usages makes WoW such a good game. Maybe it would be greater with UDP, but no one knows 🙂

  5. Shawn says:

    Yep, I think UDP is the way to go.

    did you write back a email saying why you think that peson is a dumb….

  6. imays says:

    Does Flagship studios use WoW engine? I know they are making an action game where two heroes swing a big sword and pour tons of machinegun bullets to zombies… -_-;;

Leave a Reply