What is the best way to start with UE and C++?

It is just the truth. I have 10+ years of using C++ (including both personal and professional use) and I must say it is really a complex thing. As you learn more about it you start seeing all that complexity.

Don’t get me wrong though: it is trivial to write a “Hello World” with C++. Writing a simple class for UE4 is more complex but is also relatively easy even for an inexperienced developer. But one shouldn’t expect to be able to write complete games with it just after using it for a couple of weeks or so.

Complex doesn’t mean “impossible to learn” and I encourage everyone to try C++. Just go step by step and don’t get discouraged if there’s something you can’t understand just yet. :slight_smile:

Generic but nonetheless true (at least to me :stuck_out_tongue: ) answer: Game-engine are complicated piece of software, and even if the coding workflow is somehow simplified in Unreal Engine, i would strongly recommend to start playing around with Visual Studio community and maybe make some console programs. There’s a lot of great C++ tutorial out there.
With a bit of dedication i would suggest taking a couple weeks to get at least solid theoretical foundation before engaging in UE4 C++.

Here’s the reality of things - learning how to make a cube spin in C++ in UE4 is trivial. The reason why people say “it’ll take you years” is not that C++ itself is THAT hard. The thing that is hard, and this applies to both BP and C++ is system design, something a lot of people simply omit, or at best glaze over. The moment you start creating a complex game, you’ll start to design systems that need to intricately work with each other, each more complex than the last. For example, a very simple on-rails shooter game needs to have a class for your units, which interacts with some sort of damage and combat system, which in turn has to interact with the power-ups system, all of which needs to be spawned with some sort of “level timeline” system. All of this needs to tie in to the UI, the level loading / saving, some sort of cutscene / cinematic system that has to make use of your dialog system (which loops back into UI). Once all of that is done you need to set up ship upgrades etc etc etc.

Designing those systems to be streamlined, extensive and talk with each other properly takes years of experience. If you were to give that simple game above to a newcomer and someone with half a decade of experience, the end result would be very different. As a simple example, if I were to ask you how long it takes to import a static mesh into UE4, you might say “10 seconds of import time if your PC is slow, 5 otherwise”. A developer with a lot of experience will tell you “10-15 minutes at least” because they’d know that once you have a mesh imported you need to set up their distance field scale, lightmap settings, LOD + LOD materials, all those little things that make a world of difference in a professionally made game. Hell, I think a Skeletal Mesh takes at least an hour of setup after it’s imported to properly adjust which bones are active per LOD etc.

Never underestimate the value of experience.

Hey Folks,

i never thought that the thread will get so big. Thanks for all the answer and the discussion about C++.

What should i say? I think C++ is not that hard, but the commands and makros that are inside UE4. I mean, the Syntax is almost the same as in lite-c. Ok there a view exceptions like pointers and so on. But how you make a variable, defines, functions, if-else things or for Loops, are all made by the same way.

Now i’m doing my game with both. The Project is a C++ Project. I try to use only C++ but if theres something i don’t know i use Blueprints.

I’ve found one feature which is very useful for myself in such cases: right-click on a Blueprint node -> Go to declaration. It will open the C++ code of the node and you can just copy-paste the code or part of it instead of using BPs.
The only thing is when opening the code it does not go directly to the line, just open the header file, so need to search for the method (by node’s name usually) and then go to definition.

I don’t know that. I have to try that :o)