Framerate and Performance: Difference between revisions

From Vintage Story Wiki
(Rewrote several parts of the page and corrected grammar including several run on sentences, necessary commas, and apostrophes. Added wording regarding .NET7 upgrade and added additional ideas for performance optimization due to the engine upgrade)
(Replaced in-line WIP notice with the template)
Line 1: Line 1:
<languages/><translate>
<languages/>
{{WIP|Being revised for the .net 7 upgrade}}
<translate>
<!--T:1-->
<!--T:1-->
Vintage Story aims to be a high-performance game even on non-gaming hardware, such as laptops.  For high-end gaming hardware, it should be possible to achieve high framerates (100fps or more) even with all graphics settings maximized.
Vintage Story aims to be a high-performance game even on non-gaming hardware, such as laptops.  For high-end gaming hardware, it should be possible to achieve high framerates (100fps or more) even with all graphics settings maximized.
Line 5: Line 7:
<!--T:2-->
<!--T:2-->
Generally, each new major version of Vintage Story should have better performance: version 1.15 was noticeably better than 1.14, for example. Also, Vintage Story switched from .NET 4 to .NET 7, which resulted in drastically better performance for clients and servers alike. Be sure to run the most recent version to ensure you are running with the best performance possible.
Generally, each new major version of Vintage Story should have better performance: version 1.15 was noticeably better than 1.14, for example. Also, Vintage Story switched from .NET 4 to .NET 7, which resulted in drastically better performance for clients and servers alike. Be sure to run the most recent version to ensure you are running with the best performance possible.
<!--T:3-->
(Currently being revised Oct 23 2023 by dotyerts for game version 1.18.15 due to Dotnet7 upgrade...)


===Basic performance tips - if the game runs slow=== <!--T:4-->
===Basic performance tips - if the game runs slow=== <!--T:4-->

Revision as of 21:49, 26 October 2023

Other languages:
UnderCon icon.png

This page is under construction.
This page is being created, or is in the process of extensive expansion or major restructuring. Until this notice is removed, please do not translate this page. Expect the content of this page to change significantly.


Vintage Story aims to be a high-performance game even on non-gaming hardware, such as laptops. For high-end gaming hardware, it should be possible to achieve high framerates (100fps or more) even with all graphics settings maximized.

Generally, each new major version of Vintage Story should have better performance: version 1.15 was noticeably better than 1.14, for example. Also, Vintage Story switched from .NET 4 to .NET 7, which resulted in drastically better performance for clients and servers alike. Be sure to run the most recent version to ensure you are running with the best performance possible.

Basic performance tips - if the game runs slow

With appropriate settings, most players should be able to achieve playable framerates (such as 30fps) even on older hardware. Make sure to read through the Game Runs Slow Guide.
If you have only integrated graphics (e.g. Intel Core with Iris), use graphics settings Medium or Low, or even lower.

Advanced Tips for Maximizing Performance

1. If, in Single Player, you run into large lag spikes after several minutes of play, and you have 8 GB or less RAM, you could be bottlenecked by lack of system memory. Due to modern memory compression, you should be able to run the game on most systems with low RAM, but it is advisable to consider purchasing more RAM in order to reduce the load on system paging and the associated extra CPU cycles required. Buying 4-8 GB more RAM is quite cost effective in comparison to a new graphics card or CPU. It is also an option to run a dedicated server on another computer on your local network to reduce RAM usage and free up CPU threads.

2. It may help to play the game in Full Screen mode, not Windowed mode or Borderless.

3. Vintage Story has a wide range of graphics settings. Adjusting these up or down, and switching on or off the fancier elements, can have a huge effect on performance. The tooltips on each control on the Graphics settings page should give you some pointers. Switching off Shadows, SSAO and Bloom will have the biggest effect on framerate for most people. Even dropping your Shadows and SSAO from the highest settings down a notch should grant a significant gain in framerate or frametimes.

