Can Handmade Hero teach me how to Develop a 3D game Engine?

Hello
I'm good at old C++ and C++11/14/17, and very much interested in the idea of developing a 3D game engine which would be capable of making a FPS game, can this Handmade hero series help me? I know it's developing its own game engine but don't know what it'll be capable of!!
Thanks ^^

Edited by Pooria on Reason: Initial post
HH mostly will teach you about how to think about code when writing games or how to better structure data for your code to run fast. In HH you can learn about some basic functionality, for example, some Windows API, multi-threading, simd programming, debug system, etc.. that are common to all game engines. But it will not teach you all necessary things that are needed for "3d fps game". You'll need to learn about most of needed things yourself.
mmozeiko
HH mostly will teach you about how to think about code when writing games or how to better structure data for your code to run fast. In HH you can learn about some basic functionality, for example, some Windows API, multi-threading, simd programming, debug system, etc.. that are common to all game engines. But it will not teach you all necessary things that are needed for "3d fps game". You'll need to learn about most of needed things yourself.

Thanks for reply, can you tell me which things aren't covered by HH and are needed for a 3D game Engine? BTW I'm not sure if it makes any difference but I'm not gonna dev a fps I want to dev an Engine capable of creating a fps ^^

Edited by Pooria on
There is not such thing as list of things "needed for a 3d engine". Each engine is different depending on features/capabilities/target audience. Just open homepage of any big 3d engine (unreal? cryengine?) and check out their feature lists, that will give you a feeling what HH does not have and won't have.
mmozeiko
There is not such thing as list of things "needed for a 3d engine". Each engine is different depending on features/capabilities/target audience. Just open homepage of any big 3d engine (unreal? cryengine?) and check out their feature lists, that will give you a feeling what HH does not have and won't have.

Not intending to implement Unreal/CryEngine again really X'D , let me ask it this way, can it teach basics required like placing some objects around with this engine and then moving the camera around FPS style? as simple as that ^^ , that'd be enough to get me started.

Edited by Pooria on
Handmade Hero will help you with opening a window, creating an OpenGL context, creating some shader, adding object in the world in 2d and 3d, some 2d collision, adding sounds, and understanding the math being all that. With that you could have the basis to make a bare bone (not ready to use to make a serious game) fps engine. But it will take time to get all that as it's spread across lots of episodes. Also you'll need more math than what's covered (for example: Quaternion).

I don't know if it's still going on but there is a Handmade Quake video series that is recreating the Quake (2 ?) engine. But I don't know what the series covers.
mrmixer
Handmade Hero will help you with opening a window, creating an OpenGL context, creating some shader, adding object in the world in 2d and 3d, some 2d collision, adding sounds, and understanding the math being all that. With that you could have the basis to make a bare bone (not ready to use to make a serious game) fps engine. But it will take time to get all that as it's spread across lots of episodes. Also you'll need more math than what's covered (for example: Quaternion).

I don't know if it's still going on but there is a Handmade Quake video series that is recreating the Quake (2 ?) engine. But I don't know what the series covers.

