]> git.rm.cloudns.org Git - xonotic/darkplaces.git/commitdiff
For some reason, cl_netinputpacketsperserverpacket > 1 causes choppiness when cl_move...
authordivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Sun, 20 Jan 2008 19:45:25 +0000 (19:45 +0000)
committerdivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Sun, 20 Jan 2008 19:45:25 +0000 (19:45 +0000)
As workaround, disable the "replying to server frames" code for cl_netinputpacketsperserverpacket > 1, and make it ONLY respond to server frames (or after 0.1s when no server frame came) when set to 0. 0 MAY be a bit more smooth than 1, but something tells me it is LESS smooth when packet loss is involved.

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7985 d7cf8633-e32d-0410-b094-e92efae38249

cl_input.c

index da986f25e7d62745ae5ebd884dd75ac57743f2d4..06144935450dbf05ef87b64d34443b9a560cf6d4 100644 (file)
@@ -1389,8 +1389,28 @@ void CL_SendMove(void)
        {
                // movement should be sent immediately whenever a server
                // packet is received, to minimize ping times
-               if (!cl.movement_needupdate && realtime < lastsendtime + packettime)
-                       return;
+               //
+
+               if(cl_netinputpacketsperserverpacket.value > 1)
+               {
+                       // FIXME: needupdate causes odd behaviour with movement reply as it
+                       // seems, if cl_netinputpacketsperserverpackets is > 1. Don't know
+                       // why. No idea if it ever gets fixed, but until it does...
+                       if (realtime < lastsendtime + packettime)
+                               return;
+               }
+               else if(cl_netinputpacketsperserverpacket.value == 1)
+               {
+                       // the way it is meant to be
+                       if (!cl.movement_needupdate && realtime < lastsendtime + packettime)
+                               return;
+               }
+               else
+               {
+                       // only ever send input as replies to server packets or if we REALLY got nothing else (FIXME may be the more sane default)
+                       if (!cl.movement_needupdate && realtime < lastsendtime + packettime + 0.1)
+                               return;
+               }
        }
 
        // don't let it fall behind if CL_SendMove hasn't been called recently