How hard is unreal engine c++?

You need to have a very good understanding of Object Oriented Programming (OOP) to be able to work in Unreal, period. It is absolutely built 100% on that concept, although I think there’s a lot of people out there who have a very good understanding of Unreal, and have no idea that they actually 100% know OOP. :smiley:

You also basically cannot work in C++ without some form of OOP concepts. OOP is pretty much completely out of favor with Javascript programmers, and the support for it in PHP is absolutely terrible, and has been for quite a long time, despite some people’s claims that PHP is amazing at it. Those people either don’t understand PHP or don’t understand OOP.

But, what’s even more important, is flat out experience. Spend time getting to know things in the game. Follow tutorials, and learn how things in the engine work. You’ll get the rest of it.

2 Likes

It’s 2021. Can you call yourself a programmer if you don’t understand OOP???

They must be idiots. Everything in JS is basically an object. Down to the array structures.
So either you herd wrong, or you should unfriend a bunch of people.

I think you have poor understanding of PHP if you think it’s terrible at it.
It’s not great, but even in php almost everything coming in is an object of some sort.
Many are just directly accessible and native too. Like $SERVER to name a variable that’s basically the equivalent of an object.

Everything’s an object in Javascript, but as far as i’m aware, declarative programming has taken the javascript world by storm. OOP as we used it in C++ is mostly unnecessary in JS. And given that the object inheritance is totally different between C++ and JS, i don’t know that even if you do know how it all works in JS means it translates well to C++

Last I used PHP was 5.0, and it was awful. People I know who use PHP to this day, tell me that it never got any better at it. ::shrug::

OOP was possible in php.4 already. It got a bit better, but its not the main use of the language for sure, so its not very crucial or practical.
Like everything some things work, some don’t.

An oop approach to a CMS means you create a page object with variables and derive other objects form it.

In practice, on websites nothing is that static and the data that changes comes in from a database.

Ergo, there’s almost no need to “think” of a page as an object.
Doesn’t mean that people haven’t coded an object without realizing it in the end.

That said, mysql access is done via an object that you access functions for via → (instead of .).

Somewhat similar with JS, except not really.
Any time you mess with the DOM you are acting and interacting with strongly typed objects - almost like you do in c++.
All Dom objects tend to have their own definitions and functions to call.

The only real difference is that you don’t need to ever create a header file and instantiate variables. It’s all essentially done for you.

This doesn’t stop you from creating a custom object with custom properties. In fact, things run a lot smoother.
To the point you can re make a browser based arkanoid clone with billions of spawning cubes (divs) and have it run way faster than unreal ever would the way they have left it crippled for the past soon to be 2 years, and counting.

Last thing, don’t p*ss on php. It’s mostly C++.
To the point you can actually encode all php pages and develop a server-side c++ executable that converts it securely (so clients are unable to steal source code without major workarounds).

Arguably, it’s not as powerful as other things. But you know what? LAMP is far better than anything else. And it scales way better too.

The only reason C# and m$ azure still exist is that they are a fracking vanity plate since you have to actually hire an engineer to code a website with it.

Also, while on this topic, the memory footprint difference between mysql ans ms sql is ridiculous.

Tell me where in 2021 have you ever even herd of a piece of software that must keep a whole database in RAM to be able to access it.
Nowhere that’s where. Unless you have to set up a mssql server.

there’s tons of tutorials for blueprint on youtube, and almost none for c++ of UE. this is a big concern for me too.

unity and c# has tons of tutorials for it, so depending on how tough UE is to code for I might switch over to that one. I am planning to try both engines out and see how they compare. everyone has been saying how the UE documentation is horrible, and couple this with no tutorials for c++ …

There are some c++ tutorials, but how does it help you to see those on YouTube?

It’s much better if you pull the old wiki out of a search and just follow the advice and tutorials people like Rama used to share on it once upon a time.

Realistically, the only way you’ll ever learn something is to either take apart something else.
Or to attempt to do it, fail at it, and do it yet again… by the 10th re-do or so, you usually have things down.

It’s time consuming. Sure.
So are other engines though.

1 Like

Quoted for truth.

100%, I worked in many different engines in my career, we don’t have tutorials all over the net, we are told, to learn it in a week or days… when I STARTED in the 80-90’s, we had trial and error, I still do alot on trial and error if its new to me, sure, I check docs, if they are around, I may search around… one thing I learned when teaching others, that there is a lot of BAD info out there and people teaching others bad habits…

Now as far as learning a language, you don’t need to learn Unreal… You can TAKE any C++ resources and learn it… Sure API will be a small problem, but if you understand what your doing its a small problem… Now every single person I got to move from BIAS Unity, and C#, people are always like, there is not enough resources to learn C++ and Unreal… That is nonsense… C++ is widely used in this industry and for good reason… So plenty of resources… .Today’s programmers have it GOOD, due to resources, compared to us old timers…

This may seem weird, but if you’re new to game programming, I’d suggest you learn Unity first.
Unreal is great but it offers A LOT. A bit overwhelming for new developers I’d say.

