From 11070f193b50b36c57c29e3f1b3c3fd8c2c1f7ce Mon Sep 17 00:00:00 2001 From: bones_was_here Date: Sat, 4 Nov 2023 02:14:01 +1000 Subject: [PATCH] Support only perfect ticrates: 32hz 64hz 128hz, raise default to 64hz At these ticrates there's no floating point error accumulation. Signed-off-by: bones_was_here --- .gitlab-ci.yml | 2 +- qcsrc/common/ent_cs.qc | 2 +- qcsrc/ecs/systems/input.qh | 2 +- qcsrc/ecs/systems/physics.qh | 2 +- qcsrc/menu/xonotic/dialog_settings_misc.qc | 29 +++++++--------------- qcsrc/server/world.qc | 5 ++-- xonotic-client.cfg | 11 ++++---- xonotic-common.cfg | 5 ++-- xonotic-server.cfg | 2 +- 9 files changed, 25 insertions(+), 35 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f1b9b8086..55eb8a1bb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -36,7 +36,7 @@ test_compilation_units: test_sv_game: stage: test script: - - export EXPECT=d6d7e42bd894e2996fd58df286d0886b + - export EXPECT=e67187c8446f97a8b062a431dccb89e0 - qcsrc/tools/sv_game-hashtest.sh - exit $? diff --git a/qcsrc/common/ent_cs.qc b/qcsrc/common/ent_cs.qc index 11c5e7bb0..d8e6fd238 100644 --- a/qcsrc/common/ent_cs.qc +++ b/qcsrc/common/ent_cs.qc @@ -219,7 +219,7 @@ ENTCS_PROP(SOLID, true, sv_solid, solid, ENTCS_SET_NORMAL, void entcs_think(entity this) { - this.nextthink = time + 0.033333333333; // TODO: increase this to like 0.15 once the client can do smoothing + this.nextthink = time + 0.015625; // TODO: increase this to like 0.125 once the client can do smoothing entity player = this.owner; FOREACH(EntCSProps, it.m_check(this, player), { diff --git a/qcsrc/ecs/systems/input.qh b/qcsrc/ecs/systems/input.qh index fc3f11ada..21fd144cb 100644 --- a/qcsrc/ecs/systems/input.qh +++ b/qcsrc/ecs/systems/input.qh @@ -1,3 +1,3 @@ #pragma once -SYSTEM(in, 30, 10); +SYSTEM(in, 32, 10); diff --git a/qcsrc/ecs/systems/physics.qh b/qcsrc/ecs/systems/physics.qh index cef9916f3..23dc0994d 100644 --- a/qcsrc/ecs/systems/physics.qh +++ b/qcsrc/ecs/systems/physics.qh @@ -1,6 +1,6 @@ #pragma once -SYSTEM(phys, 30, 10); +SYSTEM(phys, 32, 10); void sys_phys_fix(entity this, float dt); bool sys_phys_override(entity this, float dt); diff --git a/qcsrc/menu/xonotic/dialog_settings_misc.qc b/qcsrc/menu/xonotic/dialog_settings_misc.qc index 1a777af6a..375510e2a 100644 --- a/qcsrc/menu/xonotic/dialog_settings_misc.qc +++ b/qcsrc/menu/xonotic/dialog_settings_misc.qc @@ -41,15 +41,6 @@ void XonoticMiscSettingsTab_fill(entity me) me.TR(me); if(cvar_type("crypto_aeslevel") & CVAR_TYPEFLAG_ENGINE) me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 1, "crypto_aeslevel", _("Use encryption (AES) when available"))); - me.TR(me); - me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Bandwidth limit:"))); - me.TD(me, 1, 2, e = makeXonoticTextSlider_T("_cl_rate", - _("Specify your network speed"))); - e.addValue(e, _("Slow ADSL"), "20000"); - e.addValue(e, _("Fast ADSL"), "40000"); - e.addValue(e, _("Broadband"), "66666"); - e.configureXonoticTextSliderValues(e); if(cvar("developer") > 0) { me.TR(me); @@ -86,13 +77,11 @@ void XonoticMiscSettingsTab_fill(entity me) me.TR(me); me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Maximum:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_maxfps")); - ADDVALUE_FPS(60); - ADDVALUE_FPS(100); - ADDVALUE_FPS(125); - ADDVALUE_FPS(150); - ADDVALUE_FPS(200); - ADDVALUE_FPS(250); - ADDVALUE_FPS(400); + ADDVALUE_FPS(128); + ADDVALUE_FPS(256); + ADDVALUE_FPS(512); + ADDVALUE_FPS(1024); + ADDVALUE_FPS(2048); e.addValue(e, ZCTX(_("MAXFPS^Unlimited")), "0"); e.configureXonoticTextSliderValues(e); me.TR(me); @@ -111,10 +100,10 @@ void XonoticMiscSettingsTab_fill(entity me) me.TR(me); me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Idle limit:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_maxidlefps")); - ADDVALUE_FPS(10); - ADDVALUE_FPS(20); - ADDVALUE_FPS(30); - ADDVALUE_FPS(60); + ADDVALUE_FPS(16); + ADDVALUE_FPS(32); + ADDVALUE_FPS(64); + ADDVALUE_FPS(128); e.addValue(e, ZCTX(_("IDLFPS^Unlimited")), "0"); e.configureXonoticTextSliderValues(e); me.TR(me); diff --git a/qcsrc/server/world.qc b/qcsrc/server/world.qc index f051eea48..edfc6e1a8 100644 --- a/qcsrc/server/world.qc +++ b/qcsrc/server/world.qc @@ -528,8 +528,9 @@ void cvar_changes_init() BADCVAR("sv_vote_master_commands"); BADCVAR("sv_vote_master_password"); BADCVAR("sv_vote_simple_majority_factor"); - BADVALUE("sys_ticrate", "0.0166667"); - BADVALUE("sys_ticrate", "0.0333333"); + BADVALUE("sys_ticrate", "0.0078125"); + BADVALUE("sys_ticrate", "0.015625"); + BADVALUE("sys_ticrate", "0.03125"); BADCVAR("teamplay_mode"); BADCVAR("timelimit_override"); BADPREFIX("g_warmup"); diff --git a/xonotic-client.cfg b/xonotic-client.cfg index 6500e727f..e77666d05 100644 --- a/xonotic-client.cfg +++ b/xonotic-client.cfg @@ -176,7 +176,6 @@ v_kicktime 0 // how long damage kicks of the view last, default is 0 seconds gl_polyblend 0 // whether to use screen tints, this has now been replaced by a better system in CSQC r_motionblur 0 // motion blur value, default is 0 r_damageblur 0 // motion blur when damaged, default is 0 (removed in Xonotic) -net_slist_queriespersecond 60 // to be reduced if any major issues arise (ping times increased etc.) // TODO: revisit bloom settings on the GL32 renderer! r_bloom_blur 4 @@ -653,8 +652,12 @@ makesaved v_kicktime makesaved music_playlist_list0 makesaved music_playlist_random0 -cl_netfps 60 // should match or be a multiple of sys_ticrate -_cl_rate 40000 // fast adsl +cl_netfps 64 // should match or be a multiple of sys_ticrate +_cl_rate 262144 // should allow the max csprogs.dat speed of 128hz * 1400 + +scr_loadingscreen_maxfps 32 +cl_maxidlefps 32 +cl_maxfps 256 gl_texture_anisotropy 8 seta gl_texturecompression 0 // FIXME the description is wrong - when this is 0, e.g. gl_texturecompression_sky still takes effect @@ -665,8 +668,6 @@ gl_texturecompression_lightcubemaps 0 gl_texturecompression_q3bsplightmaps 0 gl_texturecompression_sky 1 -cl_maxfps 250 - seta cl_weaponpriority "vaporizer okhmg okrpc oknex vortex fireball mortar okmachinegun machinegun hagar rifle arc electro devastator crylink minelayer okshotgun shotgun shockwave hlac tuba blaster porto seeker hook" "weapon priority list" seta cl_weaponpriority_useforcycling 0 "when set, weapon cycling by the mouse wheel makes use of the weapon priority list (the special value 2 uses the weapon ID list for cycling)" seta cl_weaponpriority0 "okrpc devastator mortar hagar seeker fireball" "use weapon_priority_0_prev for prev gun from this list, weapon_priority_0_best for best gun, weapon_priority_0_next for next gun. Default value: explosives" diff --git a/xonotic-common.cfg b/xonotic-common.cfg index 899b217cd..41f8cdf9c 100644 --- a/xonotic-common.cfg +++ b/xonotic-common.cfg @@ -82,9 +82,8 @@ seta g_maplist "" "the list of maps to be cycled among (is autogenerated if empt // we must change its default from 1.0 to 1 to be consistent with menuqc set slowmo 1 -// ticrate -//sys_ticrate 0.0166667 // 60fps. This would be ideal, but kills home routers. -sys_ticrate 0.0333333 // Use 30fps instead. +// 3 ticrates are officially supported: 1/32 1/64 1/128 +sys_ticrate 0.015625 // Audio track names (for old-style "cd loop NUMBER" usage) set _cdtrack_first "1" diff --git a/xonotic-server.cfg b/xonotic-server.cfg index d7304eca0..8a98a2665 100644 --- a/xonotic-server.cfg +++ b/xonotic-server.cfg @@ -581,7 +581,7 @@ sv_cullentities_trace_prediction_time 0.4 sv_cullentities_trace_eyejitter 0 // less "lagging" of other players, but also less PL tolerant... let's try this -sv_clmovement_inputtimeout 0.066 // slightly less than 2 frames, so only one frame can be compensated +sv_clmovement_inputtimeout 0.06249 // slightly less than 2 32hz frames, so only one frame can be compensated // strength sound settings set sv_strengthsound_antispam_time 0.1 "minimum distance of strength sounds" -- 2.39.2