Welcome to the second part of this 3-part series on the PC port of Trails of Cold Steel. The first part dealt with lifting the performance of the game to a level that I consider acceptable – great even. Of course, you might now be wondering what to do with all that performance headroom if you’re planning to play on something faster than a GPD Win. After all, there isn’t really any need to run a turn-based JRPG at 300 FPS or more.
In this article I’ll introduce the various graphical settings I’ve added to the game, going into a bit more detail on some of them. I’ve been looking forward to this one in particular, so I hope you enjoy reading it as much as I did writing it.
Let’s start with a look at the game’s launcher:
There are a few things I’d like to remark on:
- Every single option has a description text, and often it also shows visual comparisons of the settings (on the right)
- The entire launcher you see here can be navigated just using a gamepad (actually, I made a tool for this that allows natural 2D-navigation and changing options in arbitrary C# WinForms dialogs using Xinput, and XSEED has graciously agreed to allow me to open source it, so look for that on my blog when things are less hectic)
- Can you spot the typo on this screenshot? It’s fixed by now.
The rest of this article will look at the options contained in the “Display”, “Image Quality”, “Shading” and “Graphics” sections of the launcher in order.
Here, you have the basic choice between windowed or fullscreen rendering with or without v-sync. In terms of framerate, there are 3 settings: a 30 FPS limit, a 60 FPS limit, and unlimited FPS. While the game was 30 FPS on consoles, in the PC version both 30 and 60 are fully supported. Unlimited variable FPS also work very well in all my testing, but are not fully QA’d throughout the game and offered on a “your own risk” basis.
Finally, I’ve also added an option for adjusting the Field of View (FoV). While not as important as in first-person games, playing close to a large monitor often makes a larger Field of View desirable. Here you see a comparison between the default FoV (left) and a very high setting (I wouldn’t personally choose one this high, it’s just for illustration):
This section deals with resolution, anti-aliasing (AA) and texture filtering. Resolution works as you would expect. In terms of anti-aliasing, MSAA 2x, 4x and 8x are supported, and transparency supersampling(TrSSAA) is there as a high-end option to improve the quality of alpha-tested surfaces. It was strange to discover that TrSSAA is actually significantly more difficult to implement in DX11 than it is in Direct3D 9 or OpenGL, but at least that explains why so few games offer it. Here is a comparison to show what each option does – of course, the difference is much more pronounced in motion:
Before we move on to shading, there’s one thing I need to get off my chest. You know what really annoys me? When games offer some AA option, but do not apply that AA solution consistently to everything in the game (like e.g. character models in menus.) I had to extend the underlying engine to do it, but rest assured that when you select an AA option in Trails of Cold Steel on PC, everything will get that level of AA:
- The main game rendering will be AA’d of course.
- The rendered character dialogue portraits will also get the AA.
- The character models shown on the equip screen? AA’d.
- Character busts during special events? AA’d.
- Yes, even the minimap rendering gets MSAA. And TrSSA. Because why not!
Oh, and there’s an anisotropic filtering option. It’s just a checkbox, because honestly, there’s no reason to bother with less than 16xAF for this game. Even the GPD Win can do it!
Now this is where things get even more interesting. There are four options related to the quality of dynamic shadows:
- Shadow Resolution, which, as you’d expect, adjusts the resolution of the shadow maps all the way from “low” to “absurd”.
- Shadow Casters, changing which objects cast shadows. Shadows are often enabled only selectively for performance reasons, with artists manually selecting which objects and characters are sufficiently “important” to cast shadows. This setting overrides that selection and makes every object in the scene cast a shadow.
- Shadow Distance, which can increase the distance shadows are cast at. Ever annoyed by shadows appearing and disappearing a few meters in front of you? I know I am. Well, not on my watch.
- Finally, Shadow Filtering enables softer and more aesthetically pleasing shadow transitions.
Even with these improved real-time shadows, the game’s environments still looked a bit flat. Since the environments, unlike the characters’ cel shading, are rendered and shaded in a more realistic style, I thought that a more realistic modern technique, namely ambient occlusion, might look good. With some engine improvements I was able to integrate HBAO+, one of the highest-quality and best-performing AO solutions available:
As you can see, it lends everything a lot more depth and plasticity, and also makes objects in the shadows appear more grounded.
Last, but certainly not least, the “Graphics” options seem comparatively unexciting with just two checkboxes: and really, the High Quality Depth of Field setting just does what it says on the tin and while it’s a nice improvement, it’s nothing to write home about.
On the other hand, the Unlimited Draw Distance option is, and excuse me if I say so myself, a really big deal. In fact, doing something about the draw distance was one of the very first requests that came up when the first article was posted. What I’ve done about it is completely eliminate any form of pop-in, by making all objects and characters draw at any range. On some maps this is quite a significant extra CPU load, especially combined with full shadow casters, but nothing a modern Desktop PC can’t easily deal with.
Since pop-in is hard to demonstrate in images, I’ve made a video that really shows off the considerable effect of this option.
Other Improvements and Conclusion
In addition to these options, there are a few graphical improvements over the console version that are “always on” and don’t have a launcher option. For example, the glow effects are rendered at 4 times the fidelity, and uncompressed textures are used instead of the compressed assets designed for consoles wherever they were available.
I hope you’ll enjoy these graphical improvements as much as I enjoyed creating them and writing about them. In the final article, we’ll have a look at some non-graphical features, and one particular, somewhat programming-intensive graphical option that will make a few people really happy and which I never expected XSEED to go for. Till then!