So after some c++ tutorials and checking around the engine’s source, I have a few questions for those programmers who have been working with unreal for a while. You see, I’m a programmer at heart. I like the idea of having full control over a project and knowing that if there is some issue whether that be a bug, performance issue, etc. that I can go in and fix things. This is a large part of the reason I’m interested in ue4 as it gives you complete access to its source code. However, as we all know, UE4 is a MASSIVE code base. I don’t think I could ever I understand it all if I wanted to and even if I could from what I’ve seen the main engine code itself seems somewhat rigid when compared to modern programming practices today (long inheritance trees, multiple inheritance, etc.). However, I also know UE4 provides the option for C++ plugins and to modify gameplay code in C++ which means you don’t have to try and modify anything of the core engine itself. My question is do you, as a C++ programmer, find that UE4 plugins and such provide you with enough power and flexibility to design any sort of game your heart desires? Do plugins or any other UE4 conventions give you the ability to add/modify low level engine stuff like rendering? Perhaps provide some sort of shader access or ability to create your own shaders like unity? A lot of times it seems so much attention is given to making engines more accessible to the average Joe, which is good, but then this ends up leaving the programmers in the dust.
I wouldn’t worry about it. For gameplay, you’ll be working with the UE constructs so you’ll never need to touch the engine code. For graphics, I read that you might need to touch engine code for custom shaders (might’ve been an old post, someone correct me). The material editor exists for a reason, though.
If you do come across a situation where you need to do a custom build, you’ll know exactly what you want to change, so you’ll have a focused section of code to modify.
As far as plugins go, they’re more about adding functionality than modifying existing code.
Archduyke’s response is on-point, there is absolutely no need to understand the engine code as a whole. If there are any needs, they will most likely be very targeted. The engine code may be “somewhat rigid”, but it still follows good naming conventions, is regularly audited by the PVS-Studio team, and is compartimentalized enough that you don’t need to know everything to understand one piece of code.
And anyway, if you want an Engine that lets you go under the hood and modify things, UE4 is still a better bet than Unity hehehe
About your question “do you, as a C++ programmer, find that UE4 plugins and such provide you with enough power and flexibility to design any sort of game your heart desires”, I would answer that very few plugins would be needed for that, as the base engine will already cover most, if not all your needs, right out the box. That’s the advantage of Unreal over Unity in that regard, the drawback being that the engine code you package often has more stuff than you’d need (though there are efforts made in the right direction by Epic each release)
Since 4.17 you can add custom shader files in plugins and game projects if necessary, so you don’t need to make a custom build for that either.
Thanks for the input guys.