These features will set any PC port ahead of its console counterpart, and while they may not be necessary on consoles, they're extremely important on PC given the variety of PC hardware.
Field of View and Aspect Ratio
These two options come as a set, as meaningfully supporting each of them requires also supporting the other. The argument for their importance is much like for resolutions: PCs are connected to a wide variety of output devices, which induce distinct fields of view and aspect ratios.
In most 3D games, supporting these two options should not be too difficult. As with arbitrary resolution support, one sticking point can be HUD elements—these should be implemented both resolution- and AR-independent from the start.
Wide AR and FoV can offer a new perspective on scenes, such as in this Remember Me screenshot. (Screenshot source: Spazznid at NeoGAF)
Scalable User Interface
Displays can differ not only in size, but also in pixel density—PC games are played on anything from 350 PPI laptop screens to 40 PPI TVs. Furthermore, with downsampling becoming ever easier and more widely used, a significant number of gamers will want to take advantage of resolutions larger than their hardware’s native setting. Supporting user-defined UI scaling greatly improves a game’s flexibility in matching these scenarios. This is of particular importance for console ports, which generally target a very different usage scenario and can consequently appear clunky and oversized on PC.
In terms of implementation effort, this feature can range from very simple to somewhat labor-intensive, mostly dependent on how many different types of UI are present in a game, and how complex they are. Once again, thinking about this from the start of the project will be far easier than trying to retrofit it. In case a fully customizable scaling is too much effort to justify, making HUD element size independent of resolution is generally the better choice.
Going into every single graphics options individually will take forever, so I’ll summarize them in this section. Graphics options serve two primary purposes on PC:
- Performance Scaling, allowing a wide variety of hardware platforms to enjoy the game at a quality level which makes good use of the hardware and provides adequate performance.
- Customization, allowing players to pick and choose individual options according to their preferences.
Generally, this is a case of “more is better.” It’s never a bad idea to provide more fine-grained control as long as the user experience and implementation hints discussed later are honored.
Implementation difficulty for these options varies. Many graphical effects are very simple to scale effectively: texture resolution, shadow map resolution and filtering quality, LoD transition distances or the number of taps in various post-processing filters. Others might require some more implementation work, such as a higher-quality ambient occlusion.
Anti-aliasing deserves some consideration on its own. Back when forward rendering was the standard, this was straightforward (ha)—you have your 2x, 4x and 8x levels of MSAA, and perhaps some CSAA. Now, there is a very wide variety. What developers should strive to achieve is offering some in-game option that goes beyond simple postprocessing. Not every game can be Crysis 3 in this regard, but they should strive to be.
These features will win over a loyal fanbase of PC players, and often keep them playing the game for months or years. This is going above and beyond.
Nothing prolongs the lifespan of a PC game more than support for user-created content. Games without dedicated mod support sometimes get modified, but large communities—translating into a large target audience—tend to form around games built for modding, like Bethesda’s RPGs. I know several people who got into PC gaming at first simply to enjoy modded Oblivion or Skyrim.
Of all the features discussed in this article, full modding support might be the most complex to implement and maintain. However, there are gradual steps that can easily be taken with very little effort, and immensely ease the life of modders. One such step is documenting all custom file formats used by a game, and ideally offering tools to work with them.
Free Camera, Timestop and HUD Hiding
A growing subset of PC gaming enthusiasts enjoy setting up “perfect” screenshots of games and showing them off online. This is clearly useful for developers and publishers as well, as I’ve seen many such screenshots which look better than any official marketing material.
Three essential tools for taking such screenshots are free camera controls, a timestop feature and the possibility of hiding all on-screen HUD elements. The first simply allows moving the camera to any position and pointing it in any direction in order to set up a shot. This is made much easier by the second, which freezes the in-game action in time, while the third hides distracting elements from the resulting picture.
All of these have been hacked into many games, using external tools which modify the executable in-memory or graphics interceptors such as my own GeDoSaTo. However, direct in-game support is both much easier to implement and far more reliable than mod tools.
Individual Effect and Rendering Control
A final option enthusiasts appreciate is full control over individual effects in a game’s rendering pipeline. While for most gamers, having an “Effects” option which goes from “low” to “high” is sufficient, enthusiasts would prefer more fine-grained control. For example, I might want to have full, high-quality motion blur and HDR, but disable chromatic aberration and use only slight color grading.
The color grading effect in Resident Evil 5 was controversial, and many prefer to turn it off. (Screenshot source: Alo81 at NeoGAF)
For these options, the major implementation effort would likely go into UI work and testing, so it makes sense to offer them unofficially, perhaps accessible through an in-game console (if one is already implemented), or by editing configuration files.