diff --git a/src/cvars.cpp b/src/cvars.cpp index 39593fd89..9d53d533b 100644 --- a/src/cvars.cpp +++ b/src/cvars.cpp @@ -829,6 +829,7 @@ void ForceSkin_OnChange(void); consvar_t cv_forceskin = OnlineCheat("forcecharacter", "None").onchange(ForceSkin_OnChange).description("Force all players to use one character"); consvar_t cv_fuzz = OnlineCheat("fuzz", "Off").on_off().description("Human players spam random inputs, get random items"); +consvar_t cv_skiprender = OnlineCheat("skiprender", "1").values(CV_Natural).description("Only render every X frames"); consvar_t cv_kartdebugamount = OnlineCheat("debugitemamount", "1").min_max(1, 255).description("If debugitem, give multiple copies of an item"); consvar_t cv_kartdebugbots = OnlineCheat("debugbots", "Off").on_off().description("Bot AI debugger"); diff --git a/src/d_main.cpp b/src/d_main.cpp index 973434738..d5ddcafcf 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -1106,6 +1106,8 @@ void D_SRB2Loop(void) deltasecs = (double)((INT64)(finishprecise - enterprecise)) / I_GetPrecisePrecision(); deltatics = deltasecs * NEWTICRATE; + extern consvar_t cv_skiprender; + // If time spent this game loop exceeds a single tic, // it's probably because of rendering. // @@ -1123,6 +1125,13 @@ void D_SRB2Loop(void) else frameskip = 0; } + else if (cv_skiprender.value > 1) + { + if (frameskip < cv_skiprender.value) + frameskip++; + else + frameskip = 0; + } else { if (!ranwipe && frameskip < 3 && deltatics > 1.0)