diff --git a/src/command.c b/src/command.c
index ff95761c3df38a2c44951c5e120a0990b85e0649..f8107e0d7a72633f98a29c2d91ff580f85968db8 100644
--- a/src/command.c
+++ b/src/command.c
@@ -2490,22 +2490,6 @@ static boolean CV_FilterVarByVersion(consvar_t *v, const char *valstr)
 		if (!CV_FilterJoyAxisVars(v, valstr))
 			return false;
 	}
-
-	if (GETMAJOREXECVERSION(cv_execversion.value) < 57) // 57 = 2.2.16
-	{
-		if (
-			(!stricmp(v->name, "movebob") && atoi(valstr) == FRACUNIT) ||
-			(!stricmp(v->name, "playersforexit") && atoi(valstr) == 4) || // 4 = all
-			(!stricmp(v->name, "advancemap") && atoi(valstr) == 1) || // 1 = next
-			(!stricmp(v->name, "cam_speed") && !stricmp(valstr, "0.3")) ||
-			(!stricmp(v->name, "cam2_speed") && !stricmp(valstr, "0.3")) ||
-			(!stricmp(v->name, "timerres") && atoi(valstr) == 0) || // 0 = classic
-			(!stricmp(v->name, "gr_modelinterpolation")) || // Force reset
-			(!stricmp(v->name, "fov") && atoi(valstr) == 90)
-		)
-			return false;
-	}
-
 	return true;
 }
 
diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c
index 708b3cdf4459941b5f48425d712d592e96378ae7..fcce882c44e5cdbed918ee6264a8da96ef1c89a6 100644
--- a/src/hardware/hw_main.c
+++ b/src/hardware/hw_main.c
@@ -5738,6 +5738,7 @@ void HWR_LoadLevel(void)
 // ==========================================================================
 
 static CV_PossibleValue_t glshaders_cons_t[] = {{0, "Off"}, {1, "On"}, {2, "Ignore custom shaders"}, {0, NULL}};
+static CV_PossibleValue_t glmodelinterpolation_cons_t[] = {{0, "Off"}, {1, "Sometimes"}, {2, "Always"}, {0, NULL}};
 static CV_PossibleValue_t glfakecontrast_cons_t[] = {{0, "Off"}, {1, "On"}, {2, "Smooth"}, {0, NULL}};
 static CV_PossibleValue_t glshearing_cons_t[] = {{0, "Off"}, {1, "On"}, {2, "Third-person"}, {0, NULL}};
 
