diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 10d484b16ee9ad436fd97a4221da09bf0dd48eb6..875a308de1bed52ca76eef478d87938671491b78 100755 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -5262,8 +5262,9 @@ void TryRunTics(tic_t realtics, tic_t entertic) } // The network/game is laggy, let's simulate one tic further and use previous controls + // hopefully the server won't miss our input else - if (canSimulate && !cl_redownloadinggamestate) + if (canSimulate && !cl_redownloadinggamestate && cv_simmisstics.value == 1) { // collect net condition data based on encoded tics, it's needed for calculating correct netcmds DetermineNetConditions(); @@ -5388,6 +5389,8 @@ int DetermineSimulationAmount() float numSimsMedian = netplus_median(MAXSIMULATIONS-1, numToSimulateHistorySorted); if (numSimsMedian <= 1) return 1; + if (numSimsMedian > numDesiredSimulateTics) + return numDesiredSimulateTics; return (int)numSimsMedian; } diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 76d145b7cff598bf51f6f430a3c8835f098c2850..b5e2c9d6f71cdf1f57dc6daef28fb1d346843bad 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -383,6 +383,8 @@ consvar_t cv_playerfullbright = { "playerfullbright", "Yes", 0, CV_YesNo, NULL, static CV_PossibleValue_t simulateTics_cons_t[] = { {0, "MIN"}, {MAXSIMULATIONS - 1, "MAX"}, {0, NULL} }; consvar_t cv_simulatetics = { "simtics", "MAX", 0, simulateTics_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL }; +consvar_t cv_simmisstics = { "simmisstics", "Yes", 0, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL }; + static CV_PossibleValue_t simulateculldistance_cons_t[] = { {0, "MIN"}, {10000, "MAX"}, {0, NULL} }; consvar_t cv_simulateculldistance = { "simcull", "MIN", 0, simulateculldistance_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL }; @@ -552,6 +554,7 @@ void D_RegisterServerCommands(void) CV_RegisterVar(&cv_simulate); CV_RegisterVar(&cv_simulatetics); + CV_RegisterVar(&cv_simmisstics); CV_RegisterVar(&cv_simulateculldistance); CV_RegisterVar(&cv_siminaccuracy); CV_RegisterVar(&cv_netdelay); diff --git a/src/d_netcmd.h b/src/d_netcmd.h index 7a35791c7d1940b4deac8afd7c7ab5e099f44ce3..0465fdbbf11749cd74fa9060cafdc6992937cc55 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -109,6 +109,7 @@ extern consvar_t cv_showping; extern consvar_t cv_simulate; extern consvar_t cv_simulatetics; +extern consvar_t cv_simmisstics; extern consvar_t cv_simulateculldistance; extern consvar_t cv_siminaccuracy; extern consvar_t cv_netdelay; diff --git a/src/m_menu.c b/src/m_menu.c index 20a18d3a76d89d52f5b49ab4f4c6e1d949433870..bce6cc82a76abc070013cbe94a4ee5f65c43b457 100755 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -1698,7 +1698,9 @@ static menuitem_t OP_NetPlusOptionsMenu[] = {IT_CVAR | IT_STRING, NULL, "Player jitter reduction tics", &cv_netsteadyplayers, 16}, //simsteadyplayers {IT_CVAR | IT_STRING, NULL, "Turn off ring toss prediction", &cv_netslingdelay, 21}, //simslingdelay {IT_CVAR | IT_STRING, NULL, "Objects prediction distance", &cv_simulateculldistance, 26}, //simcull - {IT_CVAR | IT_STRING, NULL, "Prediction inaccuracy (beta)", &cv_siminaccuracy, 31}, //siminaccuracy + // {IT_CVAR | IT_STRING, NULL, "Prediction inaccuracy (beta)", &cv_siminaccuracy, 31}, //siminaccuracy + {IT_CVAR | IT_STRING, NULL, "Predict missed tics", &cv_simmisstics, 31}, //siminaccuracy + // simmisstics {IT_HEADER, NULL, "Visuals", NULL, 41}, {IT_CVAR | IT_STRING, NULL, "Player trail lifetime", &cv_nettrails, 46}, //simtrails