Unity is fairly barebones. You get a game engine and that’s pretty much it. You don’t have to worry about anything. You can just mess about and see what works. It is also extremely well documented; this will help you understand basic game programming concepts. Not to mention there’s a lot of free material on YouTube for it.

With Unreal, you have to understand how Unreal works on a lower level before you can really do anything in it, otherwise, you’re going to get a lot of unexpected results. But in order to understand how Unreal works on a lower level, you kinda need to already know quite a bit of intermediate or even advanced game programming concepts.

I have made entire gui apps from scratch using C++ and QT api, and so knowing c++ isn’t the problem for me, i’m not an expert at c++ theres still a lot i don’t know, i didn’t learn templates at all, stuff like that. BUT knowing c++ doesn’t tell me anything about how the game engine works. How does knowing c++ tell me I need to use an “actor component” with my “actors”, especially when the c++ way would be to just subclass it…

how am i meant to know what an actor even is or what it’s for without reading some documents? That’s not C++ related at all and you need to know it to do anything. how would you know that you need to write UCLASS and all those other special little words that aren’t part of the c++ spec without reading about it first?

the api documentation is next to worthless, it doesn’t say what any of these functions are for or how they relate to other parts of the api. i found a handful of tutorials made by epic, and a few more in books and on youtube but there isn’t much.

“ALL YOU NEED IS C++ KNOWLEDGE AND YOU’LL BE ABLE TO PROGRAM UE”!!!
Sorry I’m not buying it, that’s bogus, you guys aren’t being honest about this.

I think you are the one overthinking stuff.

Like any other coding thing. You either pick one apart that’s working to see how things are done, or you open the header and read the functions that come with a specific item.

NOT that you are wrong about the documentation, mind you.
But if you need hand holding to code stuff I don’t think you can call yourself a programmer, and you definitely cannot call yourself a professional.

The engine is an API.
How do you use an API without documentation? You read the header files…
It’s sure not a road block nor an insurmountable obstacle.

Individual API function documentation may be, but there’s plenty of documentation throughout the Epic site.

Have you read all the pages here? Programming with C++ | Unreal Engine 4.27 Documentation

If you are super comfortable with programming and have some familiarity with game engines already, go straight to C++ IMHO.

Afaik you only “need” to use a minimal amount of blueprints for setting up skeletal animations, callbacks from UMG UI, and inside the material editor. I’ve shipped 4 commercial projects with almost no blueprints except where required.

We went pure C++ from the start because you used to not even be able to “diff” blueprints. Though I think you can now? I couldn’t fathom not being able to diff every repo check-in for exactly what changed. :dizzy_face:

For those who want to learn C++ without any C++ experience here’s a strategy that might work for you.

First try and gain some proficiency in 2-3 subsystems within UE using Blueprints.
General UI , Shaders, and Animation.

General UI and productivity
Get comfortable using the engine.

Free : did some power packed videos for UE Short Film Challenge Australia - Interior Environments (Recommended) - UE Short Film Challenge Australia [12/08/2020] - YouTube

Shaders
Creating shaders forced me to use the same BP nodes often and thereby burn the learning into muscle memory. Materials instances provide quick feedback so you don’t even need to press play most of the time.

Free : Dokipens tech art playlist helped me a ton - tech art fundamentals playlist UE4 Tech Art 1 - UV Fundamentals - YouTube

Animation
Once I burned some patterns into muscle memory I went onto Animation. Animation in UE is quite deep. So the below course is an ideal introduction.

Free : Basics course by the talented Louis Cataldi of Epic on Unreal’s own learning platform.

C++ Fundamentals
Free : Fahirs C++ essentials for UE Learning C++ For Unreal Engine - YouTube

Paid : https://www.udemy.com/course/learn-cpp-for-ue4-unit-1/ This should put you in a very comfortable place before you take on any intermediate UE C++ Game Development courses.

Cheers,

YouTube

Unreal Engine

Interior Environments (Recommended) - UE Short Film Challenge Austr…

Image

YouTube

UE4 Tech Art 1 - UV Fundamentals

This is the first course in a series of tech art courses. Here we look at the fundamentals of manipulating vectors and UVs in 2D and also begin to look at ra…

Image

Unreal Engine

Unreal Editor Fundamentals - Animation - Unreal Engine

In this course, you’ll get an introduction to Unreal Engine’s Animation system, exploring the Blueprint Editor and various other tools by animating a wolf character.

YouTube

Learning C++ For Unreal Engine

Image

Udemy

Learn C++ for Game Development: Make a Game in C++ from Scratch

Learn the basics of C++ to prepare you for game development programming!

1 Like

I find UE4 C++ harder than regular C++ with all the modified functions and pointer variables that point everywhere to all those functions stored in addresses. It can get confusing at times and hard to understand.

Regular C++ casual simple mode is easy to understand at least from my view.

Even the constructors and the way classes are structured is different from regular c++ and you just end up calling functions with pointers that don’t even know what they do to get into the fog of guessing.

Pointers pointers pointers for everyone all over the place.
I guess this is the solution to optimized system because it loads faster from direct memory access but you have no idea what you are calling and there are like tones of built in functions pre written.

