People seem to have all kinds of views on what Unreal Engine 5 is, which mostly depends on how long you have used Unreal Engine previously, what kind of projects you have made, or whether you are interested in technical details of development at all. I will look at this from experienced Unreal Engine 4 developers point of view, going through many features and details which have changed in UE 5. Before I go to details, I like to tell about my views during this transition process.
This proved to be too long story for Substack to publish as one newsletter, so I have to publish this in several parts.
Long Journey of UE 4
In order to get some perspective for all of this, I like to point out that even the development of Unreal Engine 4 has been a huge project, starting from early 2014. I have made this condensed video presenting how UE 4 has evolved, year by year, version by version. It is very easy to take all this for granted, although there is a tremendous amount of planning and work behind all this.
I want to make it clear that even when I critisize strongly some new development lines in Unreal Engine, I do it because I care about UE in general, and I still have lots of respect for all developers involved in making this engine, editor and development tools. Those developers have done a magnificent job, but like all developers, even they are human, and humans make mistakes sometimes, or make incomplete plans, or do not have enough time to implement what was planned. Development of game engine and editor is a very, very complex project.
When UE 4 was started, the game development was quite different than now. Most games used much simpler graphics, for example. Physically Based Rendering was just starting to get more common, but still many games were developed with those graphics pipelines that studios had used for years. Things like Subsurface Scattering came even later.
Virtual Reality was still an infant, and only a few developed something with experimental and clumsy Oculus Dev Kits. Year later there was HTC Vive and Steam VR, but everything was very experimental in VR until the end of 2017, when VR got more momentum. Years 2016 and 2017 were interesting for a VR developer, because you had to develop everything yourself. We even won couple of competitions and got Epic MegaGrant. Unfortunately it also showed how toxic and abusive the VR gamer scene can be.
By the year 2020, Unreal Engine was full of interesting features, added in numerous iterations of the engine and editor, and it had been free for 5 years. In my honest opinion, Unreal Engine was more than adequate as UE 4.25. It had all the features I think were necessary to general purpose game engine, and even some which were not-so-necessary. My point is, that there are so many different types of games and different needs, so it is not wise to cram everything (and kitchen sink) into one engine. By this time the planning and development of next generation UE was revealed, although only as a video presentation. It took another year, before Unreal Engine 5 Early Access version was released to general public.
Transition from UE 4 to UE 5
I guess the whole world knows about Unreal Engine 5 by now, at least the gaming and game development world, but it gained immediately lots of fuss in digital media production and among Metaverse enthusiasts. Main attraction of UE 5 - used heavily in all marketing - was its next level visual features, ultrarealistic real-time graphics which could be used in film and tv virtual productions, architectural visualisations, product presentation, simulations and games.
As a game developer I was disappointed. Realistic graphics are fine, but… graphics alone do not make any games better. There are lots of games with stylized, blocky or pixelized graphics, and yet those games have hooked players for years. I was disappointed because the announcement focused mostly on features which seem to be important for other media production, not games development. I can understand that non-developers wet their pants, when they see gorgeous graphics, and how you can blend them with the material you shoot with real cameras. They think about big productions and money. Developer looks at tools, stability, performance and mechanics under the hood.
When UE 5 was announced, there were 3 key points in the announcement - new lighting system called Lumen, new mesh system called Nanite, and finally the promise of UE 4 compatibility, which claimed that UE 4 projects could be continued immediately in UE 5, just open your old UE 4 project in UE 5 and everything works. There was of course Chaos Physics too, but that was nothing new. Chaos physics had been already introduced in UE 4… rather unsuccesfully. Chaos Physics was planned to work in UE 4.25, but Epic Games had to pull back couple of times, and keep it it as optional feature (which you had to compile yourself) while PhysX was used as default physics engine until the end of UE 4.27.
Both Lumen and Nanite sound wonderful, of course, although I was a bit sceptical. But the third point - UE 4 and UE 5 compatibility - that made me wonder. In order to work out that kind of stunt, either UE 5 is mostly similar to UE 4, or there are some really clever automatic conversion tools integrated to UE Editor. But… neither of these sounded convincing. Quite soon Epic realeased Unreal Engine 5 Early Access edition, and after that the final UE 4.27, both of them only increasing my scepticism. UE 5 EA was in some ways impressive, and in some other ways quite shoddy. Again, Chaos physics had caused problems, and it remained optional.
Based on my long experience with Unreal Engine, and based on my tests with UE 5 Early Access, UE 4.27, and source compiled versions of UE 5.X, I got a strong feeling, that UE 5 cannot be truly production ready soon… at least not during early 2022. With "ready" I mean something where all features work, and they are thoroughly tested, optimized and documented.
Tim has a Shiny New Engine for You
But as it happened, UE 5 was launched, and certain things that I feared materialized. Clearly UE 5.0 was not as ready as Epic claimed, and that dissappoints me most. I am very tired on all these cheesy and glossy marketing promises. There was clearly a rush to get UE 5 out, since several mechanics lacked some features. This is not a problem if you are developing something that needs basic features and mostly used mechanics. If you make those asset flip dioramas for social media endorsement you will have no trouble at all.
But if you are developing something complex and extensively use very advanced features of UE, you probably find several things in UE 5 that "do not work", "are buggy", "are not ready yet", or they have changed so much, that your old UE 4 code isn't compatible. Basically the UE 4 compatibility is not just sunshine and rainbows, like it was promised. As you will see later, there are many fundamental changes in UE. You can open UE 4 project in UE 5, but you should be prepared for lots of manual work to get everything working like they worked in UE 4.
On the other hand UE 5 is an improvement in many ways, so… I have very mixed feelings about UE 5. I just hope that Epic Games put more focus on those features they start, and really finalize them, until starting yet another feature that will linger on with "experimental" status for several years. I am hopeful, but also sceptical. So, if someone thinks that after all that criticism above I hate Unreal Engine, I have to say that it is a totally wrong impression. On the contrary, I love using Unreal Engine - why else would I bother writing all these notes below. But I think that any user who really delves into the internals of some specific software is entitled to criticise things that do not seem to work. There is a big difference between brainless shouting and bashing compared to analytical criticism.
Differences, Differences!
However, this upgrade is not just new graphics - there are lots of changes in the engine features under the hood. Also, many thinks are not like people assumed based on those early marketing presentations. Yes, we got Lumen and Nanite, but they do not work everywhere. Now we have Chaos Physics, which works in its own way… except when it does not work. There are lots things that are new, that have changed or that substitute something that has been deprecated. I do not claim that following list is an exhaustive survey, but I have tried to list important differences between UE 4 and UE 5.
Development and Platforms
You have to switch to Visual Studio 2019, since UE 5 does not support previous editions of Visual Studio. I noticed in my own tests before official launch that Visual Studio 2022 worked better when compiling from source. Another important not is that UE 5 does not support 32-bit platforms, and never will.
You have to update build scripts and DeviceProfiles.ini (unless you use UAT), because all Target Platform Names have changed. They are now as follows:
One noticeable thing about UE 5 is that you need high-end hardware to utilize all those new features properly. CPU has to be quite powerful, backed with at least 32 GB of RAM, and GPU should be quite new. It is advisable to use fast SSD disks instead of old HDDs.
Rendering
Lumen and Nanites have been advertised so heavily, that clearly many have acquired utter misconceptions how they work. First of all they are not somekind of miracle technology which somehow circumvent laws of physics and algorithmic complexity. Second, they are not fully ready yet, and they do not work in all cases. And third, they are not a turnkey solution, which "just works" without any tuning. Lumen and Nanite do not work automatically, you have to tune all appropriate engine settings, prepare other components in specific way to use those settings etc.
Screen Space Global Illumination setting and console variable r.SSGI.Enable have been removed, and its status is not imported to UE 5. If you use it, then you have to re-enable SSGI as the default GI method, you have to set it in Project Settings, Engine - Rendering section, and change Dynamic Global Illumination Method to Screen Space (Beta).
It is important to notice, that if you use SSGI, and have Post-Process Volumes, then you have to make appropriate settings in the volume's properties, too. Volume's Global Illumination category has Method field, and it should be set to Screen Space (Beta).
Old Standalone Ray Tracing feature of UE 4 is depracated in UE 5. Ray Tracing lighting effect is still in the engine, but it is now handled by Lumen. In UE 4 Ray Tracing was isolated feature from other lighting and end result was not always consistent. With Lumen things are different, and it implements ray tracing features for reflections and global illumination, but it is important to understand, that Lumen is still work-in-progress, and it continues to improve in the future.
Ray Tracing Reflections, Global Illumination and Shadows (not those Babylon 5 Shadows) are now separate features, and you can enable or disable them independently. They are handled in Project Settings category Rendering. If you want to use them, you must enable Support Hardware Ray Tracing in settings, too. Global Illumination and Reflections can also be set in Post Process Volume, where there are setting for these methods.
Lumen has a Software Ray Tracing feature too, and it uses Signed Distance Fields for mesh representation. You have to make proper adjustments in Project Settings, Engine - Rendering section in category Software Ray Tracing, and enable Generate Mesh Distance Fields. You can also adjust the Distance Field Voxel Density. Notice that default voxel density for all Distance Fields has increased from 0.1 to 0.2, so that Lumen will produce good software tracing quality. The obvious drawback is the increased Distance Field memory usage.
Hardware Tesselation has been removed entirely, because Nanite makes it obsolete according to Epic Games, although Nanite does not support all user cases… at least yet. Obvious remedy for this is to increase the resolution of assets. Likewise Legacy Tonemapper is not available in UE 5.
Light Propagation Volumes and Distance-Field Global Illumination (DFGI) have been removed, and Lumen handles these use cases. DFGI was experimental feature anyway, and neither of those features were developed any more. Lumen is under heavy development, and should eventually produce better quality results, although Lumen may have higher baseline performance cost.
Cascade is depracated in UE 5.0, and it will be removed entirely in the future. So every developer should start using Niagara, and convert old Cascade effects to Niagara. There is an automated converter, but its results are sometimes unpredictable.
Shader Debugging
Numerous console variables for debugging shaders were renamed, and you have to update them manually. New names are more consistent and condense. Presumably many of these changes in setting and variable names aim to make things more clear, but there are changes which seem a bit odd, like why Duplicate shortcut has changed from CTRL+W to CTRL+D. Of course you can customize these keyboard shortcuts any way you like.
This will continue in next newsletter, and there I will cover Chaos Physics, World Building, various tools and C++ programming.