A noobs ranting about UE4

Aight - before some of you explode - this is meant to be a “bit” sarcastic. I use UE4 sine February 2017 - so that is nearly 9 months now. Well 8 if you count when i really started to do more than just click the “play button” in example projects.

I started some projects and still keep programming on one game - and yes despite all hardships and ignorance of mine thisone will turn out to be great [/self confidence].

But here’s some stuff I’ve been stumbling over - more or less constantly and could never really solve it. So everything is welcome- from serious bashing to professional help and a few cheap laughs. SO if you finished laughing and have some goodtips for me - that would be appreciated as well.

  1. References
    Whenever you wanna interact/change/destroy/annoy any object (“Actor” for pros) you need a “reference”. As a beginner you think if you throw a 3D model in your level and name it “myCoolSword” that would be good enough as a reference, but obviously not. You try to move/change/kill (“Destroy” for Pros) that ■■■■ thing but no chance. So you google and - Tadah you need a reference. Good news: For stuff you placed (“threw into the map”) you can select them and open the blueprint and right click anywhere to create an Reference. Well at least if you didn’t fumble around too much already in the blueprint, after a while the selected object gets kinda “lost” - easy fix - save and close blueprint, select that actor and open the blueprintagain and Tadah you can create a reference. Well at least for most blueprints. Some are however immune to that. Pro trick: use the level blueprint - it can take pretty much everything. Unfortunately it gets much harder if you spawn an actor from a blueprint. Since you didn’t throw it in the level you can’t select it. Within the same blueprint you can use the neat blue line from the spawning as a reference, but that’s where it ends.Words can’t describe how many hours i have tried to get a reference to something and in the end i just gave up and either just threw it into the map and made it invisible until i need it or just spawned it from a different blueprint. Why can’t we just right click anything and make a reference from a unique name something like “Myshittysword” and use that from anywhere?

  2. To cast or not to cast
    If you’re a pro you just try to throw all logic into the level blueprint. Never look back, never care how bloated it becomes, at least that always works. The good life ends when you add blueprints to actors - you can do wonderful things, but hell breaks lose once you need to access one blueprint from another. SO what about all that cool stuff in your level blueprint? For some weird reason i will never find out the level blueprint can access stuff from all other blueprints, but you can ever access the level blueprint from another bueprint(Level Blueprint should have a “one way” sign on top). The you will discover “cast”. You can “cast” to some blueprints which is totally unintuitive since you will “cast” to some other friggin blueprint to access a function in it. If you know which function you wanna call then why can’t you just call it, what is this cast stuff al about? I will never find out. But “cast” is a weak magic. Often it is also a one-way street, so you can’t just cast to every blueprint. So often you will have one cool function ina blueprint, but you can’t access it from where you need it. Same for variables. In the end ithrow all variables to the “Game mode” - whatever itwas intended for (no idea, really!) since you can at least cast to it.

  3. Global stuff
    See rant #2 - sometimes you can cast sometimes not. How cool it would have been to have global variables and global functions. Nearly every programming language knows that and at least to me that does make sense. So what’s the problem of not having them in UE4? bad karma? Yeah i know it’s so cool to have a function called “HideMyButterknife” in every blueprint and that it does something completely different in every other blueprint, but personally Id nt have a problem with sch function (or variable) names having to be unique if i could use them globally.

  4. Don’t effin hog memory like it’s for free
    Seriously - memory is a problem in UE4. UE4was the reason i had to upgrade my laptop to 16GB of RAM. And yeah it probably would have been like 128G of RAm if 16GB wasn’t the maximum supported. I’ve never ran out of memory so often -actually never before as with UE4. Build lighting for one small room - out of memory. Import some animations and clickthe play button - out of memory. Work for a while - out of memory. And the joke here is - at my current game it is all just one appartment. Well OK not completely empty - but how do some people work with whole worlds? I had to seriously cut down on my lightmap -not just because building it took like 12 hours - but because it also consumed RAM. SO at least i know got my ■■■■■■ little one-person appartment map down from 4 GB RAM usage to 2GB on initial loading. And yeah that is just on initial loading -as soon as i really do something like loading models, previewing them, editing materials and so on UE4 keeps consuming RAM like some rockstars keep consuming ■■■■■■■. I know most people here probably useeneterprise level servers with 128GB RAM or more, but hey - i enjoy using a laptop. Don’t wanna play that “other engines” card, but i think some RAM usageis really unnecessary, garbage collection, blah. The joke here is when i build lightmaps my “Initially usign 4GB RAM” map drop down to like 200MB RAM usage - so hey it is possible, just we haven’t done it the clever way yet.

5.Why is the editor like effin 17GB?
Honestly - see point#4. Yeah i see that most people also wanna compile for Android and iphone and crap and it all costs space, but where did these 17GB go? Is there the latest star wars blue ray hidden somewhere in it? I have used some smaller engines -where"small" means like 2GB -which still is quite a lot i think -and put them on a RAM disk which was really nice to handle. But yeah for UE4 this is out of the question - at least on my laptop. No way that people who are sure they will never develop for Android, ios, PS4 or whatever could vouch to get rid of all that? Not like we’ve been asked.

