Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have been developing a game engine, and have been discovering and reading up on game technologies such as anisotropic filtering, ambient occlusion, anti-aliasing, etc.

Usually in games, you can toggle these settings on and off. However, if these settings only add nothing but positive, is there a reason to add toggle values for these in a game engine for the developer?

I understand that performance is a major factor, but is there any other reason why these settings are always available to change?

share|improve this question
68  
Is performance alone not a sufficient reason? If a player's hardware can't support all of these features at a playable framerate, that alone sounds like a compelling reason to allow them to disable some. – DMGregory Feb 29 at 22:02
3  
IF your hardware cannot handle some of the effects, then they aren't positive at all as you say... By being flexible on what your engine can and cannot do, more people can play your games/use your engine. Lowering the graphics but keeping the core gameplay sure is handy for some people. – rlam12 Feb 29 at 22:16
3  
Quake had an option to almost completely disable textures and graphics to barest minimum, so that only the core gameplay elements would be rendered as fast as possible, offering the smoothest gameplay at the cost of visuals. There sure was a very good reason for that. – user1306322 Mar 1 at 10:41
9  
View bobbing and motion blur can literally make me sick in some games. Clearly a lot of people think they're good, since they seem to be turned on in almost every game, but I would return your game with a poor review if you didn't give an option to turn them off. – Patrick M Mar 1 at 19:56
2  
@PatrickM Affordances for players who experience simulation sickness sounds like it would make another good answer in its own right. :) – DMGregory Mar 1 at 20:32

Performance is generally the major reason these features can be switched on and off by the user. Generally, they are expensive, and by allowing users to toggle them off a developer broadens the set of machines that effectively run the game to include more lower-end machines. This translates to potentially more players, and thus potentially more sales (assuming those players can live with the decreased visual fidelity).

These advanced features might also incur more of a hit to battery life or fan output, as @Artelius pointed out, and so users might want to disable them for those reasons.

Finally, it simply to provide users with a choice about what they prefer. Some people may not like how anti-aliasing looks, or how disabling v-sync can cause screen tearing. Or for a more practical example, consider Pillars of Eternity, which has an option to enable or disable font ligatures. These probably don't cost that much in terms of runtime performance, but some users may find the text harder to read with them. Or (as @SeanMiddleditch points out), one might want to disable a feature because it's buggy on an individual machine. Or one might want to disable a feature to get a competitive advantage (such as by disabling noisy visual effects that distract from mechanics).

share|improve this answer
12  
Another reason users may want to turn off computationally expensive effects is to conserve battery life or reduce heat and fan noise. – Artelius Feb 29 at 23:43
14  
As a footnote, it's important to remember which settings can be disabled while you are designing critical game balance/features. For a while, enemy smoke grenades in BF4 could be nullfied by disabling a graphic option. Oops. – Jon Mar 1 at 0:12
25  
Another reason is to allow workarounds for bugs. A user's particular hardware might crash or badly misrender a scene with the game's implementation of a certain post-processing effect, for instance, or higher settings' greater memory usage might lead to crashes on some machines and not just perf loss. I had one case of a GPU that overheated easily and being able to lower settings until I got a new helped to avoid GPU driver crashes/resets. – Sean Middleditch Mar 1 at 0:57
1  
The Witcher 3 is a great example with HairWorks. Performance aside, there are a lot of people who would like to turn it on for everything except Geralt (the player character). They say HairWorks makes animals look great, but at the same time it makes Geralt's hair look awful. I don't care either way, but I can see why they'd feel that way. – Nolonar Mar 1 at 16:50
2  
I turn off a lot of "fluff" effects so I can focus on the game itself. Often times, items are hidden on the ground in grass and shrubs. Those grasses disappear or are more static/thinner on lower graphics settings allowing me to see items on the ground. Spell effects also make it hard to aim on small flying creatures, so having lower spell effects makes the particle cloud smaller and dissipate faster. One other reason is lowering gore details gives me a little buffer time if my 5 year old waltzes in unannounced. – corsiKa Mar 1 at 17:14

As Josh Petrie already pointed out, the most important concern is performance. Not only can't you know how powerful the end-users hardware is, when you are building an engine you don't even know how people are going to use it. Maybe the game developers want to build a game which puts so many polygons on the screen that even the best hardware can't render it in real-time without switching off the effects? But handling that automatically might not be a good idea either: Maybe the developers want to decide which effects to disable on which objects.

But besides performance, it can also be of aesthetic concern.

For example, switching from anisotropic filtering to nearest-neighbor interpolation and using low-resolution textures or upscaled sprites leads to a nostalgic pixel-art look. A popular example of a game which does this is Minecraft. And of course the many games which copy its aesthetics. Not because they don't know how to do better, but because they don't want to.

share|improve this answer
3  
But if a game were designed to look pixelated... why would you give the user an option to change that at all? Does Minecraft actually have a way to turn on linear filtering? – Nicol Bolas Mar 1 at 2:52
6  
@NicolBolas The question was asking " is there a reason to add toggle values for these in a game engine for the developer". In interpreted this as asking about the developer perspective. – Philipp Mar 1 at 8:55
1  
To me, the question seems clearly focused on user facing "toggle values", not the actual in-OpenGL/D3D/etc parameter settings. That is "for the developer" refers to developers adding the user facing option, not developers using the APIs. – Nicol Bolas Mar 1 at 13:47

Of course, performance. Some effects such as Crepuscular Rays, Depth of Field and Bloom are very taxing of fps, in particular in older GPUs. Also a good way to gain some extra fps is to reduce or disable reflections and shadows. Also - to repeat Artelius point - visual effects will also hit battery life.

