Jump to content
Sign in to follow this  
The_Great_Sephiroth

Framerate lock in A17...

Recommended Posts

I updated today when it rolled out and I must say, the new version is incredible. Very awesome work you guys did this past year. However, I have a nagging issue my dual GTX 1070's won't let go. I am locked at 60fps (60Hz) for whatever reason. When the update applied I went into AppData/Roaming and deleted the 7 Days folder completely (SHIFT+DEL). I started it with the launcher option, disabled EAC, set exclusive fullscreen, and saved/ran the game. Set everything to max and checked it out.

 

I have a Dell S2417DG monitor, which is a G-Sync, 2K monitor. I am running in 2K. Other games with Unity (A16, Subnautica, The Forest, etc) run around 143fps. A17 is locking me into 60fps despite exclusive fullscreen mode. Is there a way to tell the game to run 144Hz or is this some kind of forced lock for other (timing?) reasons? I doubt the game is using SLI, though I have yet to check. I know A16 didn't run in SLI.

 

So how can I get around this? I need vertical sync on for G-Sync to function correctly and with it off it claims to render insanely high framerates, but the monitor is at 60Hz for whatever reason, meaning that only 60 frames are being seen. V-Sync must stay on, so for those who don't understand this, please do not ask me to disable it. This is an issue with exclusive fullscreen setting the refresh rate to 60Hz, not being unable to push it.

 

*UPDATE*

 

I enabled both SLI and G-Sync indicators. Neither is working in A17. G-Sync worked fine in A16, but the game is doing something to prevent it from enabling in A17. I checked in both Ark (UE4.5.1) and Subnautica (Unity) and both SLI and G-Sync work in Ark, and G-Sync works in Subnautica. SLI has never been supported in Subnautica, so no SLI is normal. Seems like Unity is abount fifteen years behind in tech in not supporting SLI, but that is not my issue. What's changed in A17 which could prevent G-Sync from working in exclusive mode?

 

*UPDATE*

 

I double-checked my system setup and nothing special is set. In my global profile the refresh rate is set to the max available, which is 144Hz. The game is seen under "Manage 3D Settings", but nothing is set for this game. It is all at default settings, so nVidia and/or my system is not overriding anything in-game. The game apparently is forcing 60Hz when it goes into exclusive fullscreen, which I could probably deal with, but something is going on which is preventing G-Sync from enabling which causes micro-stutter even at 54fps, and is giving me a headache. I am not sure what is going on which would prevent G-Sync from enabling only in this game (G-Sync works even in Age of Empires 2 HD), but I need this issue fixed more than anything. Then we can figure out what's up with the 60fps lock.

 

Oh, and when I bring up the menu on my monitor while 7 Days is running, it tells me that I am in "2560x1440, 60Hz, G-Sync Mode", so the monitor, despite being forced into 60Hz, is able to do G-Sync, but something with this game tells the driver or my hardware not to enable it. Well, something doesn't seem right to the driver or hardware, because it is not enabled. I have the indicator turned on and I see it in Ark, The Forest, Subnautica, and basically everything else, but not in 7 Days.

Edited by The_Great_Sephiroth
Updated with more info (see edit history)

Share this post


Link to post
Share on other sites

Alright, I have done a bit of testing and discovered something. If I use the GLCore renderer I get G-Sync working. If I use D3D11, no G-Sync. Literally that is all I change to make G-Sync work or not work. The issue is that Unity's OpenGL stuff is junk on Windows. GLCore produces 16-35fps for the most part. I stay at 50-60fps in D3D11, but no G-Sync. I am beginning to wonder if 7 Days is not going into exclusive fullscreen mode despite being told to when using D3D11.

Share this post


Link to post
Share on other sites

I found a half-fix for the issue. If I go into the registry location below and delete all of the DWORD values starting with "Screenmanager", then start the game (it gets passed exclusive fullscreen mode as a parameter) the game starts in exclusive mode at 144Hz instead of 60Hz. However, upon quitting, those keys are saved again and upon restarting I am locked at 60Hz once again.

 

HKCU\Software\The Fun Pimps\7 Days To Die

 

The DWORD names are as follows.

Screenmanager Fullscreen mode_h3630240806

Screenmanager Resolution Height_h2627697771

Screenmanager Resolution Use Native_h1405027254

Screenmanager Resolution Width_h182942802

 

