HUGE Dilemma - Could use some guidance.

Okay, so here is my huge dilemma. I know very little about programming as it is. I know about basic memory management, casting, arrays, variables, types, classes, functions, references, pointers (basic) and a few other basic things about c++. I DO NOT know about vectors just yet! So far, after spending a LOT of money on books, online courses etc, over 150 hours of learning thus far, I am finding the task of learning C++ very daunting, tiring and gruesome. Not because of the ‘difficulty’ per se, but because it’s going to take me a very, very long time to bring my newly honed skills into unreal engine 4. Heck, I can do everything else from level design, model design and animations…but bringing this stuff to life requires the necessity of learning c++. I have to learn the libraries, I have to learn UE4’s API, which I’ve looked through and it seems like a complete mess to be considered a reference.

Now, it’s not fair and I will be typecasted by most of you, but Unity introduces C# as a programming option, which I know has automated memory management and is apparently much, much easier to learn. But even after spending more time in Unity than I have with UE4, I find Unity’s engine much harder to just ‘use.’

Now, the question…

Should I continue utilizing my C++ skills and honing them further in order to work on game development within the UE4 engine, or should I just use my c++ basic knowledge and go over to C# with Unity?
How freakin’ long does it take to start understanding C++ better? I know your answer will be subjective, but that’s exactly what I want - YOUR opinion.
How much C++ do I really need to know to start working on the pipelines and understanding them? Most of you will say trial and error, and look at other people’s code. But hell, that stuff is still confusing me A LOT!

Help…just help me!!!

Oh…and please don’t give me the ‘blueprints make your life easier,’ because honestly - if you don’t know programming, then blueprints are just gibberish. Those blueprints are VERY hard to understand to a good extent of using them. I’ve gone through every single blueprint tutorial on youtube including Unreal Engine’s and it has helped me by maybe 10%. Sorry, but blueprints are just visual scripting for someone who already understands/knows programming and the API being utilized.

I’m sorry, but you are already answering your own question: you are daunted by C++, C# in Unity seems easier, and you don’t want to hear opinions on blueprints. Can’t help you there.

If you’ve read down to here, and willing to be a bit more open-minded, then take a second look at blueprints. I primarily use C++, have used it for years, and I’m so impressed with blueprints that I use it for game logic and UI, saving the C++ for more involved operations such as math or performance sensitive stuff. Seriously, other than program flow, you don’t need to know anything about C++ to use blueprints.

Look at the templates or sample content in the Marketplace. Most have C++ and blueprint equivalents, and at the least it will help to visualize what C++ is doing.

Thanks for the suggestions. I’ve downloaded the sample content from the marketplace and after looking at some stuff, I’m beginning to realize that perhaps knowing UE4’s API would benefit me “MORE” than knowing straight up c++. Correct me if I’m wrong.

A long time ago a good friend of mine told me that “if you wanna be good at something, you gotta start somewhere”.

She was right, and it sounds like you’re off to a pretty good start. Don’t give up just yet - I’ve been programming Unreal Engine for 15 years now, and I’m still learning new things every day. Some parts are really messy, I agree, but others are a treasure trove of knowledge. By giving you access to the Engine’s full source code you can stand on the shoulders of hundreds of the industry’s brightest game developers, so use it to your advantage and become one of them!

And to quote one of my former bosses: “If it was easy, a monkey could do it” :slight_smile:

While you said you don’t want to hear opinions about blueprints, I honestly think you should give it a bit more time; they are geared towards those who understand basic programming logic, but as someone who has a background in C# and not C++… they do make your life easier, just not as easy as C# might be!

Instead of just looking at a blueprint to make heads or tails of why it does what it does, try and manipulate existing blueprints into doing something they aren’t meant to do, or make it do something you want it to do; learn how to break it, learn how to fix it, and walk away with understanding as to why it broke in the first place.

So far, I’ve used C++ very little, and blueprints have helped out substantially.

What in specific makes blueprints hard? We might be able to allay your fears/struggles/help out in general. Otherwise, unfortunately, C++ just takes time.

I think that’s true. And blueprints are great for this. If you compiled your own editor you can even right-click on a node and go to code definition to see how the C++ equivalent looks.

Thanks everyone for the words of encouragement. I am going to just stick with this and suck it up. Gotta start somewhere, right? :slight_smile:

This is something that I dealt with when I first learned C++ and I was doing windows programming. I remember looking at sites like http://www.winprog.org/tutorial/ and http://msdn.microsoft.com/en-us/library/bb384843.aspx and I spent hours reading these tutorials. C++ inherently doesn’t do very much “out of the box” because its designed in this fashion. Unlike python (wxt), java (awt), and other similar languages which tend to have graphics and windowing libraries built in that give people access to code that makes them feel like they accomplish something in their programming. The power of C++ lies in its object orientation, performance(relative), and compatibility with C and in order to exercise these strengths you need to compliment your programming skills with knowledge of APIs that are relevant to your project. UE4 is a big project with a lot of parts and the documentation and tutorials are being created at surprising rates. The best thing you can do is to understand how the general gameplay flow of the engine works. Look in the doucmentation, get a feel for how UE4 makes a “game” happen. Don’t be afraid to look at UE3 documentation which a lot of the concepts do carry over from UE3 to UE4.

It is important to note, you should **absolutely **learn how to use blueprints. There is a reason why you see the big game engines have a scripting language built in. This reason is that building a game entirely out of C++ is cumbersome and prevents anyone except the programmers for being able to contribute the gameplay of the game. It also makes iteration much easier since “anyone” can go through and change a blueprint and you can instantly test those changes. If you make a change in the C++ code you have to recompile(this costs time) and wait then test and if it doesn’t work you go back and recompile, whereas in blueprints you can just change the code and instantly see your changes with no down time. I suggest you check out some literature on game development and take a break from just studying programming. Game engine architecture by Jason Gregory is decent in that if will help you understand some of the common patterns that you see in big triple A game engines. Game Coding Complete by Mike McShaffry is also nice because he gives a lot of dialog about his experiences working with Ultima Online.

Also, a general approach I would take would be to make as much of your game as possible in blueprints. You will get a working game produced faster and probably easier than in C++. Then, as your game evolves when you need to add features you can use C++ or if some portion of your game is slow you can translate that portion of your blueprint to C++ for additional performance. Its better to embrace blueprints than to shun them

TL;DR
Its hard but you can do it. Stick to it!

Yes. I’ve been using C++ exclusively for the last 20 years. It took me a decade to really feel like I was good at it and another decade to get very productive with it and attain a level of mastery. And there’s still a lot about C++ I just don’t know. There’s just so much to learn.

Combine your reading with a lot of hands-on practice and step through all the new code you write line by line. I still do this, not just to learn but to help find bugs.

Also, do try using Blueprint first – or at least, at the same time. It really is a lot easier to learn and use than C++. Use a lot of functions and comment blocks to help keep it readable.