Thanks for clarification, actually I'm aware of the math involved and possess math books I'd need already ^^ , as an example this is a book about Quaternions I'm gonna use, so overall do you think HH would be a good starting point for me? BTW that Handmade Quake would've been perfect if it had been finished which sadly is not the case :(

Edited by Pooria on
You'll probably find a lot of useful information in the blackboard sessions.
1. You don't need an engine to make a FPS.
2. You don't need quaternions to make a FPS.
Frankly you don't even need SIMD (outside of what compilers spits out for you on release build) or multithreading.

People have this tendency here to over-complicate things.
You can even initially avoid shaders to reduce scope of things you have to learn at once.

Take a look at CUBE game, http://cubeengine.com/cube.php.
And how little code it has, even though it has multiplayer and a built in editor.

And frankly the code here could even be shorter since CUBE does occlusion culling to avoid overdraw, and you can really just use one VBO (or couple of chunked VBOs for the whole level).

You can have a simple CUBE or voxel like *engine* in something close to *zero lines of code*.

All you need is a good understanding of vectormath, matrices and transforms. Plus basic OpenGL and GLFW/SDL.

You can bolt on things on top of that quite easily once you've got the hang of it.

Quake2 like engine is slightly more complicated. Collision detection & response is more tricky, and lightmap baking is more involved (or you can use an external tool for that). But it still can be pulled of with very low LoC.

Edited by pragmatic_hero on
AsafG
You'll probably find a lot of useful information in the blackboard sessions.

Was aware of that thanks anyway.
pragmatic_hero
1. You don't need an engine to make a FPS.
2. You don't need quaternions to make a FPS.
Frankly you don't even need SIMD (outside of what compilers spits out for you on release build) or multithreading.

People have this tendency here to over-complicate things.
You can even initially avoid shaders to reduce scope of things you have to learn at once.

Take a look at CUBE game, http://cubeengine.com/cube.php.
And how little code it has, even though it has multiplayer and a built in editor.

And frankly the code here could even be shorter since CUBE does occlusion culling to avoid overdraw, and you can really just use one VBO (or couple of chunked VBOs for the whole level).

You can have a simple CUBE or voxel like *engine* in something close to *zero lines of code*.

All you need is a good understanding of vectormath, matrices and transforms. Plus basic OpenGL and GLFW/SDL.

You can bolt on things on top of that quite easily once you've got the hang of it.

Quake2 like engine is slightly more complicated. Collision detection & response is more tricky, and lightmap baking is more involved (or you can use an external tool for that). But it still can be pulled of with very low LoC.

Actually I've seen two people saying they have their own engines now after following HH, you can see one of them saying he has an engine 3D capable in reddit in this post and another one that's even more interesting to me is this guy who says in this thread this:
I failed high-school math, and couldn't even spell linear algebra two years ago. I'd never done any game programming to speak of, and had never written any C code before starting Handmade Hero.
After watching through most of the series, and writing a 3d engine (HH style, no libraries), I have internalized an amazing amount; the vast majority of what Casey's gone over. I agree that often times he goes into more detail than necessary - even for me, who started knowing literally nothing about what he was talking about, but I would attribute the amount of learning I've gotten out of the series to exactly that. For someone that doesn't understand the difference between an Object Transform and a Camera Transform, the only way for them to actually learn what they are is to hammer it home again and again - through examples and practice. I think I am exactly his target audience - young programmers who want to learn how to make video games.

Just my 2c
this second one claims it's a 3D engine but I have failed to find a way to contact him to get some more info, so that's where I got the initial motivation of following HH to build a 3D engine lol ^^ , now do you recommend taking another path?
Pooria
now do you recommend taking another path?

Yes, it's called making a game. GLFW/SDL + OpenGL + stb_image or whatever and you're good to go.
It's quite simple frankly, the technical parts at least.

The whole obsession with "engines" is silly and completely unnecessary.
Especially when those "engines" in question are a little more than simple platform abstraction layers and badly thought out wrappers around OpenGL.

I think that "good engines" (read: extractable reusable parts) are borne out of making games. Not the other way around.
What I found most valuable from Handmade Hero was Casey's coding style, his way of thinking about problems, how to organise a code base, and how to approach problems. As people said there is definitely information about 3d engine programming like matrices in there. I think researching specific things from a range of sources when making say a 3d engine would be the best option, but I always find Casey's thinking and viewpoint very useful in how to integrate it into the code base, how the data should be organised, what the API should look like etc. Almost the meta thinking.

Edited by Oliver Marsh on
Thanks for all the info guys, for sure watching Handmade Hero has a lot of benefits anyways and I even found out in this thread that Casey might go for a 3D game tutorial after being done with Handmade Hero which shall be of even more help to me.

Edited by Pooria on
If you just want to learn the math to do 3D, Math for Programmers and Chilli's series are great