The values once the game has exited are as follows.

0

1440

1

2560

 

My monitor is a 2K monitor, so 2560x1440 is correct. I tried setting the "Native" value to 0 and 1 and I am always locked at 60Hz. If I delete these found DWORDs and start the game, it puts me in 2560x1440 at 144Hz. In other words, if these values exist, I am locked to 60Hz. If not, I get 144Hz.

Share this post


Link to post
Share on other sites

Not sure if it will help but i have another DWORD entry you haven't listed;

 

  • Screenmanager Is Fullscreen mode_h3981298716
  • 1

 

2018-12-26-19-23-26-Clipboard.jpg

 

While not running Gsync i do get over 60fps.

Share this post


Link to post
Share on other sites

Actually, that one was my issue. See, if that one is set, it locks me into 60Hz. If you delete those variables and tell the launcher to start you in exclusive mode, you get a correctly-sized, fullscreen game at the max refresh rate (144Hz in my case), but the option "fullscreen" is set to "NO" in the video options. You ARE in exclusive fullscreen but it claims you are not. Changing it to "YES" sets that DWORD variable AND locks me into 60Hz. What I discovered is that deleting all those DWORDs, starting the game in exclusive, and then exiting results in the four I mentioned above being set. I can restart the game over and over and I have both G-Sync AND 144Hz. However, as soon as that variable is stored in that DWORD entry, it locks the game to 60Hz.

 

In other words, if you are running exclusive fullscreen mode, that option should be called "60Hz/60fps lock", not "Fullscreen".

 

TL;DR:

Deleting the variable @SurvivalUK mentions fixes the exclusive mode only being 60Hz. I may record a video of this bug and upload to YouTube so The Pimps And Company can fix it.

Share this post


Link to post
Share on other sites

With the registry keys shown on mine i get anything up to around 100 fps @ 4k and i have my monitor overclocked to 70hz.

 

2080ti with default Nvidia control panel apart from FAST set for Vsync and Vsync off in game.

Share this post


Link to post
Share on other sites
With vsync off you could have a 10Hz monitor and get 1000fps. Turn ON vsync to see what you are actually outputting to the monitor.

Indeed but as i understand it for Gsync to work effectively the following should apply;

 

Nvidia control panel - Gsync on / Vsync on (global profile)

In game - vsync off

 

Ideally cap fps 2 - 4 fps under the monitor refresh rate in MSI AB or similar

Share this post


Link to post
Share on other sites

Incorrect. Vertical sync is required. There is no advantage to setting it in-game as opposed to the nVidia Control Panel. All the NCP does is override the game setting. In other words, if you turn it on in NCP, it does not matter whether or not it is on in the game because the driver is forcing it on. Vertical sync is vertical sync, it does not matter what turns it on.

 

Also, why on earth would you cap it? I hit 143/144fps all the time in games which support SLI, and I do this while G-Sync is on. G-Sync prevents stuttering when below your refresh rate the way vertical sync prevents tearing by syncing enter frame buffers, not partials. No need to cap anything.

 

*EDIT*

 

I thought about what you said and I believe I know why you would cap your framerate. You see G-Sync works up to the refresh rate, which is 144Hz in my case. Assume I ran with vsync disabled. G-Sync works until I hit 145+fps. Then G-Sync will disable because I am above the refresh rate of the monitor. However, if you enable vertical sync (I do it in-game, not in NCP) you cannot exceed the refresh rate and thus G-Sync will remain enabled. You would only need to cap your FPS if vsync was off.

Edited by The_Great_Sephiroth (see edit history)

Share this post


Link to post
Share on other sites
Incorrect. Vertical sync is required. There is no advantage to setting it in-game as opposed to the nVidia Control Panel. All the NCP does is override the game setting. In other words, if you turn it on in NCP, it does not matter whether or not it is on in the game because the driver is forcing it on. Vertical sync is vertical sync, it does not matter what turns it on.

 

Also, why on earth would you cap it? I hit 143/144fps all the time in games which support SLI, and I do this while G-Sync is on. G-Sync prevents stuttering when below your refresh rate the way vertical sync prevents tearing by syncing enter frame buffers, not partials. No need to cap anything.

 

*EDIT*

 

