A Users Experience

Hi Everyone,

Its been awhile since I did a post like this! Straight up I dont want people to think Im being overly negative, this is more about my genuine experience using Unreal Engine which I have done for many years now (20+). I just didnt want to come across as entitled because Epic give so much value especially having just attended Unrealfest which was awesome. I feel like I have a unique perspective being an independent solo developer and not being close to the metal, thats what I would really like to share and I’ll try to tread lightly with opinions :sunglasses:

On with the tl;dr

Lets start with the main window updates in 5.0, the fact we can now have the Sidebars floating and similar for the Content Browser, these are top tier updates! Its so much simpler now without struggling with windows since we have these floaters, I have noticed that at times these floaters get stuck and become unresponsive or just drop on their own causing the input to jump into the viewport. Im hoping these subtle little nuances have been noticed and arnt considered “within spec”, that there will be continual improvements. One I would suggest is being able to pin the tabs in position in the top bar, I like having my level as the first item and somehow they end up creeping because of the sensitivity of the tab drag. Now, the sensitivity of the tab dragging is brilliant so I wouldnt want to see a delay, thats why the suggestion would be adding the pins (which I suggested back in the UE4 days too).

The next one is abit trickier, in terms of the editor we have what I call contexts, so for example terminology for Niagara versus Substrate or Blueprint. I would like to see an effort to try to make quick access menus bring up the most correct information, if you type “For” in Blueprint you probably want “For Loop” not “formations of pigeons” but also if a particular editor has its own terminology say if you type “If” then in Blueprint its “Branch” versus the Material Editor being “If”. This is a naive example but I believe the Editor should be context aware and know where it can offer a suggestion to be helpful, it should know if a particular thing has named variants depending on the frontend to accelerate accessing the correct functionality. One example might be the “One Minus” which might be referred to as “Invert”. There is alot of meta data there for functionality exposed to the Engine so I believe its possible without delving into the hot topic of LLMs.

I do have a question, whats with all the Assets? Ive found there are an enormous amount of asset types, some are simply two name fields and it feels very much like bloat. One of the largest issues I have is not knowing why something was done and the intent on how its to be used, much of the documentation only states what it is, which is the easiest part of the information to find. I appreciate there are a need for assets but Im wondering if SubObjects or Components need to extend to Objects, I remember in UnrealScript you could define new Objects in the DefaultProperties (CDO). I wonder if this is a problem inherent with how the Blueprint UI is structured, if it simply wasnt thought of or if this functionality was removed. Kinda leads me into the new State Machine features which is funny because I mentioned recently about how UnrealScript had that built in with its state code, it feels like we’ve gone full circle.
I digress I feel like Im creating Assets for the sake of it, whether with GAS or the new Audio system, there are just insane amounts of little assets when I feel like there might be a better way to consolidate all this data. To have encapsulation but also sharing of those Objects where needed without all the tedious Asset Management.

One of the ways Ive found myself working recently is more in a manner which allows me to generate my Actors using Objects rather than constructing them manually or encapsulating functionality in a ConstructionScript. This allows me to share that functionality more easily across similar Actors without managing the inheritance. One thing I feel like Unreal Engine could do is more management for us, like in a managed code scenario because when in the Editor you are running the VM. Having used AngelScript alot recently this does some of that for you, its easy just to whip up a class in a file without too much fuss and then renaming, moving it around etc is trivial in comparison to moving around Assets. Part of the best reason to use C++ is that redirectors work better for Class versus Assets, Ive found myself gravitating towards Plugins for this reason and avoiding Asset Hell. Its even become crazier when you consider the one file per Actor and how that impacts copying data, its fine for static data which is updated in place but similar to source with lots of little files it ends up chewing resources.

Which I guess brings me to the opposite end of the spectrum in Niagara where it likes to encapsulate everything into the system. This tool is performant as but the experience of learning it has been a pain, its not that its bad its just not overly intuitive and thats really odd because it really does just feel like a lovechild of Blueprint and Cascade. I honestly thought I would pick it up in a jiffy but Ive found myself left wanting, in the back of my mind 3dsmaxs Particle Flow is there poking me. I tried to make some volume fog particles, it seemed to work fine for one particle but as soon as I wanted many it all fell apart and Im going to assume I need to go into Niagara Fluid territory more. I just dont see why those particle positions arnt written to a Volume Texture like a 2D Render Target for you, Im not sure what the reasoning is behind creating more work. Maybe its my lack of knowledge but much of the Editor seems to work the same way, its heavy on the baby sitting where I just want to get things done, I dont have a huge team of people to brute force through these sorts of issues.

