cvar_t host_framerate = {0, "host_framerate","0", "locks frame timing to this value in seconds, 0.05 is 20fps for example, note that this can easily run too fast, use cl_maxfps if you want to limit your framerate instead, or sys_ticrate to limit server speed"};
// shows time used by certain subsystems
cvar_t host_speeds = {0, "host_speeds","0", "reports how much time is used in server/graphics/sound"};
-// LordHavoc: framerate upper cap
+cvar_t cl_minfps = {CVAR_SAVE, "cl_minfps", "40", "minimum fps target - while the rendering performance is below this, it will drift toward lower quality"};
+cvar_t cl_minfps_expbase = {CVAR_SAVE, "cl_minfps_expbase", "1.2", "base for log() function in calculating quality reduction, should be in the range 1.1 to 2.0"};
+cvar_t cl_minfps_fade = {CVAR_SAVE, "cl_minfps_fade", "0.2", "how fast the quality reduction adapts to varying framerate"};
+cvar_t cl_minfps_maxqualityreduction = {CVAR_SAVE, "cl_minfps_maxqualityreduction", "3", "how much particle quality can be reduced (as a power of 2) when framerate is staying below cl_minfps, 0 = no reduction, 1 = 50% quality, 2 = 25% quality, 3 = 12.5% quality, ..."};
cvar_t cl_maxfps = {CVAR_SAVE, "cl_maxfps", "1000000", "maximum fps cap, if game is running faster than this it will wait before running another frame (useful to make cpu time available to other programs)"};
cvar_t cl_maxidlefps = {CVAR_SAVE, "cl_maxidlefps", "20", "maximum fps cap when the game is not the active window (makes cpu time available to other programs"};
Cvar_RegisterVariable (&host_framerate);
Cvar_RegisterVariable (&host_speeds);
+ Cvar_RegisterVariable (&cl_minfps);
+ Cvar_RegisterVariable (&cl_minfps_expbase);
+ Cvar_RegisterVariable (&cl_minfps_fade);
+ Cvar_RegisterVariable (&cl_minfps_maxqualityreduction);
Cvar_RegisterVariable (&cl_maxfps);
Cvar_RegisterVariable (&cl_maxidlefps);
for (i = 0, host_client = svs.clients;i < svs.maxclients;i++, host_client++)
if (host_client->active)
SV_DropClient(false); // server shutdown
+ if(prog->loaded)
+ if(prog->funcoffsets.SV_Shutdown)
+ {
+ func_t s = prog->funcoffsets.SV_Shutdown;
+ prog->funcoffsets.SV_Shutdown = 0; // prevent it from getting called again
+ PRVM_ExecuteProgram(s,"SV_Shutdown() required");
+ }
SV_VM_End();
NetConn_CloseServerPorts();
//ui_update();
CL_Video_Frame();
-#ifdef SUPPORT_GECKO
CL_Gecko_Frame();
-#endif
CL_UpdateScreen();
COM_InitGameType();
// construct a version string for the corner of the console
-#if defined(__linux__)
- os = "Linux";
-#elif defined(WIN32)
- os = "Windows";
-#elif defined(__FreeBSD__)
- os = "FreeBSD";
-#elif defined(__NetBSD__)
- os = "NetBSD";
-#elif defined(__OpenBSD__)
- os = "OpenBSD";
-#elif defined(MACOSX)
- os = "Mac OS X";
-#elif defined(__MORPHOS__)
- os = "MorphOS";
-#else
- os = "Unknown";
-#endif
+ os = DP_OS_NAME;
dpsnprintf (engineversion, sizeof (engineversion), "%s %s %s", gamename, os, buildstring);
Con_Printf("%s\n", engineversion);
// AK shutdown PRVM
// AK hmm, no PRVM_Shutdown(); yet
-#ifdef SUPPORT_GECKO
CL_Gecko_Shutdown();
-#endif
CL_Video_Shutdown();
Host_SaveConfig();