Part of my job is to fly around the world to various developers, quickly learn their toolsets and help them raise the quality bar on their games. As such I’ve learned and used a ton of engines. I’m good at picking them up quickly. Somehow I’ve never needed to learn Unreal 4 before.
- I can do everything from modeling, FX, animation, to programming, so depth of systems hasn’t bothered me.
- I am new to C++ but as an expert in C# I went through C++ collage course work in a few days and have not found the C++ itself to be a barrier.
- I’ve gone though and learned every system in the documentation at a surface level.
- I’ve gone through almost every tutorial. I’m now recreating blueprint tutorials in C++ to ensure my total understanding of the engine before building my own small game project. Once that is done I’ll be ready to help a developer with their production.
So with the above in mind I wanted to give some feedback on my experience learning Unreal.
I’m extremely impressed with the tools. They are some of the best I’ve used in the industry. They are not as specialized as some of the proprietary engines (obviously) but are an amazingly polished and functional set of tools. I wont be able to fully judge the engine till shipping something with it, but my first impressions are extremely positive great.
Love the workflow.
The documentation and learning resources have a long way to go. Especially your API documentation. It reminds me of learning a proprietary engine. If I didn’t have experts in Unreal to help my learn I’d be having a lot of trouble.
The combination of sub-par API documentation, with the heavy use of macros (gross), and the lack of a scripting language makes learning the engine very difficult. There are a few reasons for this:
Its very hard to trace back through the code to see what the engine is doing before getting lost in Macro hell. (I do use VAssistX)
There is a fuzzy line between gameplay logic and engine stuff I probably don’t care about. This lowers accessibility dramatically.
The API documentation is nigh useless, even confusing at times with poorly written explanations.
As an example (not to start a Unity vs. Unreal thread, they are both good for different things, this is simply an example of solid easy to understand documentation to provide contrast.)
Awake In Unity -this document fully explains what Awake is, how it is used, and provides an example.
BeginPlay in Unreal - doesn’t explain when this is called relative to other things in the engine, or why I would use it.
PostInitProperties in Unreal - doesn’t provide any example of use, the sentence in remarks is actually confusing. “mainly this is to emulate some behavior of when the constructor was called after the properties were initialized.” what? Emulate some behavior of when the constructor was called?
I think the sentence is saying something like: “This is first event called after all actors have been created by the GameMode and before BeginPlay. While an actors constructor is called when the actor is created you can be sure that all actors that are initially created at startup by the game mode exist when PostInitProperites is called. As such you can use it to… ???” A graph like UWorld ->GameMode → Actors (constructors called on creation) → PostInitProperites → (other stuff) → BeginPlay would go a long way.
So all in all:
-I’m excited to use the engine, the tools are amazingly powerful, fast, and fun.
-I highly recommend a separate API documentation (or section) that eliminates all the deeper engine functions that will not be commonly referenced by gameplay code. I don’t want to filter this myself.
-I highly recommend spending some time writing API documents.
-I recommend having someone who doesn’t know the engine very well UR your tutorials and documents (not just the API documentation). You guys have a tendency to write like highly skilled engineers who have worked in the engine for a long time. (like a rocket scientist explaining the detailed process of how fire comes out the back of the engine to make thrust…do I need to know exactly how the fuel mixes with oxygen and all that? Probably not when I’m just trying to make the rocket go, I’m ok with that being magic. I just want to know that fire comes out the back of the engine creating thrust if I put in fuel and press the start button.) I think some UR would help prioritize what information is shared and how.
Really great work on this engine, It came along way from Unreal 3. Can’t wait to use it more!