Dan look over this.... http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
Then give a rethink of some of what you said.... ----- Original Message ----- From: "Dan Sorenson" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Thursday, July 14, 2005 1:06 AM Subject: [hlds_linux] Re: Request a higher minimum value for cl_cmdrate. > At 12:36 AM 7/13/2005 -0700, Eric said to all and sundry: >>>>Thousands of times, theoretically, when you consider >>>>holding the mouse button down is sending the signal that >>>>you're doing so... >>> >>> and that still only makes your weapon discharge a single >>> round >> >>...if you're firing a semi-auto weapon, I guess. > > I doubt any of that is actually transmitted to the > server. Alfred probably can't disclose much, but typically > the mouse-click is handled client-side and the action performed > is sent to the server, which responds with a result. Thus, > typical netcode will have the client report to the server > "I'm at position X.Y.Z and pointed to position A.B.C, action > is automatic fire from Super Soaker." The server takes that > information, determines if this action has a result on another > client, then informs all clients of your new location and > specific clients of the effects of your action. We're all > familiar with seeming to die at the same time a player > rounds a corner and fires, though human reaction times are > nowhere near that fast. In fact, the scene was probably played > out in the server a half-second prior, and your client is just now > getting both the "Client 1 moved to position X.Y.Z and is facing towards > A.B.C" message to generate his form and the "client 1 hit you > with eighteen gazillion damage" message that tells you to die > at about the same time. > > It would be possible for the netcode to only send updates > about client position to relevant clients, so when Client 1 moves > to a position only those with line-of-sight to that location are > updated. However, this would necessarially increase the processing > required on the server and may actually introduce more latency. > It would also eliminate wallhacks and ESP, since there's nothing > coming in for them to work with, but that could require an entire > engine overhaul and coupled with server demands there's probably > a reason it was written the way it is. > > So, in theory a server is going to be sending a bit > more data than it takes in, since it's taking in only position > and action while sending out that same info to all clients as > well as results of actions. Naturally, this is going to take > a bit of buffering in the engine to handle the wide range of > update rates that players are connected at. If I have a ping of > 200 (not uncommon given my method of connecting to the internet) > and you have a ping of 100, that's 300ms worth of player movement > and action that needs to be buffered. Let's say a half-second is > what's in buffer that the server acts upon. Let's also assume that > a cl_cmdrate of 10 means 10 updates per second to the server. > > So with a cl_cmdrate of 20, if I fire one round at > time 0.0s the server only knows that action happened between > t0.0 and t0.05, when it gets the next update. If I set my > cl_cmdrate to 10, the server only knows it happened between > t0.0 and t0.10. Suddenly I'm firing for twice as long a period. > Now the server has to figure I fired during that 10th of a second, > checks the location of you my target, and if you were within the hit > cone during that 10th of a second has to record a hit. So, by setting > my cl_cmdrate to the lowest setting single-shot weapons would > suddenly be more effective because the time they're on-target > is a 10th of a second rather than a 20th or a 30th. > > Note: all this is speculation on my part. > > So, rather than increase the cl_cmdrate minimum, what > I'd suggest is to base both cl_cmdrate and cl_updaterate off of > the old rate variable, and just make them a ratio of what the > server needs vs what it has to send. So if the server has a > maxrate of 10000, and a minrate of 5000, when client 1 connects > with rate 5000 he gets cl_cmdrate 20 and cl_updaterate 30. > When he connects with rate 10000 he gets cl_cmdrate 40 and > cl_updaterate 60, just to use an example. > > If we base the up and down rates as portions of the > overall rate, it should be easier for the engine to handle. > The caveat is DSL is asymetrical, so people with a 3M download > speed and a 48K upload speed might have a problem, but overall > I think it would even out a lot of the differences between > the broadband and the dial-up users. > > -- Dan > > * Dan Sorenson DoD #1066 A.H.M.C. #35 [EMAIL PROTECTED] * > * Vikings? There ain't no vikings here. Just us honest farmers. * > * The town was burning, the villagers were dead. They didn't need * > * those sheep anyway. That's our story and we're sticking to it. * > > > _______________________________________________ > To unsubscribe, edit your list preferences, or view the list archives, > please visit: > http://list.valvesoftware.com/mailman/listinfo/hlds_linux > _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlds_linux