Large view distances have an effect not only on the framerate (fps) on screen, but also performance throughout the game. If everything is sluggish or there are frequent lag spikes, try turning down the view distance. The game is balanced to be smooth and playable on most modern PCs at view distances around 256 blocks to 512 blocks, depending on your hardware. Playing at above 512 blocks is certainly possible on most PCs - but long-term play at such large view distances with max graphics is best left only for high-end gaming PCs who followed the advice in step #1...


4. The game supports 4k screens. Even so, the size of that screen places higher demands on the GPU and so framerates may be lower. On ultra-HD monitors, you can experiment with turning down the resolution to a lower HD setting like 1920x1080. You can also use the in-game option for Resolution scaling that will run the game's native rendering at a lower resolution but maintain the scaling of your UI.


5. Make sure your CPU is not overheating and therefore "thermally throttling". If you run Vintage Story with no VSync and unlimited frame rate, it will push one of your CPU cores to 100% permanently. That in turn will cause the CPU internal temperature to rise. You can monitor temperatures using a free 'Hardware Monitor' tool, or just listen to the fan noise ramping up! If the CPU internal temperature is approaching maximum allowed levels (90-100 °C on a modern CPU, that's hot enough to boil water) then the CPU should automatically switch to running slower than its maximum speed, this is "thermal throttling". This will slow down the game's performance. To prevent this thermal issue, use VSync or max frame rate limits to prevent your CPU cores reaching 100% usage.

Tip: on a multi-core PC, the overall CPU usage percentage shown by Windows can look small even if one core is maxed out. For example, with 8 cores, one core maxed out at 100% would only be 12.5% CPU usage overall. To see what's really going on, you need to use a non-Microsoft tool like Hardware Monitor.

(Note that VintageStory does use multithreading for efficient performance. That is why the game runs best on a CPU with 4 cores or more. But the main rendering thread, which is one of the limits on FPS, runs on a single core.)


6. If you followed suggestion #1 above, you can tweak server performance by adjusting the "magic numbers". The magic numbers default values are aimed at a typical Vintage Story multiplayer server with let's say 3 or 4 players, playing over the internet, so some of them can be increased if it's only 1 player on your own machine.


7. There's a known issue on Radeon graphics cards - including high end Radeon cards - about GPU availability, more like memory lock contention. The issue is normally only seen on max graphics settings (with shadows enabled) and is most obvious when moving across the map so that a lot of new map loads, there can be noticeable frame rate drops and stutter. Game version 1.15.7 and above has a change that slightly improves this, we hope to do even more to work around it in future versions, but it is a hardware/GPU issue. For anyone bothered by the issue, a solution is to ease the pressure on the GPU by turning down some of the top end settings (SSAO and Shadows or reduce the MaxFPS) so that the GPU has some idle time each frame.

8. The Occlusion Culling graphics setting is recommended on any modern multi-core CPU (4 cores or more) - it uses one additional CPU thread but leads to less work for the GPU. This can drastically increase performance while playing with high render distances.

9. For very low end hardware, it can help to play on worlds that are only 192 or 128 blocks tall.


See also Troubleshooting Guide

For Linux users

A simple method to increase performance may be to enable mesa_glthread by running the game with: mesa_glthread=true mono Vintagestory.exe
. There is a beginners guide on this on the forums. One user on the forums suggests running the game with strangle 60 mono ./Vintagestory.exe to fix issues with input lag.

Balancing performance, temperature and power consumption

  • For the reasons given in #5 above, it is recommended not to run with Unlimited FPS, but instead to limit the FPS. The main reason to do this is so that your CPU will not be maxed out with one core at 100% all the time, which can lead to overheating or even (in the long term) a shorter lifetime for your CPU. If FPS is limited in any of the ways on offer, it allows the CPU to "rest" in between frames, and that in turn means the CPU takes less power and runs cooler, so that system fans can be quieter, etc, etc.
  • FPS can be limited through the graphics settings. This can be done either by using the MaxFPS slider, or using VSync, or the third VSync option is a combination of both. You can also limit FPS on some GPUs from the driver level, such as Nvidia's control panel.
  • Most modern graphics cards - even internal graphics on laptops - have a VSync feature. If VSync is on, then the game engine will not render frames more quickly than they can be drawn on the actual connected display. This allows the CPU to rest sometimes, waiting until the display is ready to render the next frame, so the CPU will not be at 100%. But sometimes graphics drivers behave strangely with VSync, for example there can be global overrides to switch it off - in this case, Vintage Story's VSync setting will seem not to have any effect, it will be like having framerate unlimited.
  • VSync may help with graphical "tearing" issues, although these do not occur on all systems - they are more common on specialised low-latency gaming monitors so if you have one of those (lucky you!) then VSync is your best option.
  • Generally, we recommend first trying the game with VSync switched on.
  • The alternative recommendation is to play with VSync switched off and MaxFPS set to a figure slightly higher than the frame rate you want to see (remember it's the maximum, not the average). For example, if you want to play at average 60fps then set MaxFPS to somewhere around 70-75fps.
  • On a Windows PC (but not Linux or Mac) there is an issue where if you are using MaxFPS alone (not VSync) to control the framerate, the Windows timer is not very precise. In practice, in the frame rate meter, what this looks like is the frame rate seems to stick at specific step levels like 48fps or 32fps instead of the 60fps you want. This issue is caused by the Windows system interval timer and there's not much the Vintage Story dev team can do about it: even if we take it by the scruff of the neck, other Windows applications running on your PC can change that timer at any time. Therefore, on a Windows PC with a display refresh rate of 60 fps, you may need to experiment a little - it also depends what other applications are running on your system. For some people it works best to set MaxFPS higher than the level you want. So, if you want 60fps, set MaxFPS somewhere in the range 70-75fps (you can experiment!), and if all is going well then, the Windows system interval timer will drop that down to its next step level which might be 64fps. 64fps is good, it's close to 60fps which the display requires.
  • On a Windows PC another option is to embrace 32fps, so set your MaxFPS slightly higher than 32fps (say around 40 fps) and you should find that Windows effect drops it down and locks it at 32fps. The reason for doing this is to have a steady constant FPS, no matter what is happening on screen. A constant 32fps should look smooth, as long as it's steady. That's better than TV shows and sports (30fps) or movies (24fps).
  • Some players want lag (latency) to be as low as possible, in that case you can try setting MaxFPS at a much higher number like 100 or 120fps. Even a high number like that will have cooling benefits on a high -powered gaming PC which can reach framerates of 150 or more in Vintage Story.

Thinking about what is on-screen

  • Vintage Story framerates can change a lot depending on the complexity of what is on screen.
  • To see this, with unlimited MaxFPS, try looking straight up into the sky - you should see the frame rate increase dramatically
  • Normally the most complex scenes, causing the lowest FPS, are thick, deep forests. It's because of all the leaves, and each leaf block is slightly transparent, so everything behind leaf blocks also has to be drawn - the depth of field is huge.

CPU or GPU runs too hot

  • The main way to control CPU and GPU usage is using the Vsync and Max FPS settings in the graphics settings as described above.
  • One path to optimize both: pick a framerate you want e.g. 60 fps. Now with VSync off and Max FPS unlimited, adjust the graphics settings that heavily affect framerate (view distance, godrays & bloom, shadows, SSAO) to hit a framerate that's about 15%-20% better than you want, e.g. 70 fps or 80 fps. When the game can comfortably hit that, now set Max FPS to 60fps and VSync to 'On + Sleep'. This should produce a stable 60fps, a smooth game with no lag spikes, and less than 100% CPU and GPU usage so that your fans run quietly.


Server Performance

If you are a server owner and suffer from lag issues on the server.

  • Make sure it's not 3rd party mods causing it
  • If you have more than a couple of players, make sure your hardware is strong enough to support your player base. Virtual Servers have a tendency to perform rather badly at 10+ players. Bare metal works best.
  • You can run /debug logticks 100 to see where most time is spent on, feel free to ping tyron on discord to interpret the results or ask others in discord if they are familiar with the issues.