Forum Discussion
jumbli
11 years agoMember
Dynamically calculating quality settings for optimum perf.
Many PC gamers are used to playing with quality settings and making choices such as choosing resolution or AA over framerate etc. But, that's not appropriate in VR due to the necessity of VSync and 75 fps. Also, as the game designers I think it should be our decision what gets sacrificed if they can't hit the framerate because we know what's most important to the experience we are trying to put across.
As an experiment I've been playing around with dynamically calculating the screen percentage (hmd sp) when a level starts. My process is:
1) Black the screen out with a post process, turn off vSync and turn sp to 200
2) Run for a few frames then test the fsp
3) If the fsp < 85 (to add some wiggle room) reduce sp by 5 and go to step 2
4) Turn on vSync and cancel the post process.
The results are obviously dependant on what the camera is looking at, but they have been fairly consistent and give me a good screen percentage without judder.
Once we have a baseline fps for a user, we can reduce it at times when we know something more demanding is coming along.
The more fleshed out idea would be to:
1) Involve more settings in the test
2) Find the "fps" problem area(s) of a level during development
3) While the screen is black, detach the camera and make it look at that problem area(s) while performing the test
4) Give the user a key to press if they experience judder to re-run the test.
Please let me know if I'm missing something that means I'm wasting my time (I am new to all this btw)
Are there any rumours of Unreal changing the engine to ensure 75 fps by automatically scaling?
Thanks for reading.
As an experiment I've been playing around with dynamically calculating the screen percentage (hmd sp) when a level starts. My process is:
1) Black the screen out with a post process, turn off vSync and turn sp to 200
2) Run for a few frames then test the fsp
3) If the fsp < 85 (to add some wiggle room) reduce sp by 5 and go to step 2
4) Turn on vSync and cancel the post process.
The results are obviously dependant on what the camera is looking at, but they have been fairly consistent and give me a good screen percentage without judder.
Once we have a baseline fps for a user, we can reduce it at times when we know something more demanding is coming along.
The more fleshed out idea would be to:
1) Involve more settings in the test
2) Find the "fps" problem area(s) of a level during development
3) While the screen is black, detach the camera and make it look at that problem area(s) while performing the test
4) Give the user a key to press if they experience judder to re-run the test.
Please let me know if I'm missing something that means I'm wasting my time (I am new to all this btw)
Are there any rumours of Unreal changing the engine to ensure 75 fps by automatically scaling?
Thanks for reading.
3 Replies
Replies have been turned off for this discussion
- owenwpExpert ProtegeThe problem with this approach is that the cause of an FPS drop could be any number of things, and will vary from one PC to another. As game designer, you do not know which quality settings should be changed to maximize performance. Not unless you have tested every single video card on the market.
Just measuring FPS will not tell you what you need to know, and the experiments you would need to do are not possible to run in real time because they will affect performance themselves and it takes time for GPU caches to settle. Modern engines get a lot of their performance from the fact that things do not change much from one frame to the next.
For smooth gameplay you should focus on changing your content to fit performance, not changing performance to fit content. Focus on making your game run consistently. The goal of optimization is to figure out the worst case performance, get that running at an acceptable speed, and then make sure nothing in your game exceeds it. Establish strict budgets for things like draw calls and vertex counts and layers of transparency, budgets that your target hardware can handle, then carefully measure your game while it is running to make sure you never go over. - jumbliMemberThanks for the reply. Much appreciated and saved me going in the wrong direction.
- spyroExpert ProtegeDid something similar in our project in our settings:
- Show 'pessimistic' benchmark scene
- Black out screen (draw a black rectangle over everything)
- Set SP to high value
- Gradually decrease screen percentage if there was at least one 'peakframe' in the last 200 ms
- Add some safety value (=decrease SP some more)
It works quite well as a golden hammer approach and helps the user to find the perfect value.
spyro
Quick Links
- Horizon Developer Support
- Quest User Forums
- Troubleshooting Forum for problems with a game or app
- Quest Support for problems with your device
Other Meta Support
Related Content
- 8 months ago