Programming Tutorials, (C++ Tutorials)

Hey guys,

I learn’t C++ about a year ago, and was hoping to start game programming and making some C++ games in UE, however… When i go to look at the gameplay classes and the API, I realize this is all I have, Your C++ video series on the channel is out of date, and that is the only resource you have for the C++ developers to start game programming in UE, (I know this word is forbidden here) But Unity do a much better job of this, Yes I know they use C# which is a bit of an easier language, however they post way more programming tutorials on their channel than Unreal. The Twitch streams just cant compete with the shear quality and quantity of the videos the Unity guys are uploading. Personally, I feel quite disappointed in the resources C++ developers have to help them understand game programming in Unreal Engine. Maybe start a videos series, or a Twitch Training C++ Stream?

Yes the Docs are useful, but many people (including myself) are going to get bored just reading the Docs, Alot of people learn alot easier from videos aswell.

Thanks in advance!

I will say this here, as I was going to start my own thread but i feel my thoughts are much more meaningful in this thread.

Take this picture for example, the original poster said “Buddy doesn’t know why, he just does what Cooper does.” It’s a perfect example of the difference of knowing what to do and why to do it.

I don’t feel like the any of the tutorials they(epic) have done so far, even remotely describe why to do something the way they(epic) tells you to. They just tell you what to do, and you hope for the best. I’d go even as far as to say almost every generic tutorial talk/lecture in general i’ve ever seen does a terrible job of describing why to do something a specific way. Epic’s tutorials i feel are also in this boat. Not just c++ tutorials but bp’s too. The how to do something is for documentation, the why to do something is for a tutorial. How to do something is completely useless if you don’t know why you’re doing it. This statement is completely vice versa-able, but the point is we have the how already (docs) we need the why to fulfill in the cracks left over from the docs.

I feel like this is a problem with education in general, but I feel like epic should be aware and try and describe why you would take this specific route ‘z’ in completing ‘x’ or ‘y’ task.

[=SaxonRah;223303]
I will say this here, as I was going to start my own thread but i feel my thoughts are much more meaningful in this thread.

Take this picture for example, the original poster said “Buddy doesn’t know why, he just does what Cooper does.” It’s a perfect example of the difference of knowing what to do and why to do it.

I don’t feel like the any of the tutorials they(epic) have done so far, even remotely describe why to do something the way they(epic) tells you to. They just tell you what to do, and you hope for the best. I’d go even as far as to say almost every generic tutorial talk/lecture in general i’ve ever seen does a terrible job of describing why to do something a specific way. Epic’s tutorials i feel are also in this boat. Not just c++ tutorials but bp’s too. The how to do something is for documentation, the why to do something is for a tutorial. How to do something is completely useless if you don’t know why you’re doing it. This statement is completely vice versa-able, but the point is we have the how already (docs) we need the why to fulfill in the cracks left over from the docs.

I feel like this is a problem with education in general, but I feel like epic should be aware and try and describe why you would take this specific route ‘z’ in completing ‘x’ or ‘y’ task.
[/]

I believe that is unfortunately true. There are indeed very few good programming tutorials out there. Not just for UE4 but programming in general. Most tutorials are either an API reference in disguise or a recipe how to recreate something piece by piece. The only book about programming that gave me the impression that I really learned something about programming was a book about design patterns that was almost completely ‘programming language agnostic’. All concepts were described with words and pictures and even though there were examples in C I could easily understand why the code was written the way it was. (I should note that I had never read or written anything in C at that point.) Transfering the learned things to my ‘native’ programming language was easy.

Maybe something like that would work for UE4 as well. Start with the project you want to create. Explain the design patterns that are used to achieve that and how that fits into the engine framework. The actual implementation should be straight forward from that point and could be skipped by more experienced C++ programmers. And most importantly: explain why you decided to use that specific design and not one of the hundreds of other possible approaches.

EDIT:
I will add a short example of what could be improved:
I am currently thinking about what would be the best way to implement a basic AI. I know there are behavior trees that are probably designed for that purpose and there is a quickstart tutorial that explains (well, it rather shows than explains) how to create a basic AI. But to be honest, I still do not know why I should use a behavior tree instead of scripting the whole logic in blueprints. I mean I need blueprints anyway and I feel comfortable using them. What are the advantages of using behavior trees or does the usefullness maybe depend on some external factors like the desired complexity of the system. All I took from the tutorial was that behavior trees are some kind of vertically arranged blueprint nodes. I am convinced that they are much more powerful and that there is a purpose for the coexistence of blueprint and behavior trees but at least I did not get it from the tutorial.

For me “Why” is the magic question when it comes to learning. Don’t get me wrong I’m really very appreciative of all the assistance and guidance we’ve received, but unless I know why I’m doing what I’m doing then when what I want to do is slightly different to the video then I sometimes struggle.

