]> git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
added back cl_netsyncboundmode 5 (4 with sub-millisecond adjustment when
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Fri, 11 May 2007 01:17:24 +0000 (01:17 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Fri, 11 May 2007 01:17:24 +0000 (01:17 +0000)
very near the correct value)
added new default cl_nettimesyncboundmode 6, this is a hybrid of 1 and 5

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

cl_parse.c

index 44c7a517c5adb55645d82673e64a451b43e0d702..a4fa59a3f66f005894c0a0d7d5a4235a1d59f95c 100644 (file)
@@ -172,7 +172,7 @@ cvar_t cl_sound_r_exp3 = {0, "cl_sound_r_exp3", "weapons/r_exp3.wav", "sound to
 cvar_t cl_serverextension_download = {0, "cl_serverextension_download", "0", "indicates whether the server supports the download command"};
 cvar_t cl_joinbeforedownloadsfinish = {CVAR_SAVE, "cl_joinbeforedownloadsfinish", "1", "if non-zero the game will begin after the map is loaded before other downloads finish"};
 cvar_t cl_nettimesyncfactor = {CVAR_SAVE, "cl_nettimesyncfactor", "0", "rate at which client time adapts to match server time, 1 = instantly, 0.125 = slowly, 0 = not at all (bounding still applies)"};
-cvar_t cl_nettimesyncboundmode = {CVAR_SAVE, "cl_nettimesyncboundmode", "4", "method of restricting client time to valid values, 0 = no correction, 1 = tight bounding (jerky with packet loss), 2 = loose bounding (corrects it if out of bounds), 3 = leniant bounding (ignores temporary errors due to varying framerate), 4 = slow adjustment method from Quake3"};
+cvar_t cl_nettimesyncboundmode = {CVAR_SAVE, "cl_nettimesyncboundmode", "6", "method of restricting client time to valid values, 0 = no correction, 1 = tight bounding (jerky with packet loss), 2 = loose bounding (corrects it if out of bounds), 3 = leniant bounding (ignores temporary errors due to varying framerate), 4 = slow adjustment method from Quake3, 5 = slighttly nicer version of Quake3 method, 6 = bounding + Quake3"};
 cvar_t cl_nettimesyncboundtolerance = {CVAR_SAVE, "cl_nettimesyncboundtolerance", "0.25", "how much error is tolerated by bounding check, as a fraction of frametime, 0.25 = up to 25% margin of error tolerated, 1 = use only new time, 0 = use only old time (same effect as setting cl_nettimesyncfactor to 1)"};
 cvar_t cl_iplog_name = {CVAR_SAVE, "cl_iplog_name", "darkplaces_iplog.txt", "name of iplog file containing player addresses for iplog_list command and automatic ip logging when parsing status command"};
 
@@ -2871,6 +2871,20 @@ static void CL_NetworkTimeReceived(double newtime)
                        else
                                cl.time += 0.001 * cl.movevars_timescale; // creep forward 1ms
                }
+               else if (cl_nettimesyncboundmode.integer == 5)
+               {
+                       if (fabs(cl.time - cl.mtime[1]) > 0.5)
+                               cl.time = cl.mtime[1]; // reset
+                       else if (fabs(cl.time - cl.mtime[1]) > 0.1)
+                               cl.time += 0.5 * (cl.mtime[1] - cl.time); // fast
+                       else
+                               cl.time = bound(cl.time - 0.002 * cl.movevars_timescale, cl.mtime[1], cl.time + 0.001 * cl.movevars_timescale);
+               }
+               else if (cl_nettimesyncboundmode.integer == 6)
+               {
+                       cl.time = bound(cl.mtime[1], cl.time, cl.mtime[0]);
+                       cl.time = bound(cl.time - 0.002 * cl.movevars_timescale, cl.mtime[1], cl.time + 0.001 * cl.movevars_timescale);
+               }
        }
        // this packet probably contains a player entity update, so we will need
        // to update the prediction