options vs performance

Miscellaneous Forums/General Discussion/options vs performance

Need some feedback regarding what people do when they encounter low FPS in a game.

I'm prepping a new build of Tank Universal which includes widescreen support (1680 x 1050). My test machine is a 3GHZ PC with a 512meg 8600GT vid card, widescreen monitor - so a fairly reasonable machine.

The game features 20 levels and at least four of those involve very large tank battles with a lot of AI and particle fx. When playing these big levels, the game can sometimes chug a bit, but remain very playable (at max resolution 1680x1050). I've also optimised the game as much as possible. I do wish Blitz3d had a faster engine.

However, the game also sports a Tron style glow fx. By default this is off and if the player turns it on in the options, a small warning message appears that the fx is very FPS heavy. This isn't a problem for most of the game, just on the 4 or so very large levels.

However my publisher wants the glowfx turned on by default - so my question is, if a new player finds the fps dropping, would they automatically pause the game and go check out the options? If so, then they would see the message regarding the glowfx being fps heavy, turn it off, and continue playing happily.

Does this seem a reasonable solution to you guys?

seems somewhat reasonable to me - I always do a test play and mess with the options of a game until it fits my needs, before playing.

However my publisher wants the glowfx turned on by default - so my question is, if a new player finds the fps dropping, would they automatically pause the game and go check out the options? If so, then they would see the message regarding the glowfx being fps heavy, turn it off, and continue playing happily.

The kind of audience of Tank Universal shouldn't be too casual, so it should go as you say, but then again the target audience differs for each publisher so I can't say for sure without knowing who they are.

Either way, my opinion is that you should do a stress test before running the game the first time: if the framerate is too low warn the user and ask if he wants to disable the special effects, and that if he doesn't want to he can still disable them later through the options panel (never disable automatically... it always turns some customers angry, expecially if in some rare cases the stress test shouldn't work as expected).

Firstly, wide-screen support = YAY! Based on mentioning 1680 x 1050 though, are you hard-coding it especially for that resolution, or are you going to somehow algorithmically manipulate things so that your game has the correct aspect ratio if (say) "Widescreen = On" is chosen in the preferences? My somewhat loaded question hopes for the latter. ;)

My suggestion for the glow is when the game starts to chug too much, turn it off automatically. Chances are (and you can test this), if there's that much going on at that moment, the gamer's likely not to notice the lack of glow FX right then and there, but will notice any chugging much more.

Once the game recovers from its high-stress moment, turn it back on again (if the preferences had it on to begin with).

do a stress test before running the game the first time:

That's a possibility. Thing is, the glowfx is fine for 75% of the game, so I'm a little leary of switching it off for the enitre 100% based on an initial stress test.

when the game starts to chug too much, turn it off automatically.
I have done some experimenting with this, however the glowfx turning on/off did tend to introduce unexpected slowdowns/speedups which the player would probably find irritating.