I haven’t seen for example docs on class objects to use as keys on function calls because the whole system is based on pointers that point all over the place, to some memory address that you have no idea on where it is what are you pointing at.

Cool let’s just create a * and say point to → because it works.

Simplest example
SpringArmComponent->SetupAttachment(RootComponent);

You don’t know where you are pointing and what is behind that nor how the memory address is setup, all you know you created a pointer with an asterix and are pointing at some attachment thing to attach some component.

So these are for simplicity to get things done fast, but you study C++ for like an year and come here and say what is this ?

It’s a complete UFO for you until you get a grasp on UE Extra ++

Let’s just call this for the sake of every one API based ++C++ or derived.
So this is more like API call system where you can also add some C++

1 Like

If you studied C++ for a year and didn’t get an advanced knowledge of how pointers operate, you didn’t study C++. Without the pointer, you can’t even use the ++ part of C++, and even in straight C, you’d be severely limiting yourself.

The type of variable tells you what it is you are pointing at. Assuming you actually initialized it to something, because if you didn’t, I can 100% guarantee you it’s not pointing at anything inparticular. It’s not like you’re using (void *) pointers, which could actually be literally anything. The compiler won’t let a USpringArmComponent* variable point to a thing that is not a USpringArmComponent. (at least not without you doing something to intentionally force it to do the bad thing)

I have not yet got to the “point” where I fully understand pointers lol.
I can understand basic concept behind it, but pointers get complicated after that where things switch and are very dynamic and complicated . It’s not like you only study pointers when you study C++ , one year is just a brush off I consider, where maybe you have an hour or two per day allocated to study C++

Basic understanding is you create a pointer variable and then point at an address where some things are stored, to store, modify, refrence and so on. But it is even more complicated with unreal engine to understand what you are pointing at, like get an idea what is going on, because you don’t know what is inside the function body, and that function calls maybe another function that is also stored with pointers somewhere that has some connection to another component with another function and variables else where stored with pointers in memory and of course you have no idea what is going on because they are like connected with these pointer variables in a maze like pattern and the only thing you do understand is the C++ you write when you do write it to like add to the rest of the already built in system.

You get the picture. It’s a maze of pointer system reflecting on each other.
I have no idea how complex maze pointer system works and how functions, classes, variables get stored in this system in a more elaborate way, it’s like a huge cross refrence , I don’t know if you can understand what I want to say. It’s hard to understand how all these things get called by being connected in the pointer web maze system.

So we only have a basic understanding, like okay this attach to that fine, it will work (I have no idea what is behind that lol) This is just the pointer system with unreal, the rest is fine and more understandable, more down to earth C++ like.

Idk. I don’t really see any complications with Unreal’s pointers.

Only thing that is somewhat complicated is something like TSharedPtr. If I’m correct, it’s basically a way of telling Unreal to treat a non-Unreal class as a garbage collectible object. I think it has stuff to do with thread safety too but that’s too much for me.

I just got into an argument with someone on discord about pointers.
He was MIT, Mythological Instinctual Temperal character.

There are examples and tutorial of advanced pointer manipulation that do not look simple at all.

Anyway I was telling him that pointer is just a refrence to an object located inside of memory.
He said it’s not a refrence, but it is a refrence.

So imagine two people talking, and they are talking about a person, and one is talking the other is listening and the one talking is talking about the other person that is not there, and the other guy stops him and says, who are you talking about , who are you refering to, and he says, why I’m “reffering to” "then says the name of the character. So his name becomes a refrence to all they talked about, only now it’s clear who they are talking about.

His name, his address may be a refrence to him and what he is about, so pointer refrence is in fact the address in hexa decimal code and it’s an address for the content living inside that address.

So it’s called actually a refrence because of the locking of address, it’s a permanent address in a dynamic sea, the lock creates a permanent reffrence where the the content lives permanent, and this is called direct memory alocation, and direct memory access, while the rest is random memory access and alocation, and it fluctuates, changes address and so on in a random way. There for the name RAM - random memory.

Will some one tell the softaware enginere what Ram and locking is, the engeneier from planet Jupiter.

I will give you some stuff if you want I have to dig on my PC with complex pointer system, to see how complicated it can become, with Tables of Arrays interchanging addresses moving things inside the ram, to create a dynamic structure that fluctuates by interchanging places.

I could go on. The individual data of the elements of a table get allocated with calculations per bit, per bits, and so on, each get’s alocated depending on the dynamic function call.

I cannot , I am not there regarding this, I need to go over the pointer system over and over, anyone does to learn good.

I actually understand basic pointers and where they reside.

Man, I really don’t know what you’re saying here. All I know is that my understanding of it is obviously somewhat correct since it works.

Is a pointer a reference or is what the pointer is pointing to a reference? I’m not a C know it all, but I would say neither is true. In C, aren’t pointers and references defined as entirely different things?
At the end of the day, does it even matter what you think it is, as long as you understand how to use it? It’s contains a memory address to the actual value. That’s all I need to know.

I just looked at the previous example you gave with the SpringArmComponent and I have no idea what you’re talking about there either. That example isn’t even Unreal-specific. It applies to pretty much every programming language. It’s how variables work?