Jump to content

  • Log In with Google      Sign In   
  • Create Account

Dave Weinstein

Member Since 08 Mar 2006
Offline Last Active Dec 14 2014 01:21 AM

Posts I've Made

In Topic: best way to send an receive multivarible data by socket

13 December 2014 - 09:45 AM

Is there a reason you want to use text for transmission?

In Topic: How2Ensure UDP-Packets reach target (high performance)?

11 December 2014 - 09:49 PM

I should note that the R6/RS model was opposite of what was proposed. Almost everything went over the reliable channel, the only thing that went over the unreliable channel were movement updates for entities that were "near" the recipient.

In Topic: How2Ensure UDP-Packets reach target (high performance)?

11 December 2014 - 09:32 PM

The dual-connection option doesn't work that well for NAT punch-through scenarios.

Absolutely true.

Another problem with TCP used to be that it would send large packets, which would cause significant jitter for other traffic (such as the UDP stream.) As links get faster, that effect lessens. (It was a non-starter on dial-up...)

Actually, it worked really well on dial-up, because TCP supports header compression, and UDP does not. And dial-up was very much of a bandwidth last-mile issue. Also the moment you actually have ordered-reliable transmission, you might as well take advantage of it for delta compression.

The model of an ordered-reliable TCP channel and an unreliable UDP channel was exactly the model used in Rainbow Six and Rogue Spear. It was dropped later in favor of a purely UDP model (including both ordered reliable and unreliable logical channels) specifically because, as you noted earlier, you cannot punch through NAT with TCP.

In Topic: IOCP critical section design problem

28 November 2014 - 11:03 PM

Threading is one of the hardest things to do well in programming. Period.


Locks are both prone to hard but complex failures (deadlocks) on the one hand, and extreme performance hits on the other (limited number of locks to prevent deadlocks).


I'm personally fond of option 3 (above) in the case of network code, for a couple of reasons. First, you are spending as little time in the lock as possible, so you might be able to get away with a single "I am about to create a message" lock. Second, you have a single inter-thread communications system. The first one makes it less likely you will have programmer error, and the second gives you a single high-risk component to test the everliving-hell out of.

In Topic: Entering the industry at over age 30

27 November 2014 - 09:31 AM

People tend to end up as "Senior" in the game industry relatively rapidly, in significant part because the industry *bleeds* experienced talent because of work/life balance and quality of life issues.