[video output=day209 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Displaying Buffered Debug Data" vod_platform=youtube id=2bQ6mL3yNh0 annotator=Miblo]
[0:53][Adjust the chair][quote 279]
[1:46][Recap where we left off]
[3:37][handmade_debug.cpp: Implement the various DebugEvents]
[10:20][handmade_debug.cpp: Introduce EventsMatch]
[11:42][handmade_platform.h: Massage debug_event]
[13:20][handmade_platform.h: Replace RecordDebugEventCommon with RecordDebugEvent]
[14:05][handmade_debug.cpp: Massage these DebugEvents]
[14:40][handmade_debug.cpp: Make DeallocateOpenDebugBlock take **FirstOpenBlock]
[17:49][handmade_debug.cpp: Fix compile errors]
[19:05][Run the game and see the same results]
[19:25][handmade_debug_variables.h: Generate DEBUGAddVariables dynamically]
[27:04][handmade_debug.cpp: Implement the variable adding stuff]
[29:45][handmade_debug.cpp: Make DEBUGBeginVariableGroup take the DebugState]
[31:03][handmade_debug.cpp: Rename DEBUGAddVariable to CollateCreateVariable and DEBUGBeginVariableGroup to CollateCreateVariableGroup]
[32:06][handmade_debug.cpp: Introduce CollateAddVariableGroup]
[33:02][handmade_debug.cpp: Bring DEBUGAddRootGroup into play]
[34:15][handmade_debug.cpp: Massage DebugEvent_OpenDataBlock]
[37:30]["Everyone is happy and smiling" (quote 280)]
[37:56][handmade_debug.cpp: Introduce CollateCreateGroupedVariable]
[39:47][Debugger: See what's getting passed to the DebugBlock]
[41:55][handmade_debug.cpp: Correct typo]
[42:20][Run the game and see that we're working]
[42:44][handmade_debug.cpp: Provide a way to view the RootGroup per frame]
[44:15][handmade_debug.cpp: Make DEBUGDrawMainMenu display everything expanded by default]
[45:21][handmade_debug.cpp: Set debug_variable *Group = Tree->Group and conditionally override the Group]
[48:15][Run the game and see what it's printing]
[48:55][handmade_debug.cpp: Investigate why we're printing out so many RootGroups]
[51:30][Debugger: Step into FirstOpenDataBlock to determine that our Events aren't matching and why]
[53:24][handmade_platform.h: Consider removing the concept of EventsMatch]
[56:16][Debugger: Run and find that we hit a first-chance exception when we wrap]
[56:52][Debugger: Inspect the RootGroup]
[58:44][Debugger: Step through RestartCollation]
[59:58][handmade_debug.cpp: Test for HackyGroup]
[1:00:58][handmade_debug.cpp: Provide the ability in CollateDebugRecords to break at frame 31]
[1:01:54][Debugger: Step into CollateDebugRecords and inspect the data]
[1:03:51][handmade_platform.h: Determine that we wrap the array when we hit frame 32]
[1:05:35][handmade_debug.cpp: Make RestartCollation happen one frame earlier]
[1:06:06][Run the game and see that the entity picker is working]
[1:06:44][Q&A][:speech]
[1:08:29][@Zamar037][We've been on the debug code for quite a while. How much longer do you think it will take before we're finished?]
[1:11:33][@Stephenlast][Do you ever use data breakpoints? I find them helpful when some value is changing somewhere but you're not sure where]
[1:13:19][@JamesWidman][Does the design of this debug system differ significantly from the debug systems you've worked on for other games?]
[1:13:43][@ChronalDragon][(Not SUPER on topic, feel free to skip): How do you treat GL handles in your own code? Are they handled by the asset system or by something else?]
[1:14:30][Call it][:speech]
[1:14:42][Announcement: F2P discussion between Casey and Shawn McGrath after tomorrow's stream][:speech]
[/video]