6.Why is saving stuff so hard?
OK maybe the worst 2D Tetris game in Android or the coll 3D Spaceshuttle flight simulator of NASA don’t need to save anything, but for casual games this is not completely unreasonably - we wanna save some variables, actor positions and states. I have had a hard time and it took me hours to just save and load a dozen of variables and this probably goes back to point #3 - but why is the saving system such a crap? A good saving system would save me so much time. Ah yeah the good old days of the 90s when i used some crappy 2D game maker thingy and cold just click like “make save state” tick all the variables to save and done. But yeah i guess now I’m really getting greedy - and i already had my fights with people who told me that UE4 is NOT a “3D game engine” (Wut?), but also used in automotive visualization, by NASA, to create 2D space shooters for iphone and what not. Yeah i got it. But it would be cool.

[End ranting]

Yeah after all is said and done - I’ll keep up fighting. Mostly just doing workarounds and hopefully learning one or another trick. But take it as the rare chance to see it from the eyes of a true “noob” who has ot (yet?) written 3 books about UE4 and learned everything on his own just by fumbling and disassembling some demos.

some cheap (but kind) laugh

1-3. I can say from my experience, 6-9 months from start were the most hard time. Look, it’s normal OOP practice and hierarhy. You just need to understand Unreal’s object model, and then you’ll always know what object in what blueprint you can reference, how to get a reference and what you need to cast. For global functions you can use blueprint libraries. Use level blueprint to initialize references in objects if they’re spawned after launch (like player pawn or controller). Don’t forget about delgates, they’re useful to exchange information between different blueprints. And you never need to use GetAllActorsOfClass if you, of course, don’t need to iterate all actors.

>Within the same blueprint you can use the neat blue line from the spawning as a reference, but that’s where it ends.
Save a reference to spawned actor to public variable. You’ll be able to use it both from inside and outside of the blueprint.

  1. Videogames take a lot of memory (even if you usually don’t see it in task manager because you, you know, playing). Unreal renders a scene in a preview windows just like it looks after launch, plus all control features, GUI, blueprints editor, animation editor etc.

  2. I don’t know what to say, I have 4TB hard drive.

  3. I don’t think serislization system is hard. Probably because in non-game projects I sometimes need to save manually all the stuff in binary files. Unreal is just not crappy 2D game maker. The engine is much more complicated, so it can’t be so easy.

Good luck.

Because that would result on very bad runtime performance.

Sometimes people obssess over their language of choice for programming; all the people over Epic are C++ developers, so if C++ has Casting functionality they thought would make sense to include that in Blueprints (but could be 100% avoided).
I’m surprised they didn’t also included “includes” and “headers” on Blueprints…

You can have global functions easily: create Function Libraries.
Object Library could be used for “global variables”, isn’t quite the same… The reason there’s no place for Globals in Blueprints is because, again, people obsessed over “Object Oriented Programming”.

They use sub-levels and level streaming.
Also they make procedural stuff on C++ to avoid the Editor as much as possible.

They working on it to reduce size and engine more modular. You can opt out of Android or iOS binaries when installing Engine from Launcher, for example.

Hmmm… Well I agree could be much better. This is why I’ve made my own plugin to automatically save the game world for me :slight_smile:

Casting operation isn’t cheap enough to be ignored, for exapmle, in Tick function. They could make a hidden auto-casting, of course, but currently existing casting functionality allow developers to avoid it when it’s possible. It’s a simplicity vs flexibility compromise.

At first - big thanks and kudos to all of you for enduring my rage - and not bashing on me. :slight_smile:

And many many thanks for the VALUABLE tips here. Ah i didn’t even know about blueprint libraries or function libraries. Guess i finally found something i wanna look into now. :slight_smile:

Ah and i really need to develop a rather easy to use save feature… But yeah my big problem - my to-do list is constantly growing and the days are too short (We should invent 48 hours days!). XD

Haha, as a 3 weeks “old” n00b myself I have to add to the rant:

6b. Why is saving stuff IN THE EDITOR so hard??? :smiley:
I’m working on materials and always click “Apply” AND “Save” … AAAND “save all” just to be sure. The engine still complains about some ominous not applied/saved changes when I close a window?! It misses a “save all, for real” button. I guess, yes, there miiiiight be soooome benefits of not saving when compiling/applying - like a rollback in case of fail. But that’s why I’m on Version Control… And if you watch some tutorial video you see people double clicking save & compile all the time. :wink:
(PS: There seems to be some engine settings that auto save on compile…)

Only OP is allowed to read the spoiler. :stuck_out_tongue:

