How I create Goldanniyaech aroudn TSR

Introduction

My goal with this article is to present my workflow for working with TSR for my game Goldaniatech.

TSR has been a bit controversial since not so long ago (well, since a couple of years already), and I do believe that it alls stems from multiple misinterpretations.

The first main misinterpretation of TSR is to treat it like a filter or another anti-aliasing technique. Or worse, to try to avoid it entirely, which would produce a rendering similar to older games.

Historically, since the genesis of true real-time 3D game engines (Unreal Engine 1, Quake, Source…), players could choose between multiple anti-aliasing algorithms: MSAA, SSAA, FXAA…

Thus, it was just a different algorithm trying to solve artefacts, in this case aliasing, produced by the renderer. There wasn’t any necessity to build the pipeline around it, and supporting multiple algorithms was, well, possible 😅

This is why most games would give, on PC, choices to users on what algorithm to use for producing anti-aliasing.

However, since Unreal Engine 4 with TAA and now in UE5 with TSR, it’s not just an optional anti-aliasing algorithm. it’s a technology where the entire pipeline should revolve around it, almost treating Unreal Engine as TSR-centric and working around TSR for everything.

The second misinterpretation is to try to “get rid of TSR” and return to older methods, which is only going backward. With any new technology, some problems (even major problems) can occur, letting people think that “older methods” were better.

This is a fallacy: TSR is very helpful because it can help produce better results than before. So the goal is to adapt ourselves, instead of being nostalgic 😅

And, as I make everything from scratch (how lucky), I can fully optimize how the game looks and solve (or try to solve 😅) incompatibilities induced by TSR.

It also means that in teams (whether Indie or AAA), both programmers and 3D artists should have a deep understanding of TSR-oriented optimizations and how to solve most issues, maybe from the get-go to avoid fixing assets.

Thus, since Unreal 4, it’s a complete different development experience: you might not be able to give many options to players like before, because you need to optimise the entire workflow (Static & Skeletal Meshes with various issues, textures, etc.) around TSR.

Thus, it makes the idea of supporting old anti-aliasing techniques (FXAA, etc.) very difficult without HUGE drawbacks (and visual artefacts), especially because new technologies like micropolygons (Nanite), Unreal’s custom ray-tracing and global illumination (Lumen), virtual Shadow Maps and other things are deeply integrated with TSR.

The only way to support other anti-aliasing techniques is either to use fallback techniques (disable Nanite, etc.) or avoid relying entirely on Lumen/Nanite, which might be impossible without costing lot of time/money.

Besides, I firmly believe that it’s not about making other anti-aliasing options available. Instead, it’s about solving every single problem so TSR looks perfect all the time.