Handmade Hero»Episode Guide
Building and Traversing Graphs
?
?

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)
1:14Recap and set the stage for the day
1:14Recap and set the stage for the day
1:14Recap and set the stage for the day
2:52handmade_sort.cpp: Briefly look through what BuildSpriteGraph() does
2:52handmade_sort.cpp: Briefly look through what BuildSpriteGraph() does
2:52handmade_sort.cpp: Briefly look through what BuildSpriteGraph() does
5:08Blackboard: Graph sort
5:08Blackboard: Graph sort
5:08Blackboard: Graph sort
8:35Blackboard: Subgraphs, and marking each node you touch
8:35Blackboard: Subgraphs, and marking each node you touch
8:35Blackboard: Subgraphs, and marking each node you touch
9:38Blackboard: Cycles
9:38Blackboard: Cycles
9:38Blackboard: Cycles
11:41Blackboard: The steps involved in doing this graph sort
11:41Blackboard: The steps involved in doing this graph sort
11:41Blackboard: The steps involved in doing this graph sort
13:52handmade_sort.cpp: Reorganise our graph structs
13:52handmade_sort.cpp: Reorganise our graph structs
13:52handmade_sort.cpp: Reorganise our graph structs
16:42handmade_sort.cpp: Begin to implement BuildSpriteGraph() for real
16:42handmade_sort.cpp: Begin to implement BuildSpriteGraph() for real
16:42handmade_sort.cpp: Begin to implement BuildSpriteGraph() for real
21:53Blackboard: Traversing the edges from foremost to backmost
21:53Blackboard: Traversing the edges from foremost to backmost
21:53Blackboard: Traversing the edges from foremost to backmost
23:37handmade_sort.cpp: Continue implementing BuildSpriteGraph()
23:37handmade_sort.cpp: Continue implementing BuildSpriteGraph()
23:37handmade_sort.cpp: Continue implementing BuildSpriteGraph()
24:31handmade_sort.cpp: Introduce WalkSpriteGraph()
24:31handmade_sort.cpp: Introduce WalkSpriteGraph()
24:31handmade_sort.cpp: Introduce WalkSpriteGraph()
26:07handmade_sort.cpp: Introduce RecursiveFromToBack()
26:07handmade_sort.cpp: Introduce RecursiveFromToBack()
26:07handmade_sort.cpp: Introduce RecursiveFromToBack()
29:30handmade_sort.cpp: Introduce enum sprite_flag, in order to mark sprites as visited and drawn
29:30handmade_sort.cpp: Introduce enum sprite_flag, in order to mark sprites as visited and drawn
29:30handmade_sort.cpp: Introduce enum sprite_flag, in order to mark sprites as visited and drawn
32:07handmade_sort.cpp: Make BuildSpriteGraph() and RecursiveFromToBack() use those flags
32:07handmade_sort.cpp: Make BuildSpriteGraph() and RecursiveFromToBack() use those flags
32:07handmade_sort.cpp: Make BuildSpriteGraph() and RecursiveFromToBack() use those flags
34:14Blackboard: Note that we've done the graph sorting steps out of order
34:14Blackboard: Note that we've done the graph sorting steps out of order
34:14Blackboard: Note that we've done the graph sorting steps out of order
35:02handmade_sort.cpp: Introduce struct sprite_graph_walk in order to keep track of our location in the graph
35:02handmade_sort.cpp: Introduce struct sprite_graph_walk in order to keep track of our location in the graph
35:02handmade_sort.cpp: Introduce struct sprite_graph_walk in order to keep track of our location in the graph
39:17Consider how we'll need to proceed
39:17Consider how we'll need to proceed
39:17Consider how we'll need to proceed
40:38handmade_sort.cpp: Clean up compile errors
40:38handmade_sort.cpp: Clean up compile errors
40:38handmade_sort.cpp: Clean up compile errors
42:18handmade_sort.cpp: Make BuildSpriteGraph() and SortEntries() take a memory_arena
42:18handmade_sort.cpp: Make BuildSpriteGraph() and SortEntries() take a memory_arena
42:18handmade_sort.cpp: Make BuildSpriteGraph() and SortEntries() take a memory_arena
43:50Consider doing the sort in pieces that don't interfere with one another
43:50Consider doing the sort in pieces that don't interfere with one another
43:50Consider doing the sort in pieces that don't interfere with one another
47:59Blackboard: Treating the game sort data and the debug sort data separately
47:59Blackboard: Treating the game sort data and the debug sort data separately
47:59Blackboard: Treating the game sort data and the debug sort data separately
52:40win32_handmae.cpp: Consider issuing RenderCommands() and LinearizeClipRects() in two separate places
52:40win32_handmae.cpp: Consider issuing RenderCommands() and LinearizeClipRects() in two separate places
52:40win32_handmae.cpp: Consider issuing RenderCommands() and LinearizeClipRects() in two separate places
55:09handmade_sort.cpp: Prevent BuildSpriteGraph() from calling PushStruct()
55:09handmade_sort.cpp: Prevent BuildSpriteGraph() from calling PushStruct()
55:09handmade_sort.cpp: Prevent BuildSpriteGraph() from calling PushStruct()
55:53win32_handmade.cpp: Prevent Win32DisplayBufferInWindow() from calling SortEntries()
55:53win32_handmade.cpp: Prevent Win32DisplayBufferInWindow() from calling SortEntries()
55:53win32_handmade.cpp: Prevent Win32DisplayBufferInWindow() from calling SortEntries()
56:16Run the game and find that the entries aren't sorted but that we don't crash
56:16Run the game and find that the entries aren't sorted but that we don't crash
56:16Run the game and find that the entries aren't sorted but that we don't crash
56:26Q&A
🗩
56:26Q&A
🗩
56:26Q&A
🗩
57:50wasenabled Did you discuss why you are using recursion and any concerns with stack overflows?
🗪
57:50wasenabled Did you discuss why you are using recursion and any concerns with stack overflows?
🗪
57:50wasenabled Did you discuss why you are using recursion and any concerns with stack overflows?
🗪
59:04bryanwwag Working with graphs can be difficult; do you have any techniques for debugging them other than observing screen renders, or is that mostly sufficient?
🗪
59:04bryanwwag Working with graphs can be difficult; do you have any techniques for debugging them other than observing screen renders, or is that mostly sufficient?
🗪
59:04bryanwwag Working with graphs can be difficult; do you have any techniques for debugging them other than observing screen renders, or is that mostly sufficient?
🗪
1:00:46roam00010011 Okay for real, did you address the possibility for intersecting sprites?
🗪
1:00:46roam00010011 Okay for real, did you address the possibility for intersecting sprites?
🗪
1:00:46roam00010011 Okay for real, did you address the possibility for intersecting sprites?
🗪
1:01:10lumenian When I code I use the mouse a lot. You seem to be using a lot of shortcuts to jump here and there. Can you tell more about your shortcuts? Thanks!1
🗪
1:01:10lumenian When I code I use the mouse a lot. You seem to be using a lot of shortcuts to jump here and there. Can you tell more about your shortcuts? Thanks!1
🗪
1:01:10lumenian When I code I use the mouse a lot. You seem to be using a lot of shortcuts to jump here and there. Can you tell more about your shortcuts? Thanks!1
🗪
1:02:02hopollo Do you know the dev Garry Newman? If yes, what do you think about his work?
🗪
1:02:02hopollo Do you know the dev Garry Newman? If yes, what do you think about his work?
🗪
1:02:02hopollo Do you know the dev Garry Newman? If yes, what do you think about his work?
🗪
1:02:40sssmcgrath I stopped using Razer's drivers as soon as you needed an account
1:02:40sssmcgrath I stopped using Razer's drivers as soon as you needed an account
1:02:40sssmcgrath I stopped using Razer's drivers as soon as you needed an account
1:03:03filiadelski What's that shirt?
🗪
1:03:03filiadelski What's that shirt?
🗪
1:03:03filiadelski What's that shirt?
🗪
1:04:00Wind it down
🗩
1:04:00Wind it down
🗩
1:04:00Wind it down
🗩