@@ -5769,7 +5770,7 @@ consvar_t cv_glcoronasize = CVAR_INIT ("gr_coronasize", "1", NULL, CV_SAVE|CV_FL
 #endif
 
 consvar_t cv_glmodels = CVAR_INIT ("gr_models", "Off", "If on, will use 3D models instead of sprites if available", CV_SAVE, CV_OnOff, NULL);
-consvar_t cv_glmodelinterpolation = CVAR_INIT ("gr_modelinterpolation", "On", "If on, 3D models will interpolate on between frames", CV_SAVE, CV_OnOff, NULL);
+consvar_t cv_glmodelinterpolation = CVAR_INIT ("gr_modelinterpolation", "Sometimes", "If on, 3D models will interpolate on between frames", CV_SAVE, glmodelinterpolation_cons_t, NULL);
 consvar_t cv_glmodellighting = CVAR_INIT ("gr_modellighting", "Off", "If on, 3d models will have ambient light effects", CV_SAVE|CV_CALL, CV_OnOff, CV_glmodellighting_OnChange);
 
 consvar_t cv_glshearing = CVAR_INIT ("gr_shearing", "Off", "Emulates Software's vertical camera view (requires shaders)", CV_SAVE, glshearing_cons_t, NULL);
diff --git a/src/hardware/hw_md2.c b/src/hardware/hw_md2.c
index 4db362874198f89a96d67f0a48f4c5ac18e19da1..397dcdfba212a7b2c8b2f6e8ba2866052bc63cc7 100644
--- a/src/hardware/hw_md2.c
+++ b/src/hardware/hw_md2.c
@@ -1088,11 +1088,15 @@ static boolean HWR_AllowModel(mobj_t *mobj)
 
 static boolean HWR_CanInterpolateModel(mobj_t *mobj, model_t *model)
 {
+	if (cv_glmodelinterpolation.value == 2) // Always interpolate
+		return true;
 	return model->interpolate[(mobj->frame & FF_FRAMEMASK)];
 }
 
 static boolean HWR_CanInterpolateSprite2(modelspr2frames_t *spr2frame)
 {
+	if (cv_glmodelinterpolation.value == 2) // Always interpolate
+		return true;
 	return spr2frame->interpolate;
 }
 
diff --git a/src/netcode/d_netcmd.c b/src/netcode/d_netcmd.c
index da869084ee654920a02892b4c166286e76298c5a..90ffe81d720778d9cb6deb6b54e4df2528b8a20c 100644
--- a/src/netcode/d_netcmd.c
+++ b/src/netcode/d_netcmd.c
@@ -320,7 +320,7 @@ consvar_t cv_overtime = CVAR_INIT ("overtime", "Yes", NULL, CV_SAVE|CV_NETVAR|CV
 consvar_t cv_rollingdemos = CVAR_INIT ("rollingdemos", "On", NULL, CV_SAVE, CV_OnOff, NULL);
 
 static CV_PossibleValue_t timetic_cons_t[] = {{0, "Classic"}, {1, "Centiseconds"}, {2, "Mania"}, {3, "Tics"}, {0, NULL}};
-consvar_t cv_timetic = CVAR_INIT ("timerres", "Mania", "Style of the score, time, and rings display", CV_SAVE, timetic_cons_t, NULL);
+consvar_t cv_timetic = CVAR_INIT ("timerres", "Classic", "Style of the score, time, and rings display", CV_SAVE, timetic_cons_t, NULL);
 
 static CV_PossibleValue_t powerupdisplay_cons_t[] = {{0, "Never"}, {1, "First-person only"}, {2, "Always"}, {0, NULL}};
 consvar_t cv_powerupdisplay = CVAR_INIT ("powerupdisplay", "First-person only", "When to display remaining duration of power-up items", CV_SAVE, powerupdisplay_cons_t, NULL);
@@ -369,10 +369,10 @@ static CV_PossibleValue_t cooplives_cons_t[] = {{0, "Infinite"}, {1, "Per-player
 consvar_t cv_cooplives = CVAR_INIT ("cooplives", "Avoid Game Over", "How lives behave in co-op", CV_SAVE|CV_NETVAR|CV_CALL|CV_CHEAT|CV_ALLOWLUA, cooplives_cons_t, CoopLives_OnChange);
 
 static CV_PossibleValue_t advancemap_cons_t[] = {{0, "Off"}, {1, "Next"}, {2, "Random"}, {0, NULL}};
-consvar_t cv_advancemap = CVAR_INIT ("advancemap", "Random", NULL, CV_SAVE|CV_NETVAR|CV_ALLOWLUA, advancemap_cons_t, NULL);
+consvar_t cv_advancemap = CVAR_INIT ("advancemap", "Next", NULL, CV_SAVE|CV_NETVAR|CV_ALLOWLUA, advancemap_cons_t, NULL);
 
 static CV_PossibleValue_t playersforexit_cons_t[] = {{0, "One"}, {1, "1/4"}, {2, "Half"}, {3, "3/4"}, {4, "All"}, {0, NULL}};
-consvar_t cv_playersforexit = CVAR_INIT ("playersforexit", "3/4", "The amount of players that have to finish a map in co-op for the map to end", CV_SAVE|CV_NETVAR|CV_ALLOWLUA, playersforexit_cons_t, NULL);
+consvar_t cv_playersforexit = CVAR_INIT ("playersforexit", "All", "The amount of players that have to finish a map in co-op for the map to end", CV_SAVE|CV_NETVAR|CV_ALLOWLUA, playersforexit_cons_t, NULL);
 
 consvar_t cv_exitmove = CVAR_INIT ("exitmove", "On", "If on, players are allowed to move around after finishing a map in co-op", CV_SAVE|CV_NETVAR|CV_CALL|CV_ALLOWLUA, CV_OnOff, ExitMove_OnChange);
 
@@ -4250,9 +4250,9 @@ void D_GameTypeChanged(INT32 lastgametype)
 			case GT_TEAMMATCH:
 				if (!cv_timelimit.changed && !cv_pointlimit.changed) // user hasn't changed limits
 				{
-					// default settings for match: timelimit 7 mins, no pointlimit
+					// default settings for match: timelimit 10 mins, no pointlimit
 					CV_SetValue(&cv_pointlimit, 0);
-					CV_SetValue(&cv_timelimit, 7);
+					CV_SetValue(&cv_timelimit, 10);
 				}
 				if (!cv_itemrespawntime.changed)
 					CV_Set(&cv_itemrespawntime, cv_itemrespawntime.defaultvalue); // respawn normally
@@ -4261,9 +4261,9 @@ void D_GameTypeChanged(INT32 lastgametype)
 			case GT_HIDEANDSEEK:
 				if (!cv_timelimit.changed && !cv_pointlimit.changed) // user hasn't changed limits
 				{
-					// default settings for tag: 7 mins, no pointlimit
+					// default settings for tag: 5 mins, no pointlimit
 					// Note that tag mode also uses an alternate timing mechanism in tandem with timelimit.
-					CV_SetValue(&cv_timelimit, 7);
+					CV_SetValue(&cv_timelimit, 5);
 					CV_SetValue(&cv_pointlimit, 0);
 				}
 				if (!cv_itemrespawntime.changed)
@@ -4272,8 +4272,8 @@ void D_GameTypeChanged(INT32 lastgametype)
 			case GT_CTF:
 				if (!cv_timelimit.changed && !cv_pointlimit.changed) // user hasn't changed limits
 				{
-					// default settings for CTF: 15 mins, pointlimit 5
-					CV_SetValue(&cv_timelimit, 15);
+					// default settings for CTF: no timelimit, pointlimit 5
+					CV_SetValue(&cv_timelimit, 0);
 					CV_SetValue(&cv_pointlimit, 5);
 				}
 				if (!cv_itemrespawntime.changed)
diff --git a/src/p_mobj.c b/src/p_mobj.c
index eaeb830d711d1039a26cac864f2f6ef304f0486a..277338d2bdbdefea2349de9cf1421c1c61e47d5c 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -39,7 +39,7 @@
 #include "netcode/net_command.h"
 
 static CV_PossibleValue_t CV_BobSpeed[] = {{0, "MIN"}, {4*FRACUNIT, "MAX"}, {0, NULL}};
-consvar_t cv_movebob = CVAR_INIT ("movebob", "0.25", "How much to move the camera up and down while moving in first-person", CV_FLOAT|CV_SAVE, CV_BobSpeed, NULL);
+consvar_t cv_movebob = CVAR_INIT ("movebob", "1.0", "How much to move the camera up and down while moving in first-person", CV_FLOAT|CV_SAVE, CV_BobSpeed, NULL);
 
 actioncache_t actioncachehead;
 
diff --git a/src/p_user.c b/src/p_user.c
index fe6f5b83cc443ecd8549b3e5a266c986f3c4b039..e1edeca8b2438affaf51ab0b9f2c00aa531fcaa3 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -9833,7 +9833,7 @@ static CV_PossibleValue_t campos_cons_t[] = { {INT32_MIN, "MIN"}, {INT32_MAX, "M
 consvar_t cv_cam_dist = CVAR_INIT ("cam_curdist", "160", NULL, CV_FLOAT|CV_ALLOWLUA, campos_cons_t, NULL);
 consvar_t cv_cam_height = CVAR_INIT ("cam_curheight", "25", NULL, CV_FLOAT|CV_ALLOWLUA, campos_cons_t, NULL);
 consvar_t cv_cam_still = CVAR_INIT ("cam_still", "Off", NULL, CV_ALLOWLUA, CV_OnOff, NULL);
-consvar_t cv_cam_speed = CVAR_INIT ("cam_speed", "0.4", "Camera movement relative to the player character; higher value makes the camera more \"stiff\"", CV_FLOAT|CV_SAVE|CV_ALLOWLUA, CV_CamSpeed, NULL);
+consvar_t cv_cam_speed = CVAR_INIT ("cam_speed", "0.3", "Camera movement relative to the player character; higher value makes the camera more \"stiff\"", CV_FLOAT|CV_SAVE|CV_ALLOWLUA, CV_CamSpeed, NULL);
 consvar_t cv_cam_rotate = CVAR_INIT ("cam_rotate", "0", NULL, CV_CALL|CV_NOINIT|CV_ALLOWLUA, CV_CamRotate, CV_CamRotate_OnChange);
 consvar_t cv_cam_rotspeed = CVAR_INIT ("cam_rotspeed", "10", NULL, CV_SAVE|CV_ALLOWLUA, rotation_cons_t, NULL);
 consvar_t cv_cam_turnmultiplier = CVAR_INIT ("cam_turnmultiplier", "0.75", "Camera rotation speed when using keyboard controls (has no effect on mouse or controller)", CV_FLOAT|CV_SAVE|CV_ALLOWLUA, multiplier_cons_t, NULL);
@@ -9842,7 +9842,7 @@ consvar_t cv_cam_adjust = CVAR_INIT ("cam_adjust", "On", "Adjust camera angle re
 consvar_t cv_cam2_dist = CVAR_INIT ("cam2_curdist", "160", NULL, CV_FLOAT|CV_ALLOWLUA, campos_cons_t, NULL);
 consvar_t cv_cam2_height = CVAR_INIT ("cam2_curheight", "25", NULL, CV_FLOAT|CV_ALLOWLUA, campos_cons_t, NULL);
 consvar_t cv_cam2_still = CVAR_INIT ("cam2_still", "Off", NULL, CV_ALLOWLUA, CV_OnOff, NULL);
-consvar_t cv_cam2_speed = CVAR_INIT ("cam2_speed", "0.4", NULL, CV_FLOAT|CV_SAVE|CV_ALLOWLUA, CV_CamSpeed, NULL);
+consvar_t cv_cam2_speed = CVAR_INIT ("cam2_speed", "0.3", NULL, CV_FLOAT|CV_SAVE|CV_ALLOWLUA, CV_CamSpeed, NULL);
 consvar_t cv_cam2_rotate = CVAR_INIT ("cam2_rotate", "0", NULL, CV_CALL|CV_NOINIT|CV_ALLOWLUA, CV_CamRotate, CV_CamRotate2_OnChange);
 consvar_t cv_cam2_rotspeed = CVAR_INIT ("cam2_rotspeed", "10", NULL, CV_SAVE|CV_ALLOWLUA, rotation_cons_t, NULL);
 consvar_t cv_cam2_turnmultiplier = CVAR_INIT ("cam2_turnmultiplier", "0.75", NULL, CV_FLOAT|CV_SAVE|CV_ALLOWLUA, multiplier_cons_t, NULL);