Peter "Durante" Thoman is the creator of PC downsampling tool GeDoSaTo and the modder behind Dark Soul's DSfix. He's previously analyzed the PC ports of Dark Souls II and Valkyria Chronicles for PC Gamer.
When Square-Enix announced ports of all three Final Fantasy XIII games (XIII, XIII-2 and Lightning Returns) to PC this September, it came as a surprise. The last Final Fantasy released on PC– excluding a few recent mobile ports—was Final Fantasy 8 in 1999. Would XIII’s port be any good? Square Enix promised support for a 60 fps framerate, but those mobile ports, like Final Fantasy III, haven’t exactly been promising. Sure enough, when Final Fantasy XIII was released on PC in October, it was limited to 720p and had other performance issues.
Since then, Square Enix promised to patch XIII and to support various resolution options at 60 fps with XIII-2, released on December 11. This article will investigate the quality of XIII-2’s port and Final Fantasy XIII, devoting particular attention to the controversial performance impact of the December patch.
The state of Final Fantasy XIII pre-patch
At release, everyone skeptical of Square Enix’s PC ports would be proven right. Final Fantasy XIII was locked at a 1280x720 rendering resolution, with no graphical options at all to speak of. Interestingly enough, the game also defaulted to using 4xMSAA, but more on that later.
Soon after release, I stepped in and provided a GeDoSaTo plugin which enabled support for arbitrary rendering resolutions.
The screenshot above was taken right after I first got arbitrary rendering resolution support to work. I continued extending the plugin to add support for higher-resolution shadows (you can see how necessary that is on Lightning’s arm and face in the shot above), higher levels of anti-aliasing and forced anisotropic filtering for UI elements.
What I could not fix was unstable performance and hiccups down from 60 FPS down to 30 on many systems. My current working theory is that this is related to the engine trying to perform some kind of frame pacing, but without access to the source code that is hard to ascertain.
The graphics options of FFXIII and FFXIII-2
After a few weeks of silence, Square-Enix announced that they would provide a patch adding graphic options to FFXIII, and that FFXIII-2 was to offer those options at release already. The resulting launcher screen is shown below. As both games ended up with the same options, I’ll simply show examples from FFXIII-2.
Resolution lists everything your system supports, shadow resolution goes from 512² to 8192², and anti-aliasing starts at 2x (due to the way the game renders transparency e.g. on hair, no AA at all is not supported) and goes up to 16x. If this selection of graphics options sounds familiar to you, that feeling is no surprise: with the exception of the missing anisotropic filtering, it’s the same selection as that offered by my GeDoSaTo plugin. Not only that, but both games even feature the same bug when rendering at 2560x1440 which occurred with GeDoSaTo. If you have a monitor of that native size, your best option is to apply at least some downsampling, either using your driver facilities or GeDoSaTo.
To be clear, I’m not complaining about this selection of options, or about taking inspiration from my work—that’s great. But with the relative luxury of source code access making more comprehensive changes much easier to accomplish, and professionals working on the game, wouldn’t it be nice to go beyond that?
Regardless of the provenance of these options, the real question is how effective they are. Let’s have a closer look.
The shadow resolution setting affects the resolution of real-time rendered character shadows. The following image shows a comparison between the moderate 1024x1024 and maximum 8192x8192 settings.
Shadows are notably more detailed, but more importantly—and sadly not visible in the image—they are far more stable in motion. However, the implementation of shadow resolution increases is somewhat half-baked. Using higher resolution shadows results in increasingly harder shadow boundaries, as the soft shadow filter is not being adjusted to match. Therefore, I’d suggest using a resolution in the 2048 to 4096 range.
While the settings screen shows a range of 2x to 16x “MSAA”, what is actually on offer at the higher levels is CSAA—understandable, as no hardware exists which actually supports 16xMSAA. In any case, it is extremely important in this context to note that unlike the vast majority of higher-end games over the past half-decade at least, Final Fantasy XIII and XIII-2 are pure forward renderers. What this means is that, unlike in most recent games which opt for deferred shading in order to support modern post-processing effects and a large number of lights more easily, hardware MSAA is both effective and relatively cheap in terms of performance.
If you look at the comparison image above at full resolution, you can easily see the difference between the two settings. Two types of objects are particularly affected by the AA level:
- High-contrast edges at an angle close to vertical/horizontal, for example the horizontal edge between the wood and the white area in the image. With 2xMSAA, there is only one intermediate (grey) step in the staircase, while 16xCSAA is perfectly smooth.
- Transparent objects such as hair. The FFXIII engine uses a so-called alpha-to-coverage technique to render such transparencies, which render them with less flickering and more detail with larger sampling counts. This is particularly apparent in motion.
Due to the relatively low performance impact and significant image quality advantages, I’d suggest using the highest quality anti-aliasing option supported by your hardware in these games.