When I end up having to write tools it actually takes away from working on the game itself, Ive found writing tools for the Editor to be this odd middle ground. On one hand there are all these great examples and on the other hand it looks like theres many different Editors all using different parts of the frameworks differently without much cohesion. Im hoping though that this is a work in progress, that in the future tools can be constructed by inputting the parameters rather than having to rewrite it all. Editor Utility Widgets and Blutilitys have saved my ■■■ plenty of times, its amazing to be able to program the Editor in such a way and you can do this in text as well. Again Ive done it with AngelScript and found the process of mixing UMG and functionality to be just as easy as Editor C++ and Slate, its just less portable because AngelScript requires a custom Editor Build.

I guess the issue Im mostly seeing comes down to proprietary knowledge and the means of sharing. I did want to applaud Epic on this forum update so this is a perfect opportunity, some of the tutorials and snippets here have been very valuable. When we talk about value its difficult not to bring up time, I like YouTube but I still believe even with all the tags on the track bar its still a very inefficient way to get information. Its great for when you need to see precisely where something is but its not very good for information density. There are also huge problems with the Editor tools at lower resolutions, like for example one Niagara tutorial I saw had this tiny little 480p sized graph in the middle and the rest was dead space. Its not just a Creator problem though, Epic do limit their maximum zooms to 1:1 for some reason by default, Niagaras Emitter text is actually quite small and could benefit from being larger since there is not alot going on in that graph. I would still love to see those Emitters being able to be chained together though rather than that pain in the butt method of passing values.

I could honestly go on for days about how parts of the Editor need to be more intuitive, I feel like the focus is on smaller things. The unfortunate fact is as tools get used more we end up in that change adverse territory where things cant improve because all the knowledge base around that tool would need updating too. I certainly dont expect miracles but there are larger concepts in terms of the Editor which are still leaving me WTFing to this day. Decoupling Actors does kinda lead us into this position where auditing what data is available when becomes more difficult, sure loading all those references is problematic but it does give you a nicer snapshot. If you use certain techniques in chasing performance you actually get situations where tools created to manage Assets and references become less useful so it does make you wonder.

Id love to hear other peoples thoughts, these are my experiences especially more recently in regards to 5.1 / 5.2. Im definitely looking to get into 5.3 because I really want to explore the Substrate updates, extremely impressed with it so far.

If you made it this far, thanks its greatly appreciated.

Ive been wracking my brain trying to work out what else I could have missed since Ive been using UE4 and now 5 all these years. I’ll probably end up providing a summary but in all honesty the story makes it more apparent as to the impact these issues have. Theres no real reproduction steps as you would have to have walked in my shoes so whether theres value in that Im not sure.

One big topic I didnt touch on at all because Ive been avoiding it lately is animation, especially in regards to humanoid characters. Many of you will probably just point and say use Lyra, ALS or similar but overall I have issues with the core way Animation Packs are delivered on the Marketplace. They always come with a copy of the Skeleton requiring you to have to rehook it to a global default Skeleton because there isnt one in the base Engine Content (if there is its purposefully not used).

Now this leads me to a tangent, why dont Epic provide more at the core to build on? Its an interesting question and when we look at Fortnite we can see Epics sort of contradicting themselves by providing a game to build on. Now sure again we have Lyra or other content examples but why not anything at the core plugin level which can be turned on/off if overheads are a concern? Its actually quite a hindrance for smaller outfits to have to build all this foundational work and if we are honest most bigger outfits just throw most of it away and build it up more specifically for the project each time. Perhaps thats why we see this focus but I cant be sure, it just feels like tedious work to get these common gameplay elements up and running.

Back to humanoid animations and how much effort Ive put into this over the years, the rebuilds, the updates all to just have a system where a player can pickup weapons. Now I appreciate Epic providing us with content examples but they are typically focused examples made internally with no consultation with the community (perhaps another contradiction given Verse). What this means is they meet Epics project requirements but rarely the requirements of someone who wants to take that and work with it, Lyra isnt terrible but like ShooterGame it leaves alot to be desired and I think this is why Epic are funneling people towards Fortnite because they are well aware of these short falls and how much more rapidly development goes when its built on a solid foundation in terms of content.

Thats what really sets games apart, I could throw a rock in the pond and hit hundreds of games all using humanoid characters shooting guns so why are we stuck having to use an inventory system developed specifically for Lyra. You could definitely modify the project, there are plenty of marketplace products which offer similar (but the prices have been getting extravagant lately) but the core ideals still arnt there in terms of modularity. We have Game Features plugins which might help but its difficult to know which Content Examples or Marketplace Assets implement what and how from the extremely lackluster descriptions, these are technical pieces of software being sold and I feel like they should be treated as such. A YouTube video while showcasing the content well doesnt show much of implementation specifications…

I’ll leave it there for this weeks update, I will check back regularly and Im certainly open to discussion on socials or in private if you would prefer. Typically Im in Slackers Lounge, so feel free to poke me even if you have a counter point. Id love to get some back and forth going to see if there are actual solutions to these issues that seem to get largely ignored.

Thanks for your time