I think what would make it that better would be more explanation of the API, maybe something similar to a class library for both C++ and Blueprints, throw in some explanations and examples too. I don’t like making similarities and comparisons with Unity as they are both in completely different stages of their life cycle but something similarly to Unity. Not there videos as they are much of a muchness but a list the functions and uses but more importantly that how, is what it can do and why it does it.

When I was originally learning to programme (hell I even do it now) I would spend ages looking through the Java class libraries, finding out how things worked etc. I think something like that for both the C++ and the Blueprints would be a great help for trying to work out not just how but why we do what we do.

Hi everyone,

C++ documentation is actively being worked on by the documentation team. has posted on the forums several times about this topic and we realize that it is an area that needs some attention. Thank you for your feedback, are there any particular tutorials or documentation that would be particularly beneficial to you? I would be more than happy to pass that information along to be considered!

I honestly never programmed but I digged in anyway because I felt I want to take advantage, at least for my Bachelor to work the Hybrid way. Now my experience took me now 4 weeks where I feel comfortable enough to create basic classes that help me to be reused or define some properties that needs to be spread through several BP Classes. So form there I can only say that it was fairly okay, with the things out there. Maybe I got lucky since I started with 4.6.1 where before some things were applied differently.

But yes I would very much so would love to see much more, and the only things helped me the most were Ramas Wiki Posts in general.

:

Frankly, the technical API documentation is pretty good, and having the Engine source code available is amazing. For experienced C++ programmers who know what they’re looking for, life is pretty good.

The problem is, you don’t know what you’re looking for when you’re new. You don’t know what you don’t know, so to speak. I think the biggest bang for your buck would be more in-depth conceptual documentation. Not just “here are the steps to do X”, or “here are the functions available on class Y”, but pick an area, say Memory Management, Player movement, or AI, or whatever, and do a:

  • Getting started guide. A short high level overview that also tells you the things you should already know before diving in further, with links to resources where you can learn those things if you don’t already know them
  • High-level architecture document that talks about the design from a 10,000 meter view, and also talks about the design choices that were made while creating it. More answers to questions that begin with “Why…”.
  • “Recipes” for common tasks game developers need to do.

You’re already doing a lot of this kind of stuff with Blueprints, mostly in videos. Watching Zach or one of the other technical artists take us through a project is incredibly helpful and I always learn a ton from those videos (Kudos to that team all around). On the other hand, the C++ resources have been much more sparse, and when they exist, like the Intro video series - https://www…com/watch?v=vtcWrcscXos - they tend to be more step-by-step, with a relative dearth of “whys”. They would benefit greatly from more discussion - what different macros and classes we’re being told to use do. When should we use different parameters instead of the ones being used by the author? When might we choose not to use this construct, or what common cases are there were something different would work better.

Overall, it would be good if there was more material with more depth. You’re constantly producing great learning content for Blueprint, but it almost seems like you expect C++ programmers to roll up their sleeves and figure it out the hard way by poking through API docs and engine code. That’s an option for those of us with more programming experience, but it puts up an incredible obstacle to newer C++ programmers or those who want to learn to write code.

[= ;223576]
Hi everyone,

C++ documentation is actively being worked on by the documentation team. has posted on the forums several times about this topic and we realize that it is an area that needs some attention. Thank you for your feedback, are there any particular tutorials or documentation that would be particularly beneficial to you? I would be more than happy to pass that information along to be considered!
[/]

I would like to see some solid explanation of engine “core” - what parts it includes, why and how they work together, just mega basic stuff. 75% of my journey into UE4 C++ was disassembling UE4 in pathetic attempts to understand how exactly such complex system is working, but without experience and guides(And there is none) it’s nearly impossible. I’ve implemented gameplay stuff that I need, but I know almost nothing about engine itself :<

[= ;223576]
Hi everyone,

C++ documentation is actively being worked on by the documentation team. has posted on the forums several times about this topic and we realize that it is an area that needs some attention. Thank you for your feedback, are there any particular tutorials or documentation that would be particularly beneficial to you? I would be more than happy to pass that information along to be considered!
[/]

Thanks for hearing us out about this issue Mr ! =)

For me it is not the isolated topics like “How to make a material” or “How to animate a character” kind of tutorials that needs the primary focus. What Unreal (and usually other programs) lack is the knowledge gained from questions that are addressed and starts with “What”, “Where” & “When”. The “How” i.e. “how to step by step tutorials and documentations” on the other hand are essential of course, but not primary, rather secondary.

To give a good example of an excellent “What”, “Where” & “When” documentation, we have the Qt C++ framework! Qt documentation has a really good grasp of every available class, containing information about the class usage, purpose, functions etc. Also the Qt documentation teaches you the basics about Model/view programming and related Qt classes to it, and also Qt features like the signal slot system… and much more that I could type about but you get the idea already I guess. The Qt documentation gives ALOT of handy information that answers the “What”, “Where” & “When” questions without even touching the tutorial world! Can’t stress it enough that it is so MUCH easier to follow a tutorial about a subject when you only want to know “How” to do something when you already know the answers of the “What”, “Where” & “When” questions.
The “What”, “Where” & “When” questions usually describes the concept of a feature or tool, it’s purpose and why Epic has design it the way they have.

