Jump to content

FPS limiter issues


LumpyPancakes

Recommended Posts

Hello,

The built in FPS limiter does not work properly. Setting V sync to "off" and using the "Max FPS" slider should limit the max framerate to whatever value the user selects. However, the slider does not actually lock your FPS to any given value. Instead, it uses several preset values to limit the framerate. These values are:

12, 16, 21, 32, 64.

Attempting to set the max framerate to anything other than these values will result in the true Max FPS being rounded down to the nearest value from this list.

For example if you set Max FPS to 80, you get 64 FPS.

Set Max FPS to 50, you get 32 FPS.

Set Max FPS to 30, you get 21 FPS.

I would also suggest you allow the user to manually type in a value for any setting in the options menu. Using sliders for things like this can be very annoying.

 

Thank you I hope this helps :)

 

 

Link to comment
Share on other sites

Yeah, it's still a bit wonky, if much better than it used to be. See this thread. I've actually talked to @radfast a lot outside of that thread, and the TL;DR was that there's no quick and easy fix, because monitor refresh rates don't work like you'd expect them to, behind the scenes. Maybe he can explain and/or investigate some more.

Link to comment
Share on other sites

  • 2 months later...

Sorry for delayed response.   If you are seeing the FPS as measured in game "lock" itself to figures like 64fps or 32fps, or maybe alternating between the two, this is actually a Windows issue, not a bug in Vintage Story per se.

For any settings and any OS, spikes in FPS, especially any spikes to something less than 32fps, are a sign that your graphics settings are higher than your current hardware can smoothly handle at high framerates.  The only way to fix this is to turn down one of the graphics settings to ease the pressure, or fix any hardware issues (e.g. thermal throttling, battery extension mode or other system-generated performance nerfs).  Wiki entry on this

If FPS spikes are specifically to fixed levels like 32fps or 21fps (from a 64fps baseline) that is a specific issue connected with the Windows system interval timer - but even without the Windows timer issue, you would still be having some spikes, they would just be spikes to any level between 32 and 63fps so maybe not so noticeable....  Vintage Story intentionally uses the Windows system timer when VSync is off and the MaxFPS slider is in use, it's literally the only way to give your CPU a rest.  With unlimited MaxFPS, one CPU core for the rendering thread would be at 100% all the time while you are playing Vintage Story, causing heat, maybe increased fan noise, reduced battery life on a laptop, increased energy consumption.  The purpose of limiting MaxFPS is to give the CPU a rest between frames - and to have a more steady framerate overall.   Technically the only ways we can do that are either to use VSync or to use the Windows system interval timer.  If the player chooses not to use VSync (or it's unsupported by hardware?) then the Windows timer is the only way it can be done.

Typically on a Windows 10 machine, the Windows system interval timer is set to 0.5ms or 1ms, and this works well and smoothly.  There can be small bumps of 1-2 fps in the FPS graph but they are not really noticeable and should be below the threshold of human perception when looking for smoothness.

If you are seeing 64fps or 32fps only in our FPS graph (or even 21fps or worse), then on your machine the Windows system interval timer is being set to 15.6667ms (i.e. 1/64 second).  That is set either by Windows itself or by other software.  The problem is that any other software you currently have running on your PC can change that timer interval, at any time.  That's outside our control, we cannot control what other software is doing.  More fundamentally it's a failing in Windows design, Windows does not let that be set on a "per application" basis.   We cannot fix this, but there are some ideas below to mitigate it.

If you are not using the latest Vintage Story version, you should update to the latest stable version.

Five recommended solutions for you to try:

  1. Set the MaxFPS slider to something around 70fps (i.e. slightly higher than 64fps) and if your machine is powerful and graphics settings not too much, Vintage Story FPS should "lock" to 64fps.  If you are getting mostly 64fps but occasional spikes to 32fps, you could try turning down graphics settings slightly - for example reduce the view distance or reduce the shadow level.
  2. Set the MaxFPS slider to something around 35fps (i.e. slightly higher than 32fps) and similar to (1) above, in this case I would expect most of the time you should have a rock-steady 32fps.  If it's not rock-steady then again your graphics settings are too high, try turning something down.  For most people, 32fps looks like smooth motion as long as it is steady: for comparison, that is higher than the framerate for US broadcast TV, and higher than the framerate for movies (which is 24fps).
  3. Use VSync - that should give you a framerate locked to your monitor, but if your monitor is 60fps then for the same reasons as in (1), you might sometimes have spikes to 30fps if the graphics settings are too high for a steady 60fps all the time.  So if you are seeing spikes with VSync enabled, again you might want to dial down the graphics settings
  4. Use unlimited FPS and tolerate the extra fan noise & energy use.  In this case your FPS graph will be quite variable depending on what is currently on the screen: simple landscapes or looking straight up into the sky could go to well over 100fps, dense forest or busy chiselled areas could be much lower fps.  On-screen you will only see 60fps or whatever your monitor refresh rate actually is.
  5. Switch off the FPS graph and don't worry about it - it is unusual for VS to produce any noticeable stutter!

(Final note, if you are pushing the game hard, e.g. flying around the landscape fast in creative mode, there can be occasional mini-pauses.  These are nothing to do with the framerate stabilisation system, they are due to the .NET garbage collector running, maybe once every minute something like that.  There is nothing specific we can do about that as the game runs on the .NET platform.  More generally we take continuous steps to optimise the game in various ways with every new update, so most players find 1.15 a lot smoother than 1.14 for example.)

We are aware that all players would like to have smooth and high FPS, a higher view distance and other higher graphics settings :).  We continually work on framerate performance "under the hood" and there are likely to be further improvements in upcoming version 1.16.

 

 

 

 

 

Edited by radfast
  • Like 3
  • Thanks 1
Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.