Handmade Hero»Episode Guide
Visualizing Sort Groups
?
?

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:11A few words on the bonuses of programming on stream
0:11A few words on the bonuses of programming on stream
0:11A few words on the bonuses of programming on stream
2:07Run the game and demo the bug
2:07Run the game and demo the bug
2:07Run the game and demo the bug
2:40handmade_world_mode.cpp: Reenable the else clause in AddStandardRoom() to generate the rest of the room
2:40handmade_world_mode.cpp: Reenable the else clause in AddStandardRoom() to generate the rest of the room
2:40handmade_world_mode.cpp: Reenable the else clause in AddStandardRoom() to generate the rest of the room
3:23handmade_render_group.cpp: Correct RectMinMax to RectMinDim in PushRect()
3:23handmade_render_group.cpp: Correct RectMinMax to RectMinDim in PushRect()
3:23handmade_render_group.cpp: Correct RectMinMax to RectMinDim in PushRect()
4:34Run the game and see how the sprites are sorted with that typo having been corrected
4:34Run the game and see how the sprites are sorted with that typo having been corrected
4:34Run the game and see how the sprites are sorted with that typo having been corrected
7:06build.bat: Toggle HANDMADE_INTERNAL on
7:06build.bat: Toggle HANDMADE_INTERNAL on
7:06build.bat: Toggle HANDMADE_INTERNAL on
8:12Run the game and see the profiler being sorted improperly
8:12Run the game and see the profiler being sorted improperly
8:12Run the game and see the profiler being sorted improperly
9:02Consider augmenting our ability to see how the sort is behaving
9:02Consider augmenting our ability to see how the sort is behaving
9:02Consider augmenting our ability to see how the sort is behaving
11:47handmade_entity.cpp: Disable the volume highlighting and the PushRectOutline for the traversables
11:47handmade_entity.cpp: Disable the volume highlighting and the PushRectOutline for the traversables
11:47handmade_entity.cpp: Disable the volume highlighting and the PushRectOutline for the traversables
12:52Run the game and note that the speed has increased, and that the trees are all now sorted properly
12:52Run the game and note that the speed has increased, and that the trees are all now sorted properly
12:52Run the game and note that the speed has increased, and that the trees are all now sorted properly
14:34handmade_world_mode.cpp: Make AddStandardRoom() add a room above
14:34handmade_world_mode.cpp: Make AddStandardRoom() add a room above
14:34handmade_world_mode.cpp: Make AddStandardRoom() add a room above
15:04Run the game and see that the sort is actually wrong
15:04Run the game and see that the sort is actually wrong
15:04Run the game and see that the sort is actually wrong
15:35handmade_opengl.cpp: Make OpenGLRenderCommands() draw the sprite bounds
15:35handmade_opengl.cpp: Make OpenGLRenderCommands() draw the sprite bounds
15:35handmade_opengl.cpp: Make OpenGLRenderCommands() draw the sprite bounds
18:13handmade_render.h: Add Sprite_DebugBox to the sprite_flag enum
18:13handmade_render.h: Add Sprite_DebugBox to the sprite_flag enum
18:13handmade_render.h: Add Sprite_DebugBox to the sprite_flag enum
18:42handmade_opengl.cpp: Continue working on OpenGLRenderCommands()
18:42handmade_opengl.cpp: Continue working on OpenGLRenderCommands()
18:42handmade_opengl.cpp: Continue working on OpenGLRenderCommands()
19:25handmade_opengl.cpp: Introduce OpenGLDrawBoundsRecursive()
19:25handmade_opengl.cpp: Introduce OpenGLDrawBoundsRecursive()
19:25handmade_opengl.cpp: Introduce OpenGLDrawBoundsRecursive()
22:07handmade_opengl.cpp: Make OpenGLRenderCommands() draw each bound in a different colour
22:07handmade_opengl.cpp: Make OpenGLRenderCommands() draw each bound in a different colour
22:07handmade_opengl.cpp: Make OpenGLRenderCommands() draw each bound in a different colour
27:04Run the game and see that it does nothing
27:04Run the game and see that it does nothing
27:04Run the game and see that it does nothing
27:16handmade_opengl.cpp: Make OpenGLRenderCommands() call glDisable(GL_TEXTURE_2D) before the bounds drawing routine
27:16handmade_opengl.cpp: Make OpenGLRenderCommands() call glDisable(GL_TEXTURE_2D) before the bounds drawing routine
27:16handmade_opengl.cpp: Make OpenGLRenderCommands() call glDisable(GL_TEXTURE_2D) before the bounds drawing routine
27:57handmade_opengl.cpp: Make OpenGLDrawBoundsRecursive() draw a line between the centres of two sprite bounds
27:57handmade_opengl.cpp: Make OpenGLDrawBoundsRecursive() draw a line between the centres of two sprite bounds
27:57handmade_opengl.cpp: Make OpenGLDrawBoundsRecursive() draw a line between the centres of two sprite bounds
30:39handmade_opengl.cpp: Introduce OpenGLLineVertices()
30:39handmade_opengl.cpp: Introduce OpenGLLineVertices()
30:39handmade_opengl.cpp: Introduce OpenGLLineVertices()
31:53handmade_opengl.cpp: Make OpenGLDrawBoundsRecursive() call OpenGLLineVertices()
31:53handmade_opengl.cpp: Make OpenGLDrawBoundsRecursive() call OpenGLLineVertices()
31:53handmade_opengl.cpp: Make OpenGLDrawBoundsRecursive() call OpenGLLineVertices()
32:27Run the game and see our new debug visualisation
32:27Run the game and see our new debug visualisation
32:27Run the game and see our new debug visualisation
33:35handmade_world_mode.cpp: Disable the Clear() in UpdateAndRenderWorld() for now
33:35handmade_world_mode.cpp: Disable the Clear() in UpdateAndRenderWorld() for now
33:35handmade_world_mode.cpp: Disable the Clear() in UpdateAndRenderWorld() for now
33:51Run the game, see it without the Clear and consider how best to slipstream that Clear into the process
33:51Run the game, see it without the Clear and consider how best to slipstream that Clear into the process
33:51Run the game, see it without the Clear and consider how best to slipstream that Clear into the process
37:04handmade_opengl.cpp: Make OpenGLRenderCommands() call glClear() and consider leaving the Clear() off in UpdateAndRenderWorld()
37:04handmade_opengl.cpp: Make OpenGLRenderCommands() call glClear() and consider leaving the Clear() off in UpdateAndRenderWorld()
37:04handmade_opengl.cpp: Make OpenGLRenderCommands() call glClear() and consider leaving the Clear() off in UpdateAndRenderWorld()
37:22handmade_opengl.cpp: "Get our hideous pink on"α
37:22handmade_opengl.cpp: "Get our hideous pink on"α
37:22handmade_opengl.cpp: "Get our hideous pink on"α
38:21handmade_platform.h: Add a ClearColor to the game_render_commands struct and change how the screen clearing works in general
38:21handmade_platform.h: Add a ClearColor to the game_render_commands struct and change how the screen clearing works in general
38:21handmade_platform.h: Add a ClearColor to the game_render_commands struct and change how the screen clearing works in general
41:46Run the game and see what happens now
41:46Run the game and see what happens now
41:46Run the game and see what happens now
42:46handmade_opengl.cpp: Enable OpenGLRenderCommands() to toggle drawing the sprite bounds
42:46handmade_opengl.cpp: Enable OpenGLRenderCommands() to toggle drawing the sprite bounds
42:46handmade_opengl.cpp: Enable OpenGLRenderCommands() to toggle drawing the sprite bounds
44:46Run the game and try toggling the sprite bounds
44:46Run the game and try toggling the sprite bounds
44:46Run the game and try toggling the sprite bounds
45:14handmade_world_mode.cpp: Make AddStandardRoom() draw multiple layers
45:14handmade_world_mode.cpp: Make AddStandardRoom() draw multiple layers
45:14handmade_world_mode.cpp: Make AddStandardRoom() draw multiple layers
45:54Run the game and see the state of our sorting
45:54Run the game and see the state of our sorting
45:54Run the game and see the state of our sorting
46:39Blackboard: Sort Error Sources
46:39Blackboard: Sort Error Sources
46:39Blackboard: Sort Error Sources
47:30Blackboard: Bugs
47:30Blackboard: Bugs
47:30Blackboard: Bugs
47:49Blackboard: Bad Comparison
47:49Blackboard: Bad Comparison
47:49Blackboard: Bad Comparison
48:56Blackboard: Graph Cycle Resolution
48:56Blackboard: Graph Cycle Resolution
48:56Blackboard: Graph Cycle Resolution
51:06Consider drawing graph cycles, and ways to resolve cycles
51:06Consider drawing graph cycles, and ways to resolve cycles
51:06Consider drawing graph cycles, and ways to resolve cycles
53:00Blackboard: Generation Tag
53:00Blackboard: Generation Tag
53:00Blackboard: Generation Tag
54:32Blackboard: Erasable Bit
54:32Blackboard: Erasable Bit
54:32Blackboard: Erasable Bit
55:33handmade_render.h: Add Sprite_Cycle to the sprite_flag enum
55:33handmade_render.h: Add Sprite_Cycle to the sprite_flag enum
55:33handmade_render.h: Add Sprite_Cycle to the sprite_flag enum
56:22handmade_render.cpp: Make RecursiveFromToBack() first set and later clear the Sprite_Cycle
56:22handmade_render.cpp: Make RecursiveFromToBack() first set and later clear the Sprite_Cycle
56:22handmade_render.cpp: Make RecursiveFromToBack() first set and later clear the Sprite_Cycle
57:14"You know it's been a bad day when you don't know where the ~ key is"β
57:14"You know it's been a bad day when you don't know where the ~ key is"β
57:14"You know it's been a bad day when you don't know where the ~ key is"β
57:20handmade_render.h: Add HitCycle to the sprite_graph_walk struct
57:20handmade_render.h: Add HitCycle to the sprite_graph_walk struct
57:20handmade_render.h: Add HitCycle to the sprite_graph_walk struct
58:04handmade_render.cpp: Make WalkSpriteGraph() and RecursiveFromToBack() work in tandem with that HitCycle
58:04handmade_render.cpp: Make WalkSpriteGraph() and RecursiveFromToBack() work in tandem with that HitCycle
58:04handmade_render.cpp: Make WalkSpriteGraph() and RecursiveFromToBack() work in tandem with that HitCycle
59:34handmade_opengl.cpp: Make OpenGLRenderCommands() only draw the sprite bounds for sprites that cycle
59:34handmade_opengl.cpp: Make OpenGLRenderCommands() only draw the sprite bounds for sprites that cycle
59:34handmade_opengl.cpp: Make OpenGLRenderCommands() only draw the sprite bounds for sprites that cycle
1:00:20Run the game and see no cycles
1:00:20Run the game and see no cycles
1:00:20Run the game and see no cycles
1:00:59Q&A
🗩
1:00:59Q&A
🗩
1:00:59Q&A
🗩
1:01:25insobot Wherefore art thou... Can't wait to watch that stream begins?
🗪
1:01:25insobot Wherefore art thou... Can't wait to watch that stream begins?
🗪
1:01:25insobot Wherefore art thou... Can't wait to watch that stream begins?
🗪
1:02:26abner Programming won't necessarily be in your life forever. I feel like you will eventually settle down and write fiction novels
🗪
1:02:26abner Programming won't necessarily be in your life forever. I feel like you will eventually settle down and write fiction novels
🗪
1:02:26abner Programming won't necessarily be in your life forever. I feel like you will eventually settle down and write fiction novels
🗪
1:02:40chronaldragon How do you decide when a problem is complex enough to need visualization?
🗪
1:02:40chronaldragon How do you decide when a problem is complex enough to need visualization?
🗪
1:02:40chronaldragon How do you decide when a problem is complex enough to need visualization?
🗪
1:05:51roam00010011 Is the build graph still O(n^2)?
🗪
1:05:51roam00010011 Is the build graph still O(n^2)?
🗪
1:05:51roam00010011 Is the build graph still O(n^2)?
🗪
1:07:51Hjortshoej When can we download JACS Season 5?
🗪
1:07:51Hjortshoej When can we download JACS Season 5?
🗪
1:07:51Hjortshoej When can we download JACS Season 5?
🗪
1:08:15Wrap it up
🗩
1:08:15Wrap it up
🗩
1:08:15Wrap it up
🗩