Handmade Hero»Episode Guide
Adding Cubes to the Renderer
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:08Recap and set the stage for the day
0:08Recap and set the stage for the day
0:08Recap and set the stage for the day
1:28Run the game to demo the trees always facing the camera
1:28Run the game to demo the trees always facing the camera
1:28Run the game to demo the trees always facing the camera
5:13Blackboard: Camera-Facing Cards
5:13Blackboard: Camera-Facing Cards
5:13Blackboard: Camera-Facing Cards
9:37Blackboard: Talking about X/Y planes in camera space
9:37Blackboard: Talking about X/Y planes in camera space
9:37Blackboard: Talking about X/Y planes in camera space
11:06handmade_render_group.cpp: Show the PushBitmap() code which maps the world space positions into camera space
11:06handmade_render_group.cpp: Show the PushBitmap() code which maps the world space positions into camera space
11:06handmade_render_group.cpp: Show the PushBitmap() code which maps the world space positions into camera space
12:01Run the game to demo the camera tilt, and consider sorting and the concept of a debug camera
12:01Run the game to demo the camera tilt, and consider sorting and the concept of a debug camera
12:01Run the game to demo the camera tilt, and consider sorting and the concept of a debug camera
15:17handmade_render_group.h: Introduce camera_transform_flag to aid implementing a debug camera
15:17handmade_render_group.h: Introduce camera_transform_flag to aid implementing a debug camera
15:17handmade_render_group.h: Introduce camera_transform_flag to aid implementing a debug camera
17:43handmade_world_mode.cpp: Enable UpdateAndRenderWorld() to call SetCameraTransform() twice with different arguments
17:43handmade_world_mode.cpp: Enable UpdateAndRenderWorld() to call SetCameraTransform() twice with different arguments
17:43handmade_world_mode.cpp: Enable UpdateAndRenderWorld() to call SetCameraTransform() twice with different arguments
23:53Run the game to try toggling between the two cameras, and consider how to handle sprite cards intersecting
23:53Run the game to try toggling between the two cameras, and consider how to handle sprite cards intersecting
23:53Run the game to try toggling between the two cameras, and consider how to handle sprite cards intersecting
33:28Blackboard: Introducing a cube primitive
33:28Blackboard: Introducing a cube primitive
33:28Blackboard: Introducing a cube primitive
38:23handmade_render_group.h: Introduce render_entry_cube struct
38:23handmade_render_group.h: Introduce render_entry_cube struct
38:23handmade_render_group.h: Introduce render_entry_cube struct
41:11handmade_render_group.cpp: Introduce PushCube() and remove RendersInBackground
41:11handmade_render_group.cpp: Introduce PushCube() and remove RendersInBackground
41:11handmade_render_group.cpp: Introduce PushCube() and remove RendersInBackground
46:59Run the game and see that nothing has happened
46:59Run the game and see that nothing has happened
46:59Run the game and see that nothing has happened
49:05Investigate where we're placing the hero, and why tweaking the P.Offset_.z causes it to fail
49:05Investigate where we're placing the hero, and why tweaking the P.Offset_.z causes it to fail
49:05Investigate where we're placing the hero, and why tweaking the P.Offset_.z causes it to fail
56:33Determine that we're not doing the room sizing stuff correctly
56:33Determine that we're not doing the room sizing stuff correctly
56:33Determine that we're not doing the room sizing stuff correctly
58:49handmade_entity.cpp: Enable UpdateAndRenderEntities() to call PushCube() for the traversables
58:49handmade_entity.cpp: Enable UpdateAndRenderEntities() to call PushCube() for the traversables
58:49handmade_entity.cpp: Enable UpdateAndRenderEntities() to call PushCube() for the traversables
1:05:43handmade_world_mode.cpp: Introduce an AddPiece() that takes a Height and translates it to a V2
1:05:43handmade_world_mode.cpp: Introduce an AddPiece() that takes a Height and translates it to a V2
1:05:43handmade_world_mode.cpp: Introduce an AddPiece() that takes a Height and translates it to a V2
1:06:53handmade_world_mode.cpp: Make AddStandardRoom() call AddPiece() for the traversables
1:06:53handmade_world_mode.cpp: Make AddStandardRoom() call AddPiece() for the traversables
1:06:53handmade_world_mode.cpp: Make AddStandardRoom() call AddPiece() for the traversables
1:11:26handmade_opengl.cpp: Enable OpenGLRenderCommands() to handle the cube case
1:11:26handmade_opengl.cpp: Enable OpenGLRenderCommands() to handle the cube case
1:11:26handmade_opengl.cpp: Enable OpenGLRenderCommands() to handle the cube case
1:13:22Blackboard: Mr. Cube
1:13:22Blackboard: Mr. Cube
1:13:22Blackboard: Mr. Cube
1:16:29handmade_opengl.cpp: Enumerate the eight faces for the cube
1:16:29handmade_opengl.cpp: Enumerate the eight faces for the cube
1:16:29handmade_opengl.cpp: Enumerate the eight faces for the cube
1:19:50Blackboard: Specifying the points for triangles in a counter-clockwise fashion
1:19:50Blackboard: Specifying the points for triangles in a counter-clockwise fashion
1:19:50Blackboard: Specifying the points for triangles in a counter-clockwise fashion
1:21:19handmade_opengl.cpp: Introduce GLQuad()
1:21:19handmade_opengl.cpp: Introduce GLQuad()
1:21:19handmade_opengl.cpp: Introduce GLQuad()
1:23:21Blackboard: Winding, and backface culling
1:23:21Blackboard: Winding, and backface culling
1:23:21Blackboard: Winding, and backface culling
1:26:09handmade_opengl.cpp: Specify the eight faces of the cube for OpenGLRenderCommands() to pass to GLQuad()
1:26:09handmade_opengl.cpp: Specify the eight faces of the cube for OpenGLRenderCommands() to pass to GLQuad()
1:26:09handmade_opengl.cpp: Specify the eight faces of the cube for OpenGLRenderCommands() to pass to GLQuad()
1:33:41handmade_opengl.cpp: Enable OpenGLRenderCommands() to generate the cube points
1:33:41handmade_opengl.cpp: Enable OpenGLRenderCommands() to generate the cube points
1:33:41handmade_opengl.cpp: Enable OpenGLRenderCommands() to generate the cube points
1:36:12Run the game to see our first cube
1:36:12Run the game to see our first cube
1:36:12Run the game to see our first cube
1:36:48handmade_entity.cpp: Make UpdateAndRenderEntities() pass the offset to PushCube() and run the game to see all the cubes
1:36:48handmade_entity.cpp: Make UpdateAndRenderEntities() pass the offset to PushCube() and run the game to see all the cubes
1:36:48handmade_entity.cpp: Make UpdateAndRenderEntities() pass the offset to PushCube() and run the game to see all the cubes
1:39:31handmade_world_mode.cpp: Make AddStandardRoom() reduce the variance of the traversable position offsets and run the game to check it out
1:39:31handmade_world_mode.cpp: Make AddStandardRoom() reduce the variance of the traversable position offsets and run the game to check it out
1:39:31handmade_world_mode.cpp: Make AddStandardRoom() reduce the variance of the traversable position offsets and run the game to check it out
1:41:01handmade_opengl.cpp: Set the cubes' colour to white, give them a texture and run the game to check it out
1:41:01handmade_opengl.cpp: Set the cubes' colour to white, give them a texture and run the game to check it out
1:41:01handmade_opengl.cpp: Set the cubes' colour to white, give them a texture and run the game to check it out
1:43:40Demo the case in which a tree and a cube interpenetrate and Z-fight, and consider how to combat this
1:43:40Demo the case in which a tree and a cube interpenetrate and Z-fight, and consider how to combat this
1:43:40Demo the case in which a tree and a cube interpenetrate and Z-fight, and consider how to combat this
1:47:51handmade_render_group.cpp: Re-enable PushBitmap() to perform shearing, and run the game
1:47:51handmade_render_group.cpp: Re-enable PushBitmap() to perform shearing, and run the game
1:47:51handmade_render_group.cpp: Re-enable PushBitmap() to perform shearing, and run the game
1:50:05Q&A
🗩
1:50:05Q&A
🗩
1:50:05Q&A
🗩
1:51:25macielda Any particular reason for using counter clockwise for front faces (as opposed to clockwise)?
🗪
1:51:25macielda Any particular reason for using counter clockwise for front faces (as opposed to clockwise)?
🗪
1:51:25macielda Any particular reason for using counter clockwise for front faces (as opposed to clockwise)?
🗪
1:52:00Blackboard: Coordinate system right-handedness and counter-clockwise winding
1:52:00Blackboard: Coordinate system right-handedness and counter-clockwise winding
1:52:00Blackboard: Coordinate system right-handedness and counter-clockwise winding
1:56:23thesizik A debug camera pan control might be a good idea
🗪
1:56:23thesizik A debug camera pan control might be a good idea
🗪
1:56:23thesizik A debug camera pan control might be a good idea
🗪
1:56:35coreactivities Why have everything slightly tilted? Wouldn't it make more sense to sort the assets according to their bottom or, if you're using 3D space, go for an orthogonal camera and using the Z position for sorting?
🗪
1:56:35coreactivities Why have everything slightly tilted? Wouldn't it make more sense to sort the assets according to their bottom or, if you're using 3D space, go for an orthogonal camera and using the Z position for sorting?
🗪
1:56:35coreactivities Why have everything slightly tilted? Wouldn't it make more sense to sort the assets according to their bottom or, if you're using 3D space, go for an orthogonal camera and using the Z position for sorting?
🗪
1:57:09Run the game to demo the visual interest of the tilting1
1:57:09Run the game to demo the visual interest of the tilting1
1:57:09Run the game to demo the visual interest of the tilting1
2:01:28Recommend Andrew Russell's blog on the sorting in River City Ransom2
2:01:28Recommend Andrew Russell's blog on the sorting in River City Ransom2
2:01:28Recommend Andrew Russell's blog on the sorting in River City Ransom2
2:06:41macielda I noticed the camera in Handmade Hero is defined by Camera X, Y, Z and P. Can I get X, Y and Z from a Quaternion? Is that a good idea? I mean, if you had Quaternions on Handmade Hero would you define the camera using a Quaternion and P?
🗪
2:06:41macielda I noticed the camera in Handmade Hero is defined by Camera X, Y, Z and P. Can I get X, Y and Z from a Quaternion? Is that a good idea? I mean, if you had Quaternions on Handmade Hero would you define the camera using a Quaternion and P?
🗪
2:06:41macielda I noticed the camera in Handmade Hero is defined by Camera X, Y, Z and P. Can I get X, Y and Z from a Quaternion? Is that a good idea? I mean, if you had Quaternions on Handmade Hero would you define the camera using a Quaternion and P?
🗪
2:08:18macielda What is the 'x' in b32x and u32x?
🗪
2:08:18macielda What is the 'x' in b32x and u32x?
🗪
2:08:18macielda What is the 'x' in b32x and u32x?
🗪
2:08:41Blackboard: "Exactly n bits" vs "At least n bits"
2:08:41Blackboard: "Exactly n bits" vs "At least n bits"
2:08:41Blackboard: "Exactly n bits" vs "At least n bits"
2:13:47jezzi23 How much time and effort do you spend preparing for each episode (e.g. what you're going to do, and which problems you foresee running into)? Or is it just the years of experience that allow you to do this without preparation?
🗪
2:13:47jezzi23 How much time and effort do you spend preparing for each episode (e.g. what you're going to do, and which problems you foresee running into)? Or is it just the years of experience that allow you to do this without preparation?
🗪
2:13:47jezzi23 How much time and effort do you spend preparing for each episode (e.g. what you're going to do, and which problems you foresee running into)? Or is it just the years of experience that allow you to do this without preparation?
🗪
2:14:28macielda Why b32x and not b1x or b8x? (I really don't know)
🗪
2:14:28macielda Why b32x and not b1x or b8x? (I really don't know)
🗪
2:14:28macielda Why b32x and not b1x or b8x? (I really don't know)
🗪
2:15:46dudeinbasement1 Q: Can you do cubic splines sometime?3
🗪
2:15:46dudeinbasement1 Q: Can you do cubic splines sometime?3
🗪
2:15:46dudeinbasement1 Q: Can you do cubic splines sometime?3
🗪
2:17:00Close it down
🗩
2:17:00Close it down
🗩
2:17:00Close it down
🗩