[SPOILER]I used to work with this pc for many years in cryengine 3 working on several projects + modding, and ~30 fps was the lowest performance I could ever have on an overkill forest level.

GTS 450
4GB
Dual Core E5200

When I switched to UE4 I was low on memory, my GPU couldn’t even give a smooth 30 fps on a rather empty level, my CPU couldn’t handle a 4x4km terrain without any material to it.
So I had to upgrade to this to just run the engine.

GTX 970
16B
i7 4790K

I think everyone agrees the upgrade, today is, hardly acceptable for working with UE4 so me too, like a noob, wonder why that is, and on top of that, I wonder why that is considered normal by majority of UE4 users and devs here.

But I guess that’s how the world works[/SPOILER]

As a C++ professional for 30 years (yes, Im 50yo) all I can say is that even when I started OO programming, made a huge difference the experience acquired years later. No matter how much you think you know some language or tool, experience over time will change it for the better (I hope). I found myself troubled when started UE because I wanted to avoid C++ as much as possible… Why? Because when I was in the learning phase, the most common thing I learnt by experience is that usually it breaks code more because API changed so much, that then I felt compelled to try to use blueprints whenever I could, use C++ for algorithms out of the dependency of UE API (sometimes you just can’t) and the bless came when I got experienced using Blueprint Interfaces… Oh My!! It requires a lot of more planning, but worths a lot. It solves the problems you are facing and the remain is as everyone else are saying, but mainly you just need more time understanding how things are done. I suggest you choose some specific mechanics you are looking to implement and find free projects on the internet which shows how they are done, or buy at the marketplace some cheap assets that seems to use those mechs.

GL!

On my work PC I am pretty much on the edge of a minimum configuration - 8GB RAM and a slow 5400 RPM Harddisc - drives me crazy sometimes.

The RAM usage is defintely - at least partially - poor memory management or memory leaks. When i open my current project it initially consumes 2.2 GB. If i test the game in the viewport it jumps up to like 4 GB - which is reasonable. What is not so reasonable is when i stop it it stays at the 4GB. If i edit some materials memory usage constantly grows - somewhere at around 6GB i usually save everything, close UE4 and open it again to gain more memory.

What is really amazing - memory usage goes down when building lighting - as low as like 100 -200 MB after building lighting finished. Unfortunately for my current map building lighting takes like 2 hours, so not really a workaround to do that often.

Actually I “can” work with 8GB RAM since i developed kinda feeling for how to dodge “out of memory” errors and such (Experience… sigh). Hell when i build lighting i kick all Windows processes, tasks and services - actually even explorer.exe (Don’t need a desktop while building lighting, not like i can do much other stuff while this is running anyways). However I’d say the bare minimum is 16GB RAM if someone asked.

What really helps when your gfx card is crap is to set the scalability to “low” in editor. I used to have an old Radeon HD gfx card - i constantly had the gfx driver crash with UE4. Tried all legacy driver versions from ATI that were available. In the end i bought an old used Geforce GTX 745 for 20 bucks and that fixed all my problems with the gfx card. Not enough to enjoy games, but enough for the editor.

First of all: I started with UE4 januari 1. So we started almost at the same time. Here is my advice. Sometimes you have to rewire your way of thinking. If the MATRIX would exist it was probably done the way UE4 does it. Don’t upgrade every version, stick with a version that works for you. Watch this video at least 3 times: Blueprint Communications | Live Training | Unreal Engine - YouTube
And watch this video 2 times: UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 | Unreal Engine - YouTube
For me the forward renderer is the way to go, I get great performance in VR. Global variables are crap (in the end). I have to admit the first 6 months were tough but I ended with loads of people having fun inside my Unreal world. That is a divine feeling!!

The one answer to them all is Unreal 4 is in a constant state of beta development so all bugs or issues should be considered as feature requests :wink:

The process

  1. Make a request
  2. Cross your fingers

P.S. I have learned through experience that bribing your coders with vast quantities of Hot Pockets and Think Geek T-shirts does wonders. :smiley:

  1. Make a request
  2. Nothing happens

alrighty

I know this sounds like a very patronising thing to say but…try doing the tutorials and read some documentation before diving in and guessing stuff :slight_smile:

If you’d ran through Epics youtube blueprint tutorials, references and function/macro libraries are explained. Reading through your post alot of it sounds like you’re just guessing how to do stuff which is a sure fire way to screw yourself over and get head over heels confused and end up giving up with it. You’re not going to get far if you don’t understand casting or even things like what the game mode is for :slight_smile:

As boring as it is, take a step back and go through all the official Epic video tutorials at least would be my advice.

In fact I just remembered, I wrote one tutorial in my whole life, it might be worth a read for you:

https://forums.unrealengine.com/community/community-content-tools-and-tutorials/18670-accessing-variables-functions-from-one-blueprint-to-another-with-a-bit-of-casting-too?47141-accessing-variables-functions-from-one-blueprint-to-another-with-a-bit-of-casting-too=