Download

Will learning Directx help me with UE4 programming?

Hello community,

I shall introduce myself really short first, I’m a C++ programmer and I want to start making
games for some time. Unreal Engine 4 is my engine choice.

But I have a problem: I want to start making games with Unreal Engine 4, but my current
PC can’t handle it. I’m getting a new pc in some moths probably, but in the meantime I want to
start already. Before I decided to start with Unreal, I doubted if I should use an engine immidiately or
first make an engine with directx to learn more about game mechanics before I started.

In the end, I chose Unreal, but now I thought about the following: I can start with
learning Directx untill I get my pc and if I like it, I can still keep learning it alongside
Unreal Engine 4. But I only want to do this, if might help me a bit in understanding (making games with/programming in) Unreal Engine 4.

So my question: Will learning Directx help me in understanding making games with/programming in Unreal Engine 4.

Thanks

You will learn valuable knowledge but it will not be useful for UE4.

If you are not familiar with linear algebra it will help you understand how to work in 3D in general.

First: “DirectX” is an old technology umbrella, that used to include things like DirectPlay (networking) DirectInput (controllers) DirectSound (sound) as well as Direct3D (3D graphics.)
All of those bits have been deprecated by Microsoft for a long time, except for Direct3D. Thus, if you want to learn networking, you should look at WinSock. If you want to learn sound, you should look at CoreAudio. If you want to learn controllers, you should look at XInput.

But, for 3D graphics, Direct3D is where it’s at. And, understanding how the 3D graphics hardware works is very important if you want to go deep inside getting AAA-level results from the Unreal Engine.
However, that’s not something you’ll get from following a few tutorials online. You’ll need to work with a variety of hardware and a variety of kinds of source art, ideally in a variety of environments and art pipelines, to get a really good understanding of where each “knob” lives in the whole pipeline from concept art to pixels on the screen.

I think that there are things you will do better in Unreal Engine if you have a deep understanding of game graphics, and one of the parts of having a deep understanding of game graphics is understanding the rendering hardware and rendering API. That being said, the rendering APIs have gone through a significant morphing in the last few years, to the point where the current API (Direct3D 12) has approximately nothing in common with the previous “anchor” iteration (Direct3D 9) which in turn had big changes from the previous “anchor” before that (Direct3D 7.) D3D12 works on treating the GPU as a co-processor, with lots of interesting systems programming primitives and synchronization. Graphics programmers now have to have kernel-programming-like skills .D3D9 was the big “shaders are a thing!” release, where programmers had to start solving the lighting equation for their rendering, rather than using pre-canned light/texture set-ups from the hardware. D3D7 was the last best hooray of the “fixed function” pipeline, where you had a set of textures, a set of pre-defined vertex formats, and a set of pre-defined (per-vertex) lights, that you combined to get the results you wanted.

So, the answer is, ultimately, “yes”: Having a deep understanding of Direct3D is important to have a deep understanding of how Unreal Engine 4 will perform under AAA-like conditions.
But, for you, the answer may very well be “no”: Unless you have five or ten years to spend immersing yourself in the variety of graphics pipelines and technologies used in industry, going through a couple of newbie tutorials on 3D rendering isn’t that helpful.

The 3D graphics math is still helpful, though! Focus on understanding vectors, matrices, quaternions, and how the rendering pipeline transforms and coordinate systems interact. That is super important for any success in 3D gaming!