I thought about what you said and I believe I know why you would cap your framerate. You see G-Sync works up to the refresh rate, which is 144Hz in my case. Assume I ran with vsync disabled. G-Sync works until I hit 145+fps. Then G-Sync will disable because I am above the refresh rate of the monitor. However, if you enable vertical sync (I do it in-game, not in NCP) you cannot exceed the refresh rate and thus G-Sync will remain enabled. You would only need to cap your FPS if vsync was off.

Incorrect, erm the settings are the common recommendation for using a Gsync panel based upon proven results.

 

As for ncp vs in-game vsync you do this to take game engine variance and quirks out of the equation. It is better the game engine renders uncapped from vsync and let the ncp deal with the setting.

 

You cap fps because with vsync you introduce additional input lag once it kicks in. As above you're usually best capping outside of the game engine because of game engine quirks.

 

If you still think i'm wrong some reading material;

 

#22 especially relevant

https://forums.geforce.com/default/topic/1002056/geforce-drivers/understanding-how-g-sync-and-v-sync-work-together/

 

And some more

#6

https://rog.asus.com/forum/showthread.php?97294-When-I-have-Gsync-enabled-should-that-capp-the-fps-to-240#post694388

 

I won't hold my breath that you take any notice though even though i'm the only person who posted and tried to help.

Share this post


Link to post
Share on other sites

To be honest I have read a lot of false information that the masses soak up, but in the real world (ie: when I am not riding a dinosaur or shooting zombies) I do IT for a living. I support many professional audio/video individuals, churches, and businesses. As such I setup this stuff regularly. Capping changes nothing measurable. Using in-game versus NCP for v-sync changes nothing. Game quirks have nothing to do with vertical sync, unless the game has somehow overridden GL or D3D and implemented something all to itself. I am fairly sure The Pimps simply use Unity's features which, in Windows, relies on D3D for standard vsync.

 

Also, since Unity is living in 1995 and has yet to support SLI, most of us cannot max out 7 Days yet. I have two GTX 1070's with a high-bandwidth SLI bridge and I peak around 75fps. The monitor is 144Hz, but I can only utilize a single card. I am probably going to start streaming or recording using the second one. Now Ark, that eats up BOTH cards...

Share this post


Link to post
Share on other sites

Going to revive this thread because this still exists in A18. I have been away from 7 Days for a while due to my work schedule, young child, and my gaming time going to my server farm of seven Ark servers. I wanted to try A18 and I am back to being locked at 60Hz. I am on an entirely new system now with a 2080 Ti. I no longer use two 1070's in SLI. I hit 60fps and sit there. Great for streaming, bad for anything else. Why do we not have an option to set our refresh rate in Unity yet? UE1/2/3/4 all have these options. I imagine CoD and BF also allow users to set this stuff, though I do not play those games.

 

So how do I get beyond 60fps now? Deleting the variable mentioned above does nothing now. I am always locked to 60fps.

Share this post


Link to post
Share on other sites

I am sorry if this comes out sounding rude but do either of you even understand what vertical sync does? Vertical sync has nothing to do with being locked at 60Hz on a 144Hz monitor. When the fullscreen window is created by the game engine multiple things are passed, such as width and height along with the color depth and refresh rate. Turning off vertical sync does not increase your refresh rate. In fact turning it offf can introduce problems when going above the refresh rate. This is why kids with 60Hz monitors bragg about having 500fps in some lame game. It doesn;t matter that 450 of those frames are incomplete renders due to the buffer not being filled before it was flushed.

 

The issue here isn't that I cannot push frames. It stays pegged at the refresh rate which the game chose, 60Hz/60fps. My monitor is 144Hz. How do I force the game, when in true fullscreen mode, to use 144Hz instead of 60Hz? That is and has been the issue for the last three major versions of the game.

 

Oh, and this is a Unity issue. I also own Subnautica and I am testing Below Zero. Below Zero stays locked at 60 also. Somebody over there was saying something about Unity being so poorly designed that most devs cannot make it do anything but 60Hz. No idea if there is truth to it, but Unity is starting to piss me off. I may not be buying any more games based onUnity due to this. I did not purchase a 144Hz G-Sync monitor and a 2080 Ti to run at 60Hz. Unreal Engine games like Ark allow me to select my refresh rate.

 

*UPDATE*

 

