Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Investigate using sv_fps 40 as a default #2555

Open
Calinou opened this issue Apr 29, 2024 · 0 comments
Open

Investigate using sv_fps 40 as a default #2555

Calinou opened this issue Apr 29, 2024 · 0 comments
Labels
cat: mod Category mod (generic) P3: Normal Priority 3 📝 Task Indirectly related to code: libs update, documentation
Milestone

Comments

@Calinou
Copy link
Contributor

Calinou commented Apr 29, 2024

A lot of effort has been put into fixing sv_fps-related issues, so much that most competitive gameplay is now done with sv_fps 40. Unfortunately, most casual players won't get to experience this increased tickrate, despite it being beneficial at all skill levels.

There are many advantages to running a higher tickrate on public servers or local matches:

  • Other players' movement follow more closely the player's actual position. Even though there's lag compensation and animation-induced weapon firing delay has been resolved recently (thanks again!), there's still a noticeable delay between clicking the left mouse button and hitting a player due to the tick rate. This also reduces peeker's advantage by design.
  • Crosshair spread is updated more smoothly. Right now, it's not interpolated, so the 20 Hz update rate is rather obvious.
    • The crosshair spread display could be interpolated on the client side, but this would also increase the perceived delay between the spread update (which isn't predicted on the client-side) and the displayed value. This might be more viable with 40 Hz tickrate, as the delay will be less problematic.
  • Being pushed around by other players or moving vehicles is smoother (or at least less frustrating 😛).
  • Local bot matches feel smoother, with less delay when firing weapons.
  • Spectating a player looks more accurate to their true actions.

In terms of CPU/bandwidth requirements, I don't know if it's been tinkered with recently, but I'd expect most public servers to be able to run sv_fps 40 without trouble.

It might be challenging for the largest active servers like TeamMuppet though (with their 48-player + 16 spectator limit), so perhaps the tickrate should be decided depending on player count (with sv_fps being adjusted every few minutes to account for the current player count). Adjusting sv_fps during gameplay will cause a small stutter, so we should ensure this isn't done during the heat of the action (e.g. in the last 2 minutes of a match). It should preferably done when many players are wounded or dead, so that fewer players will notice the tickrate change kicking in.

For instance, this could be controlled with the following cvars:

// Default FPS (used on server startup and restored after a long enough duration below the threshold).
sv_fps 40

// Maximum amount of players where the default FPS value is used.
// This value would support up to 12v12 matches (ignoring spectators).
sv_fpsMaxPlayers 24

// `sv_fps` fallback value when above player threshold.
sv_fpsAboveMaxPlayers 20

This is pending on #1637 to be fully resolved, but from what I've seen, most sv_fps-related issues either seem to be resolved, or are hard enough to notice at 40 Hz.

Note that if we carry over this change, it might be worth using cl_maxpackets 125 as a default as well to further improve smoothness and reduce jitter (the current default seems to be 100).

See my comment over on Xonotic's GitLab for more detailed rationale. There are already at least 2 id Tech 3-based games defaulting to 40 Hz (Quake Live and Unvanquished) - let's try to make ET:Legacy the third one 🙂

@Aranud Aranud added P3: Normal Priority 3 📝 Task Indirectly related to code: libs update, documentation cat: mod Category mod (generic) labels May 7, 2024
@Aranud Aranud added this to the Future milestone May 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cat: mod Category mod (generic) P3: Normal Priority 3 📝 Task Indirectly related to code: libs update, documentation
Projects
None yet
Development

No branches or pull requests

2 participants