Handmade Hero»Forums»Game
7 posts
Can Handmade Hero teach me how to Develop a 3D game Engine?
Edited by Pooria on Reason: Initial post
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 ^^
Mārtiņš Možeiko
2237 posts / 1 project
Can Handmade Hero teach me how to Develop a 3D game Engine?
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.
7 posts
Can Handmade Hero teach me how to Develop a 3D game Engine?
Edited by Pooria on
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 ^^
Mārtiņš Možeiko
2237 posts / 1 project
Can Handmade Hero teach me how to Develop a 3D game Engine?
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.
7 posts
Can Handmade Hero teach me how to Develop a 3D game Engine?
Edited by Pooria on
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.
Simon Anciaux
1109 posts
Can Handmade Hero teach me how to Develop a 3D game Engine?
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.
7 posts
Can Handmade Hero teach me how to Develop a 3D game Engine?
Edited by Pooria on
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 :(
Asaf Gartner
50 posts
Handmade Network Staff
Can Handmade Hero teach me how to Develop a 3D game Engine?
You'll probably find a lot of useful information in the blackboard sessions.
101 posts
Can Handmade Hero teach me how to Develop a 3D game Engine?
Edited by pragmatic_hero on
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.
7 posts
Can Handmade Hero teach me how to Develop a 3D game Engine?
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?
101 posts
Can Handmade Hero teach me how to Develop a 3D game Engine?
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.
Oliver Marsh
177 posts / 1 project
A budding game developer and programmer
Can Handmade Hero teach me how to Develop a 3D game Engine?
Edited by Oliver Marsh on
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.
7 posts
Can Handmade Hero teach me how to Develop a 3D game Engine?
Edited by Pooria 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.
19 posts
Can Handmade Hero teach me how to Develop a 3D game Engine?
If you just want to learn the math to do 3D, Math for Programmers and Chilli's series are great