Looks like what I read was correct. Apparently the Unity devs are still in the 80's, believing that 60Hz is "cutting-edge" or something. They have the game engine coded to use the default refresh rate on your platform, which is 60Hz on Windows. The Pimps can somehow change this, but I have no clue how much work it would be. Read the first two or three posts here and the link to the Unity documentation. It explains that somehow, when allowing the user to set a refresh rate and use vsync to render properly, the engine would use some CPU when the player minimized the game. Personally I find that to be a poor excuse to limit everybody to 60Hz in 2019, but it's their engine. Not The Pimps, the Unity devs.

 

https://steamcommunity.com/app/385770/discussions/0/528398719786341424/

Edited by The_Great_Sephiroth (see edit history)

Share this post


Link to post
Share on other sites
I am sorry if this comes out sounding rude but do either of you even understand what vertical sync does?

 

Sorry, yes I do. Didn't read this whole thread. My bad.

 

Personally I find that to be a poor excuse to limit everybody to 60Hz in 2019, but it's their engine. Not The Pimps, the Unity devs.

 

Not sure what led you to this conclusion, but "everybody" is not limited to 60 FPS.

 

I honestly don't know the answer, but since others are able to get both higher and lower framerates

I'd suspect something on your system is the issue.

 

Logs?

Share this post


Link to post
Share on other sites

102fps in this screenshot, no 60fps lock here so there is no 60fps lock by default, but i also don't use vsync.

https://imgur.com/a/yU2ueqg

 

did not know that your run 144hz either.

 

 

you can limit in console with settargetfps but it is not set by default to something and it does not persist, effective just in runtime.

Share this post


Link to post
Share on other sites

Vsync locks the video card into two things. First, it fills a buffer completely before sending it to the monitor. Second, it sends said full buffers only at the correct timing. With vertical sync off it can send a buffer, full or not, even during blanks. This counts as a frame sent but it is never seen on the screen. It can also send out a buffer which hasn't been completely rendered. This is why you get tearing with vsync off. It is also why, when your refresh rate is 60Hz, you can get well above 300fps. You are not getting 300 frames to your monitor, you are rendering 300, many incomplete frames, and only the few which hit the monitor at the right time are being displayed.

 

Again, refresh rate and vsync are two different things. Check your refresh rate while playing the game. My monitor tells me the current resolution and refresh rate when I press the menu button. When playing Ark for example, it says "256x1440 144Hz". When playing 7 Days, Below Zero, or other recent Unity titles it says "2560x1440 60Hz". Turning off vsync would only introduce tearing since my card can already push 60fps in 7 Days with ease. So the next time you're playing and getting 100+fps, see what your monitor says your refresh rate is. It will probably surprise you.

 

Oh, and Beelzybub, you clearly do NOT understand vertical sync. Do a basic Google search for "vertical sync" and every article mentions how it prevents tearing by keeping your framerate locked to your refresh rate. The issue here is refresh rate being 60Hz, so that means that, even if I disable vsync and get 1000fps, only 60 of those frames are shown to me. On top of that I now get tearing because my graphics card is pumping more frames than can be displayed.

 

In fact, the ONLY time you want to disable vsync is when you are unable to push enough frames to match the refresh rate of the monitor and you do not have G-Sync or FreeSync. If using ONLY vsync and you cannot push whatever refresh rate you are using you get micro-stutters. This is when you want to disable it.

 

Definition of vertical sync

Edited by The_Great_Sephiroth (see edit history)

Share this post


Link to post
Share on other sites

no, you don't enable vsync if you have freesync, unless you love inputlag.

 

refreshrate is already synced to fps, no need for vsync at all.

if fps is below your monitors sync range, it will send the same frame more often, above should just be capped with ingame limiter. (or afterburner, or radeon settings,..)

 

 

interesting that you make false assumptions regarding "60FPS lock in 7dtd!!", which is clearly not true, and then try to educate others regarding *sync, which is partially also not true.

 

 

never mind, i'm out here, good luck.

Share this post


Link to post
Share on other sites
Oh, and Beelzybub, you clearly do NOT understand vertical sync.[/url]

 

???

 

When did I offer a definition of vertical sync that is wrong? Please quote me.

 

All I did was admit I'd failed to read your thread and apologize for my erroneous

post. I agree with you that it is not a v-sync issue. I'll say it again since you

missed it the first time; sorry, my bad.

 

You ain't acting right, but good luck anyway. Hope you sort out your problems.

Share this post


Link to post
Share on other sites
no, you don't enable vsync if you have freesync, unless you love inputlag.

 

