Handmade Hero»Episode Guide
Solving for Sorting Displacement
?
?

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:02Recap yesterday's post-stream suggestion from binjimin, that our erroneous ParentAlignType may be caused by an unset parent TextureHandle
🗩
0:02Recap yesterday's post-stream suggestion from binjimin, that our erroneous ParentAlignType may be caused by an unset parent TextureHandle
🗩
0:02Recap yesterday's post-stream suggestion from binjimin, that our erroneous ParentAlignType may be caused by an unset parent TextureHandle
🗩
1:25Change UpdateAndRenderEntities() to acquire the TextureHandle after having set all the BitmapInfo
1:25Change UpdateAndRenderEntities() to acquire the TextureHandle after having set all the BitmapInfo
1:25Change UpdateAndRenderEntities() to acquire the TextureHandle after having set all the BitmapInfo
4:47Separating streaming and non-streaming information
🗩
4:47Separating streaming and non-streaming information
🗩
4:47Separating streaming and non-streaming information
🗩
7:09Change WorldDimFromWorldHeight() to take a hha_bitmap *
7:09Change WorldDimFromWorldHeight() to take a hha_bitmap *
7:09Change WorldDimFromWorldHeight() to take a hha_bitmap *
8:26Find that the game runs, trusting that we've solved the ParentAlignType bug
🏃
8:26Find that the game runs, trusting that we've solved the ParentAlignType bug
🏃
8:26Find that the game runs, trusting that we've solved the ParentAlignType bug
🏃
9:18Snapping sprite stacks to be fully aligned when at the center of the scene
📖
9:18Snapping sprite stacks to be fully aligned when at the center of the scene
📖
9:18Snapping sprite stacks to be fully aligned when at the center of the scene
📖
10:28Demonstrate our sprite alignment requirements
🏃
10:28Demonstrate our sprite alignment requirements
🏃
10:28Demonstrate our sprite alignment requirements
🏃
13:33Offsetting pieces, e.g. head bobbing, after aligning the sprite stack
📖
13:33Offsetting pieces, e.g. head bobbing, after aligning the sprite stack
📖
13:33Offsetting pieces, e.g. head bobbing, after aligning the sprite stack
📖
17:42Align for Default Camera
🖌
17:42Align for Default Camera
🖌
17:42Align for Default Camera
🖌
24:09Solving our child−parent sprite alignment
🖌
24:09Solving our child−parent sprite alignment
🖌
24:09Solving our child−parent sprite alignment
🖌
30:08Make UpdateAndRenderEntities() align child sprites to their parent as per our diagram
30:08Make UpdateAndRenderEntities() align child sprites to their parent as per our diagram
30:08Make UpdateAndRenderEntities() align child sprites to their parent as per our diagram
37:25Find that our child−parent sprite snapping works just great
🏃
37:25Find that our child−parent sprite snapping works just great
🏃
37:25Find that our child−parent sprite snapping works just great
🏃
39:56Make UpdateAndRenderEntities() apply the Piece->Offset
39:56Make UpdateAndRenderEntities() apply the Piece->Offset
39:56Make UpdateAndRenderEntities() apply the Piece->Offset
40:27Find that our child and parent sprites' alignment points are not aligned
🏃
40:27Find that our child and parent sprites' alignment points are not aligned
🏃
40:27Find that our child and parent sprites' alignment points are not aligned
🏃
43:21Make AddPlayer() elevate the hero's head higher
43:21Make AddPlayer() elevate the hero's head higher
43:21Make AddPlayer() elevate the hero's head higher
44:25Check out our perspective shifting, and determine to handle rotating sprites
🏃
44:25Check out our perspective shifting, and determine to handle rotating sprites
🏃
44:25Check out our perspective shifting, and determine to handle rotating sprites
🏃
46:13Aligning rotating sprites
📖
46:13Aligning rotating sprites
📖
46:13Aligning rotating sprites
📖
53:44Replacing entity pieces with sprite snapping
🏃
53:44Replacing entity pieces with sprite snapping
🏃
53:44Replacing entity pieces with sprite snapping
🏃
54:56Temporarily make UpdateAndRenderEntities() spin the hero's head and glove
54:56Temporarily make UpdateAndRenderEntities() spin the hero's head and glove
54:56Temporarily make UpdateAndRenderEntities() spin the hero's head and glove
56:51Note the pulsing of rotating sprites caused by MinP no longer always representing the lowest point on the sprite
🏃
56:51Note the pulsing of rotating sprites caused by MinP no longer always representing the lowest point on the sprite
🏃
56:51Note the pulsing of rotating sprites caused by MinP no longer always representing the lowest point on the sprite
🏃
57:30Make SpriteValuesForUpright() compute a ZDisplacement to provide a stable lowest point
57:30Make SpriteValuesForUpright() compute a ZDisplacement to provide a stable lowest point
57:30Make SpriteValuesForUpright() compute a ZDisplacement to provide a stable lowest point
1:01:15Find that our rotating sprites now remain at a stable elevation
🏃
1:01:15Find that our rotating sprites now remain at a stable elevation
🏃
1:01:15Find that our rotating sprites now remain at a stable elevation
🏃
1:02:56Remove the test spinning code from UpdateAndRenderEntities()
1:02:56Remove the test spinning code from UpdateAndRenderEntities()
1:02:56Remove the test spinning code from UpdateAndRenderEntities()
1:03:47Make UpdateAndRenderEntities() hide sprites when their alignment point is disabled, changing FindAlign() to return a find_align_result
1:03:47Make UpdateAndRenderEntities() hide sprites when their alignment point is disabled, changing FindAlign() to return a find_align_result
1:03:47Make UpdateAndRenderEntities() hide sprites when their alignment point is disabled, changing FindAlign() to return a find_align_result
1:11:05Try toggling alignment points / sprites
🏃
1:11:05Try toggling alignment points / sprites
🏃
1:11:05Try toggling alignment points / sprites
🏃
1:11:34Begin to change UpdateAndRenderEntities() to hide the child sprites of parents
1:11:34Begin to change UpdateAndRenderEntities() to hide the child sprites of parents
1:11:34Begin to change UpdateAndRenderEntities() to hide the child sprites of parents
1:15:52Delete the lot of the sprite hiding code
1:15:52Delete the lot of the sprite hiding code
1:15:52Delete the lot of the sprite hiding code
1:16:37Add a "Show Children" button in our asset editor, introducing ShouldDrawChildren() for UpdateAndRenderEntities() to call
1:16:37Add a "Show Children" button in our asset editor, introducing ShouldDrawChildren() for UpdateAndRenderEntities() to call
1:16:37Add a "Show Children" button in our asset editor, introducing ShouldDrawChildren() for UpdateAndRenderEntities() to call
1:24:24Try out our "Show Children" button, without success
🏃
1:24:24Try out our "Show Children" button, without success
🏃
1:24:24Try out our "Show Children" button, without success
🏃
1:25:10Make InitializeEditor() enable ShouldDrawChildren and proofread our new children hiding code
1:25:10Make InitializeEditor() enable ShouldDrawChildren and proofread our new children hiding code
1:25:10Make InitializeEditor() enable ShouldDrawChildren and proofread our new children hiding code
1:28:27Note that our entity selection does not record which specific asset we clicked
🏃
1:28:27Note that our entity selection does not record which specific asset we clicked
🏃
1:28:27Note that our entity selection does not record which specific asset we clicked
🏃
1:29:16Scour our child sprite hiding code
📖
1:29:16Scour our child sprite hiding code
📖
1:29:16Scour our child sprite hiding code
📖
1:32:36Find that the hero's "head" child sprite never gets hidden
🏃
1:32:36Find that the hero's "head" child sprite never gets hidden
🏃
1:32:36Find that the hero's "head" child sprite never gets hidden
🏃
1:34:24Step in to ShouldDrawChildren() and compare the ParentID and HitTest->Editor->HighlightID
🏃
1:34:24Step in to ShouldDrawChildren() and compare the ParentID and HitTest->Editor->HighlightID
🏃
1:34:24Step in to ShouldDrawChildren() and compare the ParentID and HitTest->Editor->HighlightID
🏃
1:38:36Find that DevIDFromU32s() differentiates one dev_id from another by their file and line number
🏃
1:38:36Find that DevIDFromU32s() differentiates one dev_id from another by their file and line number
🏃
1:38:36Find that DevIDFromU32s() differentiates one dev_id from another by their file and line number
🏃
1:39:09Introduce CopyType() to harmonise two separate dev_id settings
1:39:09Introduce CopyType() to harmonise two separate dev_id settings
1:39:09Introduce CopyType() to harmonise two separate dev_id settings
1:40:59Find that our "Show Children" button remains busted
🏃
1:40:59Find that our "Show Children" button remains busted
🏃
1:40:59Find that our "Show Children" button remains busted
🏃
1:42:14Step in to ShouldDrawChildren() and again compare our values to find that they differ
🏃
1:42:14Step in to ShouldDrawChildren() and again compare our values to find that they differ
🏃
1:42:14Step in to ShouldDrawChildren() and again compare our values to find that they differ
🏃
1:44:31Fix CopyType() to persist its work
1:44:31Fix CopyType() to persist its work
1:44:31Fix CopyType() to persist its work
1:45:01Try out our "Show Children" button with success
🏃
1:45:01Try out our "Show Children" button with success
🏃
1:45:01Try out our "Show Children" button with success
🏃
1:45:40Prevent EditorInteract() from deselecting assets when moving the camera
1:45:40Prevent EditorInteract() from deselecting assets when moving the camera
1:45:40Prevent EditorInteract() from deselecting assets when moving the camera
1:46:49Try out our asset editor
🏃
1:46:49Try out our asset editor
🏃
1:46:49Try out our asset editor
🏃
1:48:20Condense the asset editor, introducing HHAEditor()
1:48:20Condense the asset editor, introducing HHAEditor()
1:48:20Condense the asset editor, introducing HHAEditor()
1:52:49Check out our condensed asset editor
🏃
1:52:49Check out our condensed asset editor
🏃
1:52:49Check out our condensed asset editor
🏃
1:53:31Fix F4 to display the HHA page, and remove SectionPicker()
1:53:31Fix F4 to display the HHA page, and remove SectionPicker()
1:53:31Fix F4 to display the HHA page, and remove SectionPicker()
1:54:08Try out our slicker asset editor, aligning the hero
🏃
1:54:08Try out our slicker asset editor, aligning the hero
🏃
1:54:08Try out our slicker asset editor, aligning the hero
🏃
2:01:06Reload the game to find the our alignment points persist, and align Molly and Orphan #4
🏃
2:01:06Reload the game to find the our alignment points persist, and align Molly and Orphan #4
🏃
2:01:06Reload the game to find the our alignment points persist, and align Molly and Orphan #4
🏃
2:06:06Q&A
🗩
2:06:06Q&A
🗩
2:06:06Q&A
🗩
2:06:280lpbm Q: Shouldn't body pieces' displacement be a function of camera distance (and maybe angle)?
🗪
2:06:280lpbm Q: Shouldn't body pieces' displacement be a function of camera distance (and maybe angle)?
🗪
2:06:280lpbm Q: Shouldn't body pieces' displacement be a function of camera distance (and maybe angle)?
🗪
2:07:480lpbm Q: If nobody jumps in with another Q, maybe can you do the gloves?
🗪
2:07:480lpbm Q: If nobody jumps in with another Q, maybe can you do the gloves?
🗪
2:07:480lpbm Q: If nobody jumps in with another Q, maybe can you do the gloves?
🗪
2:08:31pragmascrypt Q: Suggestion: Maybe turn down lighting quality in debug mode so debug can run with higher FPS again
🗪
2:08:31pragmascrypt Q: Suggestion: Maybe turn down lighting quality in debug mode so debug can run with higher FPS again
🗪
2:08:31pragmascrypt Q: Suggestion: Maybe turn down lighting quality in debug mode so debug can run with higher FPS again
🗪
2:08:38saidwho12 Q: What graphics API(s) does Handmade Hero use?
🗪
2:08:38saidwho12 Q: What graphics API(s) does Handmade Hero use?
🗪
2:08:38saidwho12 Q: What graphics API(s) does Handmade Hero use?
🗪
2:09:13vapenir Q: Speaking of lighting, I assume this isn't what the final lighting will look like, right? What do you have planned for that?
🗪
2:09:13vapenir Q: Speaking of lighting, I assume this isn't what the final lighting will look like, right? What do you have planned for that?
🗪
2:09:13vapenir Q: Speaking of lighting, I assume this isn't what the final lighting will look like, right? What do you have planned for that?
🗪
2:10:09eyedoteye Q: Dear Mr Muratori, I followed like 15 of your videos and now I'm in a game dev studio. Are you proud of me, Sensei?
🗪
2:10:09eyedoteye Q: Dear Mr Muratori, I followed like 15 of your videos and now I'm in a game dev studio. Are you proud of me, Sensei?
🗪
2:10:09eyedoteye Q: Dear Mr Muratori, I followed like 15 of your videos and now I'm in a game dev studio. Are you proud of me, Sensei?
🗪
2:10:35vapenir Q: Have you tried out Vulkan on any project yet?
🗪
2:10:35vapenir Q: Have you tried out Vulkan on any project yet?
🗪
2:10:35vapenir Q: Have you tried out Vulkan on any project yet?
🗪
2:11:03wheeel Q: What causes the flickering in the lighting?
🗪
2:11:03wheeel Q: What causes the flickering in the lighting?
🗪
2:11:03wheeel Q: What causes the flickering in the lighting?
🗪
2:11:240lpbm Q: The skewing when moving on Y is only applied on the body. Should the head also be modified?
🗪
2:11:240lpbm Q: The skewing when moving on Y is only applied on the body. Should the head also be modified?
🗪
2:11:240lpbm Q: The skewing when moving on Y is only applied on the body. Should the head also be modified?
🗪
2:12:10saidwho12 Q: Is light estimated using Monte Carlo integration?
🗪
2:12:10saidwho12 Q: Is light estimated using Monte Carlo integration?
🗪
2:12:10saidwho12 Q: Is light estimated using Monte Carlo integration?
🗪
2:13:14centhusiast Q: Is there any good article on camera in the computer graphic field or video games? I am ready to learn in detail about the camera. Thanks!1,2,3
🗪
2:13:14centhusiast Q: Is there any good article on camera in the computer graphic field or video games? I am ready to learn in detail about the camera. Thanks!1,2,3
🗪
2:13:14centhusiast Q: Is there any good article on camera in the computer graphic field or video games? I am ready to learn in detail about the camera. Thanks!1,2,3
🗪
2:19:58myop Q: Regarding Vulkan, I really wonder why you think it's not relevant these days. Or are you talking about your current project? Thanks
🗪
2:19:58myop Q: Regarding Vulkan, I really wonder why you think it's not relevant these days. Or are you talking about your current project? Thanks
🗪
2:19:58myop Q: Regarding Vulkan, I really wonder why you think it's not relevant these days. Or are you talking about your current project? Thanks
🗪
2:22:45ormone88 Q: Are you going to to compose specific particle effects with the editor, or are they all going to be composed at runtime?
🗪
2:22:45ormone88 Q: Are you going to to compose specific particle effects with the editor, or are they all going to be composed at runtime?
🗪
2:22:45ormone88 Q: Are you going to to compose specific particle effects with the editor, or are they all going to be composed at runtime?
🗪
2:23:55botondar Nintendo Switch is kinda pushing Vulkan, isn't it? Which I guess is kind of similar to mobile programming
🗪
2:23:55botondar Nintendo Switch is kinda pushing Vulkan, isn't it? Which I guess is kind of similar to mobile programming
🗪
2:23:55botondar Nintendo Switch is kinda pushing Vulkan, isn't it? Which I guess is kind of similar to mobile programming
🗪
2:26:07insobot Structname membername =
🗪
2:26:07insobot Structname membername =
🗪
2:26:07insobot Structname membername =
🗪
2:26:43vapenir id announced they're going Vulkan-only for the next engine, for whatever it's worth
🗪
2:26:43vapenir id announced they're going Vulkan-only for the next engine, for whatever it's worth
🗪
2:26:43vapenir id announced they're going Vulkan-only for the next engine, for whatever it's worth
🗪
2:27:59vapenir Does OS support really matter that much? Seems like it's really the GPU / driver vendors who you have to care about
🗪
2:27:59vapenir Does OS support really matter that much? Seems like it's really the GPU / driver vendors who you have to care about
🗪
2:27:59vapenir Does OS support really matter that much? Seems like it's really the GPU / driver vendors who you have to care about
🗪
2:29:09botondar Q: Hasn't this "have to use the platform specific API" thing always been the case for multiplatform console games?
🗪
2:29:09botondar Q: Hasn't this "have to use the platform specific API" thing always been the case for multiplatform console games?
🗪
2:29:09botondar Q: Hasn't this "have to use the platform specific API" thing always been the case for multiplatform console games?
🗪
2:30:06saidwho12 Linux people care a lot about Vulkan, though, if that means anything
🗪
2:30:06saidwho12 Linux people care a lot about Vulkan, though, if that means anything
🗪
2:30:06saidwho12 Linux people care a lot about Vulkan, though, if that means anything
🗪
2:31:22hexadecimalinteger Even macOS is not worth it for most
🗪
2:31:22hexadecimalinteger Even macOS is not worth it for most
🗪
2:31:22hexadecimalinteger Even macOS is not worth it for most
🗪
2:31:59Close it up
🗩
2:31:59Close it up
🗩
2:31:59Close it up
🗩