In typical Derjyn fashion, I’m about to blather on forever. This is practically a full article or blog post at this point; I have a lot to get off my chest here. I want to preface and stress that I come from a place of developer love, and I respect and appreciate those who contribute to this dialogue. Tone and intent rarely translates well via written word, but try not to take mine offensively. I am a snarky, blunt sunnuvagun. I also probably maybe might not know what the hell I’m talking about.
I truly hope the community shifts towards radical honesty and puts in effort to find solutions, and supports evolution. Digging our heels in and only contributing complaints is quite obviously not helpful. Sharing feedback has a place and is welcomed - if not needed and sought out. With this topic though, there needs to be more objective discussion with the aforementioned honesty front and center. We need to take responsibility for our parts in the equation, accepting the reality that there isn’t always an easy button.
In response to @Tiraelina:
Welcome to the fact rendering engineers are pretty few and far between
Are they, though? And if this were true, is that Epic’s fault?
and this engine has been marketed to those that are not?
Has it, though? I’m not a rendering engineer by specialty, I’m able to use the engine and also capable of learning new skills (that will persist and help me far into the future). Again, not Epic’s or the engine’s nefarious plots and doings. Also think on the fact that most tools, resources, really anything across the board - has the goal to do more stuff, at higher quality, in an easier fashion. If that’s perceived as targeted marketing to those that are not… well that’s a matter of perception.
There is no proven or theoretical solutions to TAA.
Ah, this is a great moment where I hope people keep an open mind, and potentially start shifting the way they think about all this. First, what do we use TAA for? To remove jaggies, yeah? Okay. Now we have the root problem: removing jaggies. Everyone is insanely worked up for… wow, years now, because they want to remove aliasing artifacts. That’s a big focal point in the big picture of UE being bad.
People will lock up their progress, put a ton of effort into voicing their frustrations, and consider the possibility that there is some controversy, simply because they can’t find an acceptable solution for aliasing. Let that simmer for a bit. Ugly rough edges need to go away, TAA (which is used in plenty of engines and applications outside of UE) has some painful trade-offs when there is a lack of advanced configuration efforts.
Side note: I’m confused what the exact “problem” is concerning TAA, that needs solving. Every anti-aliasing solution has trade-offs / compromises that need to be understood and explored. If you’re an indie/hobbyist, that task is on your todo list. If you’re a studio, that would be Joe Schmoe’s job. I think we’re all aware of the cons of TAA and I’d hope after years everybody is on the same page. If someone is new to this scene, the ignorance makes sense. If they’ve been around for a good bit though, they need to stop going around and around and around in circles. If someone is locked in to using TAA, they should do their homework and configure things as tightly as they can for their specific project and move on to other tasks. I don’t doubt that there are cases where TAA was the sole culprit for stopping a serious project in its tracks, but I have yet to see it personally.
Oh but there’s forks freely usable to solve this? So why didn’t you list any?
I don’t stoop (anymore) to plopping down those not-so-passive-aggressive “LMGTFY” widgets any more, but instead I’ll do worse:
Derjyn’s Super Awesome GitHub Tutorial
- Step 1: Head to the Unreal Engine repository [1]
- Step 2: Click on the “Insights” item located at the top repo navigation bar
- Step 3: Click “Forks” menu entry found on left navigation panel
- Step 4: Explore
- Step 5: (Optional) Utilize the search function at GitHub [2]. It’s actually very powerful, and learning more about its usage is a soft-skill worth gaining. Crap. I just kinda did the LMGTFY thing…
I leave the discovery bit to the skilled developer. There are many interesting forks of the engine. Hundreds. Some are boring churn forks, some forks are student works from a course, but amongst the many forks, there are some gems. Including many with alternative solutions for the show-stopping aliasing issue that non-rendering engineers might be able to utilize.
To directly answer the question of why I didn’t list any: First, I assume people who are truly affected by aliasing issues in their project(s) are capable and determined enough to research (foundational skill, very important in all sectors of game development) direct and alternative solutions.
I haven’t personally searched on Fab yet, but I would not be surprised if people have paid products there that bank on people unable or unwilling to implement an acceptable or downright awesome anti-aliasing solution. Well, as I wrote this, yes. “CMAA2” [3], and it’s $19.99 USD, and it’s made by the same fellow that create the “Screen Space Fog Scattering” plugin, which is pretty nifty. CMAA is a valid alternative to TAA, but guess what? Compromise! Yayyyy, compromise, the friendly monster that plagues just about every nook and cranny of game development, yayyyy…
Maybe it should mean something when multiple released games by teams making use of Unreal have little performance benefits going from highest to lowest. Nanite doesn’t even come with scalability settings. Ray tracing might have 1 or 2. Everything relying on temporal effects gets their issues magnified far, far worse at lower performance levels.
Ehhhh… I’ll give you this: definitely room for improvement. What I won’t give you, is a nod in agreeance. Those are all problems solvable with more knowledge and skill, along with grit and determination and the application of invested time to deliver a pretty and performant title for humbly spec’d rigs. This is more of the radical honesty (or sharp bluntness, which is fun to say): those teams/studios/individuals did it (the all encompassing “it”) wrong. Plain and simple.
Concerning “Nanite doesn’t even come with scalability settings”… Okay no easy button on that one, perhaps. Head here though (you can also make a fancy export of all console commands yourself, fun side adventure if you weren’t aware), type r.Nanite
and wait a second for the results to filter in. Honestly, tell me we don’t have configuration knobs to turn after reviewing that. With the elbow grease I keep talking about, you could even turn a lot of those variables into settings in your game’s options menu and blow your fans away by being the first studio to apply said elbow grease. While you’re at it, ask yourself why “so many released titles” don’t do such things. *shakes fist at UE*
Labeling everyone pointing out the pink elephant in the room as grifters or frauds is scummy.
It certainly is, and I’m glad I wasn’t labeling everyone; Just the grifters and frauds that are profiting in one way or another from the noise. Hopefully I made people that aren’t quite being honest uncomfortable though! A somewhat intended side-effect of exploring uncomfortable truths, is that it might evoke some exploration into whether or not we are doing something wrong, and we can do it right and see some gains through that exploration.
People (while I’m responding to you, what I’m saying here isn’t directed at you, rather rhetorical) need to start taking responsibility, adjust their expectations (e.g., seeking out that easy/free button), and waving off people who have an alternative and potentially more valid angle on this topic.
There is something I want to get off my chest, and it’s more of a personal issue. I realize I’ve been getting fired up across many platforms, trying to get people to be more objective about the issues concerning the engine (along with other engine-agnostic development/design concepts). In the last couple of years, I’ve seen more and more people refusing to explore productive paths forward, and instead settle into this willingly naive, stubborn and ultimately opinionated stance.
I’ve tried to exercise empathy, looking at case-by-case examples of potential evidence that the engine is the basal cause of failed games and stalled growth for indies/hobbyists. Seriously meditating though, after seeing enough negative anti-progress from beginner developers, jaded veterans, or your average gamer… It’s hard to empathize now, because that would mean aligning with a core truth no one is willing to admit: people want an easy button, and they’re ticked off it isn’t there.
Epic and many third-parties go to great lengths to educate and document optimization best-practices, both specifically for the engine, and in their pipeline/workflows. The fact that an established studio with professional talent needs to be told how to freakin’ follow proven best-practices and test, debug, etc… that’s insane and to show a bit of my frustration - the stupidest, weakest, elephant in the room cop-out I’ve seen in a hot minute.
The bottom line is this: you can make a performant and beautiful game with the current version of the engine. If you or your multi-million dollar budgeted studio can’t accomplish this, you have options. Quick and dirty: A) choose an alternative environment, there are dozens of engines out there. B) Go back to school, teach yourself more, phone a friend… whatever it takes to fill in gaps in your knowledgebase.
I see a lot of beginners hit the wall and refuse to accept they just aren’t good enough yet. Rather than put in the time, the sweat, the broken keyboards… They avoid taking responsibility. They blame external factors/entities for their inadequacies. They quit. Application development, and more so with game development specifically, is hard freaking work.
If you’re old enough to have perspective, think of texture work as an example of the evolution of DCC tools and our workflows. Over the last say, 20 years, we went from hand painting pixels to having the hard choice of what Quixel surface to use for dirt layer for any given (anyone say performance budget chomper) auto-landscape material. Now people hate Quixel because they “started charging” like the apparent nefarious criminals they are. That right there is a prime example this is synonymous with how people are behaving with Epic/UE on the topic of performance issues.
All this inefficient behavior by so many people has been distracting me, which is that “personal” bit I mentioned previously. That’s a me problem, which is getting harder to avoid falling into. I can’t scroll on any feed without seeing some anti-UE related material. Consistently it’s content created by non-experts who have self-endowed authority. And so many gamers are outspoken now, that it has become rare to see any objective review or insight into a game utilizing UE, because the knee-jerk judgement is it’s trash that has stutter and ghosting. I mean, they’re not wrong, but they kinda are.
The engine will forever be needing fixes. It will always need improving. If anyone knows of an engine that has avoided this vicious cycle, I’m all ears. I’ve decided to scrap my two major personal projects that have been utilizing UE and have decided to start over using Torque 1.2 [4], in the hopes that I will beat out all my competition purely on the basis that it isn’t related to UE and no whipper-snapper YouTubers are alive any more that even know what it is, so I’ll get retro points. Plus, by default it will look old so I won’t even have to use rendering/VFX budget to make it look as such. Like pre-torn jeans or whatever. Even better, I’ll get to use Hammer and Milkshape 3D. Dope.
Circling back to the focal point: aliasing. I’m no rendering engineer expert, not even close. However it’s my understanding that you can flip a few switches, speak some words in a dead language, and get the engine into a state of no anti-aliasing being active [5]. Raw, ugly jaggies. From there you implement a novel (erm, alternative rather) anti-aliasing technique. There are tons of them, many you can find papers on that detail integration and have source code. Here are some commonly known ones:
- SSAA
- SMAA
- EQAA
- SGSSAA
- TRMSAA
- TRSSAA
- And many more!
In my exploration adventures, I’ve come across a technique that has stuck in my brain pretty hard, and even with my limited technical expertise on the rendering front, I’m going to learn more and give a stab at integrating it via post-processing or more likely a plugin: AAA, or Analytical Anti-Aliasing.
However, if in the end I have to stick with TAA/TSR? That’s okay. I won’t let anti-aliasing issues and side-effects halt my progress. I’ll suck it up, and work around it. There are a literal metric poop ton of variables and tweaks to get it looking and running better than stock, and I’m okay with that. I’d rather spend my development cycles making my game(s) awesome and engaging, with great storylines, interesting characters, addicting loops, and all that jazz… to the point players have fun and don’t care about anti-aliasing. That should be a fine scrutiny bullet point in a review, not the effing focal point of a shipped game.
Stutters. Long load times. Pop-in. Yup, it can all be mitigated. It’s work, but it’s work that we can actually do; it’s not unachievable or paygated. There’s documentation for it. Outside of focused solutions and best-practices, there are basic, foundational industry wisdoms and common practices that for some reason, are becoming dark arts nowadays. I’ll give one quick example: texel density. It’s cool to slap 4K textures on everything and chew up VRAM and package sizes, apparently. Of course, I’ve seen plenty of titles that still look like garbage with 4K on everything, because inexperienced artists with no understanding of composition, general color theory, style and tone parity, etc thought that using the 4K cheat code was “good enough”. Oddly enough, this approach adds to the poor performance issue pile.
If studios/indies can’t start out with performance in mind, maintain parity with their technical budgets as they progress, while delivering a visual treat and solid gameplay… That just doesn’t track as an engine issue to me. Especially when we have available to us, more debugging and performance tracking tools than I want to think about. Especially when we have engine-centric documentation concerning best-practices and battle-tested workflows and solutions right in our noses.
On Epic’s (and external contributors’) end, there is more work to be done. I won’t deny that. It’s just not to the extreme level of responsibility so many entitled naysayers shout from the rooftops about. On our end, we kind of have to put in some elbow grease and use our grey matter. I’ll keep hammering this nail, and if someone is offended by it, I might be sorry, but probably not - it’s likely offensive because it applies to you concretely: people (up to and including big powerful studios) need to stop being so [expletive here] lazy.
Suck it up and fix performance issues across spec targets, not just the top end super rigs. Suck it up and implement alternative anti-aliasing techniques, if default offerings look like trash in a project/title. I want easy and free as well. Who wouldn’t? It’s just not realistic and, until it is we need to work with what we’ve got. Historically that’s been the amazing part of the game development scene and communities: making dope interactive art with minimal resources.
Let’s reel this toxic time wasting bee-ess in a little, and concentrate on that part of game dev. It’s completely possible to hold Epic accountable and lean into them to give us better than we have, while also keeping the tone objective and productive. I’m not blindly defending UE with my Epic superfan cape flapping in the wind here; replace “UE” with any other engine, and I’d have the same resultant mentality.
[1] - https://github.com/EpicGames/UnrealEngine
[2] - Understanding the search syntax - GitHub Docs
[3] - CMAA2 (Anti-Aliasing) | Fab
[4] - Torque Game Tools : GarageGames : Free Download, Borrow, and Streaming : Internet Archive
[5] - r.AntiAliasingMethod 0
… maybe?