Handmade Hero»Episode Guide
Entity Ground Points
?
?

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)
2:00Recap the bug from yesterday
2:00Recap the bug from yesterday
2:00Recap the bug from yesterday
4:02Blackboard: The discrepancy between the Entities' base points and the Ground position
4:02Blackboard: The discrepancy between the Entities' base points and the Ground position
4:02Blackboard: The discrepancy between the Entities' base points and the Ground position
5:30Look at how these concepts are currently specified
5:30Look at how these concepts are currently specified
5:30Look at how these concepts are currently specified
7:06handmade_sim_region.cpp: Add 0.5*Entity->Dim.Z to Ground
7:06handmade_sim_region.cpp: Add 0.5*Entity->Dim.Z to Ground
7:06handmade_sim_region.cpp: Add 0.5*Entity->Dim.Z to Ground
7:31Run the game and find that we're not quite right
7:31Run the game and find that we're not quite right
7:31Run the game and find that we're not quite right
8:46Debugger: Step into the code where Ground is calculated
8:46Debugger: Step into the code where Ground is calculated
8:46Debugger: Step into the code where Ground is calculated
10:05handmade.cpp: Look at the current drawing code
10:05handmade.cpp: Look at the current drawing code
10:05handmade.cpp: Look at the current drawing code
15:14Introduce EntityBaseP
15:14Introduce EntityBaseP
15:14Introduce EntityBaseP
17:11Run the game and find that we seem to have solved the problem
17:11Run the game and find that we seem to have solved the problem
17:11Run the game and find that we seem to have solved the problem
18:11handmade.cpp: Add two rectangles to the Stairwell
18:11handmade.cpp: Add two rectangles to the Stairwell
18:11handmade.cpp: Add two rectangles to the Stairwell
20:00Work on the ZFudge
20:00Work on the ZFudge
20:00Work on the ZFudge
22:30Check out the effects on the Familiar
22:30Check out the effects on the Familiar
22:30Check out the effects on the Familiar
23:06MetersToPixels is getting pre-multiplied by OffsetZ
23:06MetersToPixels is getting pre-multiplied by OffsetZ
23:06MetersToPixels is getting pre-multiplied by OffsetZ
24:17Run the game and see it looking more correct
24:17Run the game and see it looking more correct
24:17Run the game and see it looking more correct
25:14handmade.cpp: Don't bother adding OffsetZ
25:14handmade.cpp: Don't bother adding OffsetZ
25:14handmade.cpp: Don't bother adding OffsetZ
25:54Blackboard: What the ZFudge is doing
25:54Blackboard: What the ZFudge is doing
25:54Blackboard: What the ZFudge is doing
28:11handmade_sim_region.cpp: Look at SpeculativeCollide
28:11handmade_sim_region.cpp: Look at SpeculativeCollide
28:11handmade_sim_region.cpp: Look at SpeculativeCollide
28:53Introduce GetEntityGroundPoint
28:53Introduce GetEntityGroundPoint
28:53Introduce GetEntityGroundPoint
30:18Use GetEntityGroundPoint to set EntityBaseP and Ground
30:18Use GetEntityGroundPoint to set EntityBaseP and Ground
30:18Use GetEntityGroundPoint to set EntityBaseP and Ground
31:29Blackboard: Computing the Ground displacement
31:29Blackboard: Computing the Ground displacement
31:29Blackboard: Computing the Ground displacement
32:41Run the game and find we can now go upstairs
32:41Run the game and find we can now go upstairs
32:41Run the game and find we can now go upstairs
33:09handmade.cpp: Make stairways extend above the ground
33:09handmade.cpp: Make stairways extend above the ground
33:09handmade.cpp: Make stairways extend above the ground
34:36Blackboard: Understanding StepHeight
34:36Blackboard: Understanding StepHeight
34:36Blackboard: Understanding StepHeight
36:58handmade_sim_region.h: Add WalkableHeight to sim_entity
36:58handmade_sim_region.h: Add WalkableHeight to sim_entity
36:58handmade_sim_region.h: Add WalkableHeight to sim_entity
38:01handmade.cpp: Use that WalkableHeight in SpeculativeCollide
38:01handmade.cpp: Use that WalkableHeight in SpeculativeCollide
38:01handmade.cpp: Use that WalkableHeight in SpeculativeCollide
38:37Run the game and try the stairs
38:37Run the game and try the stairs
38:37Run the game and try the stairs
39:19handmade_entity.h: Introduce GetStairGround
39:19handmade_entity.h: Introduce GetStairGround
39:19handmade_entity.h: Introduce GetStairGround
44:01handmade_sim_region.cpp: Convert HandleOverlap and SpeculativeCollide to use GetStairGround
44:01handmade_sim_region.cpp: Convert HandleOverlap and SpeculativeCollide to use GetStairGround
44:01handmade_sim_region.cpp: Convert HandleOverlap and SpeculativeCollide to use GetStairGround
46:55Run the game and find that that fixed our problem
46:55Run the game and find that that fixed our problem
46:55Run the game and find that that fixed our problem
47:28handmade_sim_region.cpp: SpeculativeCollide needs to know whether we're coming on to or moving off a stairwell
47:28handmade_sim_region.cpp: SpeculativeCollide needs to know whether we're coming on to or moving off a stairwell
47:28handmade_sim_region.cpp: SpeculativeCollide needs to know whether we're coming on to or moving off a stairwell
50:41Q&A
🗩
50:41Q&A
🗩
50:41Q&A
🗩
52:15Q: Do you use Clang on Linux?
52:15Q: Do you use Clang on Linux?
52:15Q: Do you use Clang on Linux?
52:48Q: What is the best way to learn C++ from absolute scratch on my own?
52:48Q: What is the best way to learn C++ from absolute scratch on my own?
52:48Q: What is the best way to learn C++ from absolute scratch on my own?
53:56Q: Do you know anything about Voxpel programming?
53:56Q: Do you know anything about Voxpel programming?
53:56Q: Do you know anything about Voxpel programming?
54:35Q: What versioning and revision control system do you use?
54:35Q: What versioning and revision control system do you use?
54:35Q: What versioning and revision control system do you use?
54:43Q: Are you planning on replacing the stairs in your house with ramps?
54:43Q: Are you planning on replacing the stairs in your house with ramps?
54:43Q: Are you planning on replacing the stairs in your house with ramps?
56:16Q: How did you get the right side of your Visual Studio debug view to be split vertically?
56:16Q: How did you get the right side of your Visual Studio debug view to be split vertically?
56:16Q: How did you get the right side of your Visual Studio debug view to be split vertically?
57:49Q: Why do you use so many magic numbers in your code?
57:49Q: Why do you use so many magic numbers in your code?
57:49Q: Why do you use so many magic numbers in your code?
58:08Q: What do you think about friend classes?
58:08Q: What do you think about friend classes?
58:08Q: What do you think about friend classes?
58:30Q: Is this turning into reverse Doom? Almost complete 3D rendered in 2D, instead of 2D rendered in 3D
58:30Q: Is this turning into reverse Doom? Almost complete 3D rendered in 2D, instead of 2D rendered in 3D
58:30Q: Is this turning into reverse Doom? Almost complete 3D rendered in 2D, instead of 2D rendered in 3D
1:00:30Q: Is the top layer going to fade in if you go up the stairs into a closed room?
1:00:30Q: Is the top layer going to fade in if you go up the stairs into a closed room?
1:00:30Q: Is the top layer going to fade in if you go up the stairs into a closed room?
1:01:01Q: When do you plan on doing Z-sorting with the sprites?
1:01:01Q: When do you plan on doing Z-sorting with the sprites?
1:01:01Q: When do you plan on doing Z-sorting with the sprites?
1:01:16Q: Why do you use so many magic numbers in your code? Why so many #defines?
1:01:16Q: Why do you use so many magic numbers in your code? Why so many #defines?
1:01:16Q: Why do you use so many magic numbers in your code? Why so many #defines?
1:02:13Q: Are you planning to use advanced shader techniques? If so, which ones?
1:02:13Q: Are you planning to use advanced shader techniques? If so, which ones?
1:02:13Q: Are you planning to use advanced shader techniques? If so, which ones?
1:02:40Q: Looks like I skipped an episode in which you made a lower level visible from a higher one. Do you remember when did it happen? Is the floor going to remain transparent in the future?
1:02:40Q: Looks like I skipped an episode in which you made a lower level visible from a higher one. Do you remember when did it happen? Is the floor going to remain transparent in the future?
1:02:40Q: Looks like I skipped an episode in which you made a lower level visible from a higher one. Do you remember when did it happen? Is the floor going to remain transparent in the future?
1:03:43Q: My previous question was on topic. Missed it, maybe
1:03:43Q: My previous question was on topic. Missed it, maybe
1:03:43Q: My previous question was on topic. Missed it, maybe
1:04:01Q: Correct me if I'm wrong, but it seems early on we started with a bottom-centre position for collision detection on our hero. We moved to a centre position which was offset in both X and Y. Now it seems we use a centre X and Y and are continuing to compute the bottom-centre position. Do you feel this needs to be consolidated in any way?
1:04:01Q: Correct me if I'm wrong, but it seems early on we started with a bottom-centre position for collision detection on our hero. We moved to a centre position which was offset in both X and Y. Now it seems we use a centre X and Y and are continuing to compute the bottom-centre position. Do you feel this needs to be consolidated in any way?
1:04:01Q: Correct me if I'm wrong, but it seems early on we started with a bottom-centre position for collision detection on our hero. We moved to a centre position which was offset in both X and Y. Now it seems we use a centre X and Y and are continuing to compute the bottom-centre position. Do you feel this needs to be consolidated in any way?
1:05:50Q: What's with the floating head in the middle of the forest?
1:05:50Q: What's with the floating head in the middle of the forest?
1:05:50Q: What's with the floating head in the middle of the forest?
1:06:14Q: Could you explain the line ControlledHeroes[ArrayCount(((game_input *)0)->Controllers)]; in handmade.h because it looks like you're casting a null pointer and referencing
1:06:14Q: Could you explain the line ControlledHeroes[ArrayCount(((game_input *)0)->Controllers)]; in handmade.h because it looks like you're casting a null pointer and referencing
1:06:14Q: Could you explain the line ControlledHeroes[ArrayCount(((game_input *)0)->Controllers)]; in handmade.h because it looks like you're casting a null pointer and referencing
1:08:50Q: To workaround the Mischief zoom issue, how about you find the zoom level you want then draw four dots, one in each corner, then when you come back you can align those dots back to the corners
1:08:50Q: To workaround the Mischief zoom issue, how about you find the zoom level you want then draw four dots, one in each corner, then when you come back you can align those dots back to the corners
1:08:50Q: To workaround the Mischief zoom issue, how about you find the zoom level you want then draw four dots, one in each corner, then when you come back you can align those dots back to the corners
1:09:10Pseudonym73 You could use C++'s decltype or typeof to find that ArrayCount
🗪
1:09:10Pseudonym73 You could use C++'s decltype or typeof to find that ArrayCount
🗪
1:09:10Pseudonym73 You could use C++'s decltype or typeof to find that ArrayCount
🗪
1:11:11mmozeiko Could you do it: ArrayCount(game_input::Controllers)?
🗪
1:11:11mmozeiko Could you do it: ArrayCount(game_input::Controllers)?
🗪
1:11:11mmozeiko Could you do it: ArrayCount(game_input::Controllers)?
🗪
1:11:40Q: declval is what you want
1:11:40Q: declval is what you want
1:11:40Q: declval is what you want
1:13:24Q: Why do you plan on using OpenGL or DirectX for hardware acceleration? Is that something that you have to have knowledge of actual GPU architecture to be able to implement?
1:13:24Q: Why do you plan on using OpenGL or DirectX for hardware acceleration? Is that something that you have to have knowledge of actual GPU architecture to be able to implement?
1:13:24Q: Why do you plan on using OpenGL or DirectX for hardware acceleration? Is that something that you have to have knowledge of actual GPU architecture to be able to implement?
1:14:47Q: What do you think of Khronos Vulkan?
1:14:47Q: What do you think of Khronos Vulkan?
1:14:47Q: What do you think of Khronos Vulkan?
1:16:18Q: What is the best way to build a game when you know how to program but you have no art skills? Hire an artist to do it for you? That is my Achilles' heel, but I want to make a game on my own1
1:16:18Q: What is the best way to build a game when you know how to program but you have no art skills? Hire an artist to do it for you? That is my Achilles' heel, but I want to make a game on my own1
1:16:18Q: What is the best way to build a game when you know how to program but you have no art skills? Hire an artist to do it for you? That is my Achilles' heel, but I want to make a game on my own1
1:18:18We have come to the end
🗩
1:18:18We have come to the end
🗩
1:18:18We have come to the end
🗩