]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Support only perfect ticrates: 32hz 64hz 128hz, raise default to 64hz
authorbones_was_here <bones_was_here@xonotic.au>
Fri, 3 Nov 2023 16:14:01 +0000 (02:14 +1000)
committerbones_was_here <bones_was_here@xonotic.au>
Sun, 4 Aug 2024 16:56:33 +0000 (02:56 +1000)
At these ticrates there's no floating point error accumulation.

Signed-off-by: bones_was_here <bones_was_here@xonotic.au>
.gitlab-ci.yml
qcsrc/common/ent_cs.qc
qcsrc/ecs/systems/input.qh
qcsrc/ecs/systems/physics.qh
qcsrc/menu/xonotic/dialog_settings_misc.qc
qcsrc/server/world.qc
xonotic-client.cfg
xonotic-common.cfg
xonotic-server.cfg

index f1b9b80860d96931cd02560ed707e63ea75882ac..55eb8a1bb81b593d300a6c4de7567366fba083b5 100644 (file)
@@ -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 $?
 
index 11c5e7bb019da168b83b30481683c7d6b537e274..d8e6fd23870d98b377f8331b65d367bfbfb310d3 100644 (file)
@@ -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),
                {
index fc3f11adafa34d1acb9f82d85c497b221c86e138..21fd144cb5b1526b17ff9d64dd5aecad2f9bd6e6 100644 (file)
@@ -1,3 +1,3 @@
 #pragma once
 
-SYSTEM(in, 30, 10);
+SYSTEM(in, 32, 10);
index cef9916f3d60e3412bb761fbc746afed9085db86..23dc0994d3b9e901ea94ece0b8149e947947a66c 100644 (file)
@@ -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);
index 1a777af6ab17830a223ec7417e7bc82d3b56311a..375510e2ab5e578ce5173c283b56d14bc6622aec 100644 (file)
@@ -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);
index f051eea48ba8666375c81a5c802c44d6de2eaacc..edfc6e1a8da3bf628b7f2543cb88daee4b0e5001 100644 (file)
@@ -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");
index 6500e727f895f363514ff662e515d2aa00b9be4f..e77666d05cb88534109307c6c4947c6a8cfa4cfb 100644 (file)
@@ -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"
index 899b217cdd62e2ab51fbd34c0dd5a3df6fcaf69b..41f8cdf9c805e0d5ab5a5c70c622b63d3763fe79 100644 (file)
@@ -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"
index d7304eca0ab8967ad22b79d8d54239552d376ef7..8a98a2665802b3c98cdcb5fd3804324fec717109 100644 (file)
@@ -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"