Besides that:

  • Some effects may be glitchy. Not all machines are made equal, and some GPU may handle wrong your code... having a way to disable effects is good for the players suffering from such cases, and is good for the developers for ease of debugging.
  • Some effects may handicap gameplay. In particular effects that hide details, such as Depth of Field, Motion Blur and to a lesser extend Anisotropic filtering and Anti-aliasing.
  • Some effects may be annoying / distracting. That happens to me with Depth of Field, when the focus changes, it litteraly drives attention to it.
  • Some effects should be considered for Accessibility Options. This is the case of View Bobbing and Motion Blur, these can make some people sick, no joke.
  • Some effects should be considered for Parental Control. Turning off blood particle effects and similar - at least it helps with parental game reviews.

Modded Minecraft is really a good playground for this. Minecraft renders whole chunks, so its polygon count is greater than it appears to be. Add to that the complications of disposing chunks on a garbage collected and devoid of pointer language such as Java[1], and you may expect some performance issues - in particular, in old hardware, as always. Some people demanded better graphics, while others wanted better performance. And so, mods such as GLSL Shaders Mod and Optifine came to be, both adding extra graphic options - although to different ends - they are compatible[2], if you have the chance to use them you may experiment on the performance effects of the visual effects.

[1]: Microsoft has made a C++ port of Minecraft for Windows 10 - based on the pocket edition - it performs much better than the older Java versions. That's not mean Java can't perform, this is not only a symptom of being C++ but also of being Microsoft.

[2]: In fact, those mods merged for Minecraft 1.8.9 - Optifine absorbed GLSL Shaders Mod.


And you say you are developing a game engine, so you expect your code to have a chance of being reused for many different games. It is a good idea to allow the game developer to decide if they want to use these effects, and if they want provide options to disable them or not. Not all effects may make sense for all games, and some games may depend on some effects.

Consider that some games will use these effects to set a mood, to convey information to the player, or just for artistic license.

In particular there is tred of using visual effects to try to make the look as if seen by a camera instead of the human eye. This is attempted by using effects such as Chromatic Aberrations, Lens Flares, Film grain and other "Cinematic" effects. These are not a good fit for every game, and so they shouldn't be imposed by the game engine.

Arguably most of this - if not all - is done in shaders, let your game engine allow the developer to upload their shaders.


A note on Accessibility Options: Many video games disregard deaf people. Providing information only in auditory manner may not be good enough. Adding visual effects to reflect things such as the direction of incoming fire or the presence of nearby enemies (that you "can hear") is a good idea[3]. And of course, close caption. Also, be aware that there is color blind people... those items that are only distinguished by color... yeah, considered a redesign.

[3]: You just don't know what a pain are those creepers in Minecraft, when you can't hear not even a hiss. They become random instadeath.

The more you know ★

share|improve this answer
2  
+1 for the accessibility options note! I myself have good hearing, but back when I was starting out with video games, I didn't speak good English. Having written text in addition to sounds can help tremendously when you're unsure what's going on. – AndrejaKo Mar 2 at 18:21

Something not mentioned by others yet:

Disabling graphics features might be a valid workaround for problems with a certain setup, unrelated to performance.

Just one example, some graphics options simply don't work correctly with a given rendering engine when running a Windows game on Wine (the Windows compatibility layer for Linux).

For a certain (intentionally unnamed) game, I need to tune down filtering to trilinear, and disable reflections. Not because my rig is not up to it (it certainly is), but because of rendering glitches and crashes if I don't.

In another game, you had to disable "fog" effects for any rig running nVidia cards (even on native Windows), because they always rendered the fog 100% opaque.


Something that is mentioned in other answers / comments, but is actually a reason not to make certain settings (like foliage density, gras) optional:

Visibility of opponents in competitive games.

If players can gain a competitive advantage by setting the "looks" of your game to "really bad", you're hurting the game experience in two ways:

  • competitive players will only get to see a "bad looking" game;
  • recreational players will be at a (potentially significant) disadvantage unrelated to skill, simply for preferring a good-looking game.

Avoid that if at all possible. Make gras and foliage look clunky for low-performance rigs, but make sure that lower settings do not give a gameplay advantage.

share|improve this answer

Clarity of view in competitive games

Players in competitive online games may well prefer a simpler or clearer view to a more beautiful view even if performance is not a concern - many visual options add visual realism but obscure the things that players actually want to see.

It may easily be that in your game it is easier to notice or target an enemy if you configure the game client to disable all kinds of extra grass or leaves, special effects, smoke/fog/fire, etc. This places players who enable such effects at a disadvantage.

share|improve this answer
2  
Reminds me of Rust: Turn grass off and there is no more place to hide! – Gigala Mar 2 at 11:45
3  
This answer gives a very good reason not to make such settings optional. I should not have to chose between "good looking" and "competitive". Competitiveness should not be adjustable, and certainly not by the same slider that decides about looks. – DevSolar Mar 2 at 13:24
    
@DevSolar not making it optional doesn't make it not possible though (e.g. wallhacking) – Joel Bosveld Mar 4 at 8:29
    
@JoelBosveld: Avoiding wallhacking etc. doesn't have anything to do with the OP's question, though. Making foliage optional does... – DevSolar Mar 4 at 8:33

The other answers are good, but I think they lack good examples of actual effects that you might want to turn off.

For me, the really cheap and awful "motion blur" that for example GTA3 had, made the game worse. Luckily I could turn it off.

Haven't played it, but what I've seen from GTA5 is another quite hacky solution that i would disable if I ever try GTA5. (see https://www.youtube.com/watch?v=VjIhl8hbO18)

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.