Unreal Engine 4 API

Hello,

Since the release of UE 4.10 I’ve been playing around with the engine and trying out the new updated tutorials. A lot has been changed/added since the last time I worked on the engine (4.6 I believe).
The changes to the editor/engine are great. However, there is one thing that really bothers me.
I am not a seasoned game developer. All my “game development” experience comes from the web. With that said, I do understand most of the concepts and terminology of game development. (I am a soft eng and been programming in c++ for a while)
While using UE4 , I noticed that there are very limited resources on c++ scripting. My main goal is to do most of my projects in c++, and use BP only where appropriate. However, I find UE4 API extremely hard to use and navigate. searching it almost always results in the API call’s representation of its BP version, not the c++ function, and when I finally find the c++ reference, the documentation is very limited/vague with no real life examples. (the web site does states it is a WIP so maybe that’s the reason, I don’t know)
I hate to compare UE4 to , well you guessed it!, Unity but when I tried to learn Unity I was able to pick up its scripting in less then a week. I attribute that to its great API documentation and endless examples.
I know UE4 is still a WIP and a much more complex engine but I sometimes feel that it is intended more for those who come with extensive Game Development background.
so to sum my essay up, my point is, → for an engine as complex as UE4, why is the c++ API is very poorly maintained? I think having an API that is easy to query with examples will make it a much easier learning experience for beginners like myself.

Best,

As a game dev who has used to code with directx libraries I can say this. Epic seems to be focusing on the visual programming side to cater to those who do not have a background in software engineering. Many developers are working to extent the api and you can find their work on github. I think it’s the next evolution in game dev to make these tools accessible to the common person who has an idea but doesn’t have the skills to bring it to life like we do. Someday maybe someone will work on filling the gaps in the c++ learning side. Back in my day we had to have binders for libraries on code references. Instead of nice color picker to get green we would have change color with a hex value like #008000. Coding will always be a challenge. You are stepping into the arena with people who built the electronic age of computers and they didn’t have Google websearch. Work hard and your reward can be to help write some of what’s missing in the c++ training. =) good luck.

I completely agree with this frustration, however; documentation is not fun or sexy and getting people to do it is tough. Epic is focusing their time and money on visual programing atm and letting the C++ documentation slip… I can see why they’re doing it, it’s a huge draw to get new devs in, but they really need to update the c++ documentation every 4 or 5 version releases… there are STILL undocumented UPROPERTY flags (NoRep I’m looking at you) that cause all kinds of weird behaviors when used… and it’s a super useful flag for USTRUCTs!

I think the BP system in UE4 is a brilliant idea and one which is now being imitated by its competitors (thru plugins etc). However, the BP caters mostly to those who come from art/graphic-design background. Although easy to learn (mainly because it is well documented), I find it cumbersome. It can quickly get messy and all over the place with spaghetti like patterns of nodes and connectors on the screen.
My point is, from what I have seen in UE4, a simple task that can be achieved in 1-2 lines of c++ , might become a huge network of BP nodes. As the game logic grows, so does the network of nodes. Soon it becomes unmanageable.
This is probably why I never really liked visual programming. A lot of commercial software nowadays offer visual programming as an alternative, but I always go with the old school scripting because its much more maintainable and readable.

Ultimately, it is Epic’s decision how they want to allocate resources. I think it is great that the community helps with the c++ documentation but Epic needs to realize the importance of having a solid and high quality documentation, not only for their BP but also for their c++ api.

Hey everyone,

I understand that this is an important issue and we appreciate your feedback, however the AnswerHub is for very specific questions about the engine rather than general discussion. This type of conversation would best be heard and received in the feedback section on the Epic Games forums (https://forums.unrealengine./forumdisplay.php?24-Feedback-for-Epic).

Cheers

Hi ,

When I initially posted this comment, I thought people will respond back with links or locations where I could find a much more detailed API documentation. I can see now how this manifested itself into a feedback/comment to Epic’s development team.
I would appreciate if a moderator can migrate this thread to the ue4 feedback forum where it can be heard and received.

Much appreciated
Rob

There is not BP version of the function, they work exact the same 90% cases, if you learn how they work in BP you already will know how they work in C++, they will be acting the same, so you can use those BP tutorials too. Learn C++ syntax, thats the key, if you learn that lot of things in API refrence becomes selfexplenetory.

I personally don’t need examples (in most cases), for me lot of stuff are self explanatory, function and varables for me are like button and switchis with labels and they do what is explained if not i always find way how they work by expirance, but i know there people who needs that to understand things. But i also think API Refrence getting worse actully it starting to miss many function varables even entire classes (in most cases abstract classes), here you have example:

https://docs.unrealengine./latest/INT/API/Runtime/Engine/Components/UMeshComponent/index.html

It actully makes lurking in UE4 source code more reliable then API refrence

There are a LOT of inconsistencies between BP and C++ raycasting for example in C++ does not have built in debugging tools also there is no direct equivalent of the BP printtext, just to name a few.

BP are great for prototyping. I use them a lot to test ideas then go and write the c++ equivalent (which takes about 4x as long on most things, though there are some edge cases that are quicker to implement in C++ )

Dear rob8861,
So I your help page on “https://answers.unrealengine./questions/362680/unreal-engine-4-api.html” and I am really ***** off. “I was able to pick up its scripting in less then a week.”
I am currently doing Arduino using C and I found that the scripting to be very similar to unity and not UE4. I outraigersly agree with you and are so happy to this post of bad news. My current help item is “https://answers.unrealengine./questions/350913/c-error-to-be-fixed-for-skletle-mesh.html” By “EyeDee10Tee” “Epic seems to be focusing on the visual programming side” Yet I have still not found the reference to do AI in Blueprints, and if Blueprints require C++ for maximum performance then UE4 are not ready to move people to Blueprints only. If you want to find out a little more about my only reason to use UE4 then please ask about it. Do I change from UE4(The best developers tool.) to Unity(Why did they name it that?)? I will keep in UE4 and they need to split the guide to favour the beginners and advanced. I could not sent this message through the forum.
From 1999.

Didnt i told you the 90% of blueprint nodes and 100% of all function nodes are C++ functions and they can be normally called? PrintString is no exception (btw one search needed to find this):

https://docs.unrealengine./latest/INT/API/Runtime/Engine/Kismet/UKismetSystemLibrary/PrintString/index.html

But there more appropiate function to use in C++ (this one actully i learned from first C++ video tutorial):

https://docs.unrealengine./latest/INT/API/Runtime/Engine/Engine/UEngine/AddOnScreenDebugMessage/1/index.html

C++ also have a debugger, obvuesly you need to use diffrent one as C++ generates native code.