What confuses me the most with Unreal is the “What”, “Where” & “When” questions, when I figure out those question the HOW to do it usually make sense logically and in some cases comes naturally with some minutes of poking around.
BUT to learn the “What”, “Where” & “When” questions with just poking around takes ages… no really it takes freaking long time!

That’s the best way I can currently put my perspective into words, hope I make sense of this subject to you (again from my perspective).

[=;223597]

  • Getting started guide. A short high level overview that also tells you the things you should already know before diving in further, with links to resources where you can learn those things if you don’t already know them
  • High-level architecture document that talks about the design from a 10,000 meter view, and also talks about the design choices that were made while creating it. More answers to questions that begin with “Why…”.
  • “Recipes” for common tasks game developers need to do.

[/]

This is basically exactly what we are working on currently. :slight_smile:

I’m actually picking through the API and source code and writing my own overview of C++ in UE4. its taken a few months to pick it all apart and get a sense of how it all fits together. almost there though now.

Mostly a lot of confusion comes when figuring out the purpose of certain classes. One example is the player controller which is designed to be the will of the player but has a controlRotation that controls the pawn’s view. Also how the movement components, pawns and physics capsules are interrelated. The way I’ve been working it out is to make a list of the flow of operations from the input stack all the way though the controller->pawns->movementComponents->root and figuring out the reason behind the heirarchy. It’s not easy! Sometimes the classes call on their movement components which in turn simply call back on their parents internal function. bit of game of cat and mouse. Once I’m finished, I’ll have a nice flow diagram of how it all fits together.

I think a nice thing to do would be to make a movement component that was somewhere between a pawnMovementComponent and CharacterMovementComponent in terms of complexity.

[=;223278]
Why? The difficulty with Unreal C++ isn’t the C++, it’s the layer of API on top. If you know C++ and understand Blueprints, coding becomes much easier.
[/]

Unreal C++ is C++… don’t confuse people :stuck_out_tongue:

This is good example of what I would like to see in terms of C++ documentation (and thanks, for doing this video).
It shows what you need to know, to get started, not necessary how to build new button, out of context.
It might not teach you how to build button, but it will teach you where to find example implementation, and proceed from here.

With such huge code base as UE4, it’s actually more important to know where and why, than how.

[= ;223612]
This is basically exactly what we are working on currently. :slight_smile:
[/]

Well… carry on then. :slight_smile:

[=;224074]
Unreal C++ is C++… don’t confuse people :stuck_out_tongue:
[/]

Honestly, this really isn’t an unfair distinction to make. I tend to think of Unreal C++ as a distinct dialect of C++ also. Unreal Engine provides a lot of functionality you would normally get from the language, standard libraries, or standard template library. Some of that is very basic functionality like memory management, strings, file management, etc. There are also very specific requirements to make your code work properly with the engine and editor.

Maybe I am the odd man out, but coming from decades ago when I did pascal, C, assemby and such, all we needed was the API, what functions where in it, and a general description of what they did. You figured it out. No hand holding or step by step tutorial was needed.

[=arbopa;224228]
Maybe I am the odd man out, but coming from decades ago when I did pascal, C, assemby and such, all we needed was the API, what functions where in it, and a general description of what they did. You figured it out. No hand holding or step by step tutorial was needed.
[/]

That may be true but why make things so difficult? Just because it is possible to use the Engine without documentation and tutorials it would not be the most userfriendly experience.

[=;224234]
That may be true but why make things so difficult? Just because it is possible to use the Engine without documentation and tutorials it would not be the most userfriendly experience.
[/]

I do not suggest it is intentionally made difficult. Just pointing out that a good coder, with a reference for the API, can usually figure things out. Plus UE4 comes with full source, so if a function is not documented to your liking, it’s easy to find it and see what it does and how. Again, perahps that is simply me being ‘old school coder’ …

Sure, a good coder can do that and a bad coder can become a good coder and then do it as well. But if that principle is applied: why do we need debugger, visual scripting or basically anything that is more than a basic text editor.
And even an excellent coder can probably work more efficient with proper documentation that goes beyond an API reference.

[=arbopa;224228]
Maybe I am the odd man out, but coming from decades ago when I did pascal, C, assemby and such, all we needed was the API, what functions where in it, and a general description of what they did. You figured it out. No hand holding or step by step tutorial was needed.
[/]

It is easy to find out what they do. It is harder to find out why they do it that way. Also without examples on how the API is used you may have a hard time figuring out how to use the library as intended.

The engine code does a good job providing examples for engine modifications. It is lacking in C++ gameplay examples.

Ah, forget I said anything. Clearly we have hit the point where even coders need their hands held to figure anything out. Best of luck with that.