From: <Cir...@cs...> - 2005-04-02 22:10:56
|
Well, about that essay: 1) Nothing in it is applicable to Once due to its current design, = except possibly for the 200 UDP connections - but 200 UDP or 200 TCP - = what's the difference? TCP behaves badly when you have long lags (5s = or more on round trip) - admittedly you wouldn't play under those = conditions... 2) The discussion on UDP vs TCP doesn't make any sense at all. I have = used sockets a fair bit over the years (although I never made much use = of UDP until now - normally I only use it to broadcast messages to = discover services like DHCP etc) so I had to learn quick about this = 'reliable UDP' stuff and ask all sorts of questions - and one great = thing about UDP is that a lot of data sent can be lost and we don't care = - for them we use unreliable packets (normal UDP) and if they're lost - = so what. TCP would guarantee that they are sent, so network glitches = can cause some situations which are much more annoying with TCP than = UDP. In RakNet, we send all unreliable packets as 'ordered' - if the = packet is an unreliable type and comes after an unreliable packet which = was sent later, the packet is dropped - our server never knows about it = and doesn't have to handle it, which is the correct behavior. In TCP = time is wasted guaranteeing the retransmission and order of that packet = even though the packet is not very important. =20 As for gaining levels by sending a message multiple times - that is = only possible through incredibly bad game design and as easy to do with = TCP as with UDP - the network is really not an issue in that case. As = for 'real-time', that is only an illusion. There is lag and we can't = beat that (in fact there have been some bad days with PS where the lag = is really annoying). Effects need to be created in such a way that = even if people move a little etc, you get the impression that the target = was hit; equally important you want it to look like the target was = missed if in fact you missed it. You don't want a player screaming "I = saw my arrow hit him but I got the message 'you missed' !" You also = want to avoid the situation where you killed your opponent and suddenly = you see a spell that he cast hit you. Most of the illusion (especially = with spells) is created by building a lag into your actions. For = example, you begin to draw your bow - it's annying that you don't fire = instantaneously because it gives the enemy a chance to move - just like = in the 'real' world. Because you know that, you're annoyed but not angry = when you see the arrow miss, and you're very happy if you see it hit.=20 I won't say anymore about network stuff - we have decided on our new = net library and it works well. You can read articles on = www.gamasutra.com if you want to know what the commercial game = developers have to say on the TCP vs UDP topic. |