[video output=day304 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Building and Traversing Graphs" vod_platform=youtube id=4GmDwulUkPA annotator=Miblo]
[1:14][Recap and set the stage for the day]
[2:52][handmade_sort.cpp: Briefly look through what BuildSpriteGraph() does]
[5:08][Blackboard: Graph sort]
[8:35][Blackboard: Subgraphs, and marking each node you touch]
[9:38][Blackboard: Cycles]
[11:41][Blackboard: The steps involved in doing this graph sort]
[13:52][handmade_sort.cpp: Reorganise our graph structs]
[16:42][handmade_sort.cpp: Begin to implement BuildSpriteGraph() for real]
[21:53][Blackboard: Traversing the edges from foremost to backmost]
[23:37][handmade_sort.cpp: Continue implementing BuildSpriteGraph()]
[24:31][handmade_sort.cpp: Introduce WalkSpriteGraph()]
[26:07][handmade_sort.cpp: Introduce RecursiveFromToBack()]
[29:30][handmade_sort.cpp: Introduce enum sprite_flag, in order to mark sprites as visited and drawn]
[32:07][handmade_sort.cpp: Make BuildSpriteGraph() and RecursiveFromToBack() use those flags]
[34:14][Blackboard: Note that we've done the graph sorting steps out of order]
[35:02][handmade_sort.cpp: Introduce struct sprite_graph_walk in order to keep track of our location in the graph]
[39:17][Consider how we'll need to proceed]
[40:38][handmade_sort.cpp: Clean up compile errors]
[42:18][handmade_sort.cpp: Make BuildSpriteGraph() and SortEntries() take a memory_arena]
[43:50][Consider doing the sort in pieces that don't interfere with one another]
[47:59][Blackboard: Treating the game sort data and the debug sort data separately]
[52:40][win32_handmae.cpp: Consider issuing RenderCommands() and LinearizeClipRects() in two separate places]
[55:09][handmade_sort.cpp: Prevent BuildSpriteGraph() from calling PushStruct()]
[55:53][win32_handmade.cpp: Prevent Win32DisplayBufferInWindow() from calling SortEntries()]
[56:16][Run the game and find that the entries aren't sorted but that we don't crash]
[56:26][Q&A][:speech]
[57:50][@wasenabled][Did you discuss why you are using recursion and any concerns with stack overflows?]
[59:04][@bryanwwag][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:46][@roam00010011][Okay for real, did you address the possibility for intersecting sprites?]
[1:01:10][@lumenian][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![ref
    site="YouTube"
    page="Handmade 4coder"
    url="https://www.youtube.com/playlist?list=PLrBsIiq8z2AbcUih00deJpPWi4e4seti9"]]
[1:02:02][@hopollo][Do you know the dev Garry Newman? If yes, what do you think about his work?]
[1:02:40][sssmcgrath I stopped using Razer's drivers as soon as you needed an account]
[1:03:03][@filiadelski][What's that shirt?]
[1:04:00][Wind it down][:speech]
[/video]