refreshrate is already synced to fps, no need for vsync at all.

if fps is below your monitors sync range, it will send the same frame more often, above should just be capped with ingame limiter. (or afterburner, or radeon settings,..)

 

 

interesting that you make false assumptions regarding "60FPS lock in 7dtd!!", which is clearly not true, and then try to educate others regarding *sync, which is partially also not true.

 

 

never mind, i'm out here, good luck.

Since you clearly know not what you say, linky time!

 

https://linustechtips.com/main/topic/918492-g-sync-with-v-sync/

https://forums.tomshardware.com/threads/what-is-the-diffrence-between-nvidia-vsync-and-gsync.2089349/

 

Just Google for God's sake. VSync caps you at the refresh rate of your monitor to prevent tearing. Yes, if you have vsync on and are rendering 100fps and the monitor is at 60Hz you get 60fps and slight latency with input. That is the entire issue here. I have a 144Hz monitor that is only going into 60Hz mode with 7 Days. 7 Days/Unity will NOT change to 144Hz for whatever stupid reason. Due to owning an RTX 2080 Ti, this means input lag as you described, or I get screen tearing if vsync is off because it renders well beyond what my monitor can handle with vsync off. I have seen the Steam FPS counter (and several in-game counters in other games) peg out at 999fps. Does that mean I am "leet" and getting to view those frames? Not on a 144Hz monitor!

 

I asked for help, not some grade-school explanation of "turn off vsync and get higher framerate" because you're not listening. The issue is not vsync. The game is literally creating its fullscreen mode application at 60Hz, not 144Hz and there is no option to tell it to do so. Is that clear enough?

 

Beelzybub, maybe I missed something. I was not trying to offend you. The issue, as stated in the original post, has absolutely NOTHING to do with vertical sync. Everybody is screaming it without understanding the basics of communication between a monitor and a video device. The game is setting my monitor to 2560x1440x60Hz, whereas every other game engine and game (Below Zero notwithstanding) uses 2560x1440x144Hz. You have nothing to appologize for.

 

Now please, stop mentioning vertical sync. Vsync, G-Sync, and FreeSync are not the issue. The issue is that the game is setting the wrong refresh rate when creating the fullscreen game window. I want THAT to work right. That is the solution I am looking for. How do I tell 7 Days to set the correct refresh rate when the game starts?

  • Like 1

Share this post


Link to post
Share on other sites

Odd, so that puts Unity in the days prior to DOS games. I have been a hobbyist programmer since the late 80's and I learned OpenGL (remember Neon Helium's stuff?) to do 3D rendering. I have ALWAYS been able to set a refresh rate, assuming the monitor supported it, in Win32/OpenGL. I can specify the refresh rate on Unreal Engine, Source Engine, Quake/Q2/etc, and many others. I cannot for the life of me figure out why Unity doesn't have a feature that has existed since, well, forever.

 

I have just managed to fix the issue and I came here to report it. My refresh rate was indeed being set to 60Hz every single time 7 Days started. My monitor literally told me this. I went in and deleted all of the "ScreenManager*" settings from the registry and restarted. Now it runs in 144Hz no matter what I do. Had I been smart, I would have backed up the old registry entries and posted them here for the devs to see. None of them seemingly have anything to do with refresh rate, but deleting them and starting the game again allowed the game to figure out I am on a 144Hz monitor. I seem to recall having issues similar to this before in A17. It is my personal belief that something changed when you guys switched to the newer Unity Engine and something wasn't clicking with the old settings.

 

I now have vertical sync and G-Sync on and the game runs liquid smooth. I get between around 58fps and about 120fps constantly, unless I am indoors where it can shoot to 144fps and sit there, so everything is good again. I apologize for sounding rude before, but I was asking about refresh rate, not vsync. While vsync is tied directly to refresh, it was NOT my issue. It just got old hearing the same thing over and over when it wasn't my issue. Sorry if I pissed anybody off.

Share this post


Link to post
Share on other sites

I found this topic because I had the same problem, and I thank you because I was confused with the use of v-sync.

 

My problem was that I have the GTX1070 connected to a 144 Hz Gsync monitor and a 60 Hz television. I have removed the television from the Nvidia control panel and it already works correctly with the v-sync activated (before it was activated or not, it was limited to 60 fps). I guess it's a game error because in others it doesn't happen.

 

I hope it will help you.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...