But just thinking about this, I've had a new idea!
Much of the fps hit comes from the second camera (the 'glowcamera) rendering the scene to the glow texture. By reducing the camera range (of the 'glowcamera') I can dynamically manage the fps hit caused by the glow effect! For example, if fps drops, I can reduce the camerarange (or glow range) to only nearby objects. That might work!

or are you going to somehow algorithmically manipulate things so that your game has the correct aspect ratio

The game now takes screen ratio into account and moves/scales GUI elements to suit. It also adjusts the camera so that the vertical space is identical to a 4:3 scene - but there's a greater horizontal field of view - extra bits rendered either side so to speak.

I can tell you, the game's looking pretty sweet on widescreen.

I can tell you, the game's looking pretty sweet on widescreen.

Now that I've got a whiz-bang computer with a 24" widescreen display (I really need to update my sig), the lack of wide-screen support up until this point is the only thing that's kept the credit card in my wallet.

Sweeeet sweeeeet widescreen support... :oD

lo7

What res do you normally run in with this new rig?


And it looks like my dynamic camerarange idea has worked! It tries to keep fps to 26fps min and if the glow camerarange falls below 16, then it turns the glow fx off completely - only allowing the the glowfx to come on if it's back to 30fps.

What res? 1920 x 1200. That's the native res of the monitor, and as you know, if you can go native, you do.

I'm yet to find anything that doesn't run very sweetly at that resolution. If anything even *thinks* about chugging (I'm looking at you, Crysis), then I just turn the anti-aliasing down a bit until it stops. I don't lower the resolution though.

Top news on that dynamic camerarange thingy too!

Does this seem a reasonable solution to you guys?


Probably.

something else you could consider is to periodically check the FPS, and if it drops below an unacceptable level you could possibly have a 'hint' about disabling the effect pop up in whatever status message system your game uses...

Alternatively, you could have the game save the (average) FPS somewhere, and on the next launch you could give a pop-up while still in your launch menu, suggesting disabling the effect for smoother gameplay.

something else you could consider is to periodically check the FPS, and if it drops below an unacceptable level you could possibly have a 'hint' about disabling the effect pop up in whatever status message system your game uses...
That's precisely what I was about to suggest.

Don't use terms like 'fx' and 'fps' though. I was always told that you should write instructions as if they're going to be followed by an idiot. Assume an idiot isn't fluent in technical terms and abbreviations.

Maybe if the game runs slow, do nothing except monitor it. Then, when the player returns to the options/title screen, have a flashing "!" in the corner in a red circle or something. Click on that and tell the user which options they can disable to reduce the problem.

Have you tried the rendertotexture function in the fastlib extension library? The rendertotexture is alot faster than a copyrect. And it seems very stable too.

Thanks for the ideas guys!

I think I've come up with a good compromise. The glowfx will be on by default, but I've implemented my idea of dynamically reducing the 'glow' camera's render range as FPS drops and this works very well. A final tweak is to fade out the 'glow' quad that's in front of the main cam just before the glow fx is switched off - stops the glow fx appearing to flicker off/on abruptly.

The issue now is that a player may think 'I turned glow on but it doesn't seem to be showing on-screen?'
So perhaps just separate the glow into three options - off, on, dynamic and have a little pop up message to explain the difference.

RossC
Yep - using Tom's DX7Test.dll - rendertotexture.

Again, I wish Blitz3d was faster. It's got a lot of good points and flexibility, but it's looking increasingly clunky and archaic compared to other options (Unity/).

I dont really give a stuff about graphics, as long as the view range is good and the res is not horrid (1024 or 800(eew) is as low as i go dep on game). I like my games as smooth as babyskin and i sacrifice the the cool stuff one at a time until it runs so.

After that nice GFX / FX are a bonus.

I have a crap intel card and Vista. I could test it for you. If it works on my computer, it'll work everywhere :D This intel crap is a 945 chipset card, wich is very common on current labtops.

ziggy

Thanks for the offer. There is a software mode for the glowfx if the graphics card doesn't support rendertotexture, but the min spec for the game is a Nvidia 6600GT 128mb - a basic gamer's card at least.

I'm uploading a new widescreen test demo now - will post a link shortly.

Why not just tell the people to go into the options and change it (like have a message in the game) if it gets too slow? I think everyone would do it if they just knew how.

I a game popped up a message telling me to go into the options and change a setting my first though would be "why can't you do it for me?".

I like the idea of an automatic solution that kicks in when needed.

Trouble with a message is that given the slowdown would likely happen when there's a lot of action going on, the player could easily miss it or be irritated that the game had paused to let him know.

BTW; I've posted a new widescreen demo here;
http://www.blitzbasic.com/Community/posts.php?topic=79188

Ahem, that new widescreen demo's up

http://www.blitzbasic.com/Community/posts.php?topic=79188

But I'm also looking for non-widescreen users to give it a test.

I know I've released this demo before, but I need to upload a new build to my publishers and I'd really like the blitz community to give the demo a test first.

Any takers/tankers?

Why not use a fixed internal resolution and then setup a projector and render at whatever the end user wants? (While still maintaining widescreen support if needed.)

Why not use a fixed internal resolution and then setup a projector and render at whatever the end user wants?

Sorry - I don't understand what you mean by the above?
If by projector do you mean camera?

Isn't it possible to just measure the framerate and it if consistently (over a minute or so) drops below a certain value (say 20) it turns the feature off automatically? If the framerate goes backup for a sufficient time, turn the feature back on.

IMHO this is a much neater way of dealing with the problem.

Darkehart

If the framerate goes backup for a sufficient time, turn the feature back on.

Thus can still cause odd 'lurches' in the framerate and the player's likely to notice the glow flicking between on/off.

Better to dynamically reduce the glow on distant objects and if this doesn't give enough fps, turn the glow off entirely and then, as you say, turn the feature back on if framerates have been ok for a while.

I think it's time you reminded your publisher who wears the trowsers around here..