[video output=day210 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Consolidating Debug Data Storage" vod_platform=youtube id=r2l0atxoA4M annotator=Miblo]
[2:50][Recap and set the stage for the day]
[4:36][handmade_platform.h and handmade_debug.h: Point out the repeated code that could be compressed out]
[9:00][handmade_debug.h: Make debug_variable contain debug_event Event]
[10:41][handmade_platform.h: Move the data from debug_variable to debug_event]
[10:59][handmade_platform.h: Make vectors and rectangles accessible as base types]
[12:22][handmade_platform.h: Port the DEBUGValueSetEventData functions to use our new base types]
[13:14][Anticipate mr4thdimention's editor 4coder]
[14:19][Compile and fix compile errors]
[16:05][Run the game and see that we're still passing the right values]
[16:15][Anecdote: Some of the most productive work you will ever do will be with the delete key]
[16:43][handmade_debug.h: Consider deleting some code]
[17:38][handmade_debug_variables.h: #if 0 as much of this code as possible]
[18:34][Make this stuff not happen][quote 281]
[18:54][handmade_debug.cpp: Look at a secondary value when we see a DebugVariableType_Event]
[19:38][handmade_debug.cpp: Use the debug_event_types from handmade_platform.h]
[22:37][handmade_platform.h: TODO(casey): Have the meta-parser ignore its own #define]
[23:16][handmade_debug.cpp: Make DEBUGBeginInteract and DEBUGEndInteract use the other information]
[26:50][handmade_debug.cpp: Capture any DebugEvent as a data block]
[27:53][Run the game and find that the Tree was never initialised]
[28:28][handmade_debug.cpp: Check that the Group exists]
[28:56][Run the game and see that it's all well and good]
[29:16][handmade_platform.h: Recap the changes]
[29:46][handmade_platform.h: Introduce DebugEvent_FirstUIType to contain the DebugVariableType_ data]
[31:49][handmade_platform.h: Rename DebugEvent and DebugEventType to DebugType]
[33:06][handmade_debug.h: Change debug_variable_type to debug_type]
[33:52][handmade_debug.cpp: Rename plenty to DebugType]
[35:31][Run the game and see that everything is still working as expected]
[36:08][handmade_debug.h: Remove debug_profile_settings]
[37:09][handmade_platform.h: Add BitmapID and SoundID to debug_event]
[38:00][handmade_debug.h: Remove debug_bitmap_display]
[38:07][handmade_platform.h: Add the type definitions for bitmap_id and sound_id]
[39:18][handmade_platform.h and handmade_debug.cpp: Propagate BitmapID]
[40:55][handmade.cpp: Output a bitmap to our debug system]
[42:18][Run the game and see that we are outputting a bitmap]
[42:59][handmade_debug.h: Note that the debug_variable is disappearing]
[44:33][handmade_debug.h: Consider the possibility of debug_variable_link storing the VarGroup]
[46:46][handmade_debug.h: Add *Children to debug_variable_link]
[48:28][handmade_debug.h: Remove VarGroup from debug_variable and rename *Children to *ChildSentinel]
[51:16][handmade_debug.h: Introduce debug_variable_group to contain the Sentinel]
[53:58][handmade_debug.cpp: Propagate these new structs]
[59:18][Debugger: Inspect Iter->Link]
[1:00:18][handmade_debug.cpp: Read through the routine]
[1:01:35][handmade_debug.cpp: Set the Link->Children]
[1:02:01][Run the game and note that we're getting a little bit closer]
[1:02:40][Q&A][:speech]
[1:03:22][@insobot][It's expected. I've got more to do?]
[1:04:06][@quartertron][Why call it Sentinel instead of Head even though it is a sentinel?]
[1:04:41][@theGeekPirate][What's your favourite data structure?]
[1:06:57][@stiegosaurus][Handmade, I'm not sure if you specified this in a previous broadcast, but do you plan to implement side scrolling or any kind of platforming alongside the top-down view?]
[1:07:54][@insobot][Llvm is getting too deep?]
[1:08:20][@TheSizik][Legend of Zelda has some faux-sidescrolling rooms]
[1:08:43][@stiegosaurus][What has been your favourite thing so far writing this engine?]
[1:09:08][@tyroie][I had an idea that's probably stupid. But I was wondering if a Vector that, when deleting an element, just left an empty spot that's skipped over when iterating, would still be cache friendly - and still efficient when deleting and inserting. This is slightly over my head though]
[1:11:27][@theGeekPirate][How about your favourite equation?]
[1:12:03][Blackboard: Linear blend]
[1:12:26][@dmitryscaletta][Do you use DirectX?]
[1:12:56][@as2onish][What do you think of clang C1 for Visual Studio?]
[1:14:03][@mojo123x][If you were doing these compressions (the ones you did today) at work, how different would your process be?]
[1:15:51][@as2onish][Microsoft is making clang for parsing -> intermediate a first class fully supported citizen for visual studio starting in November. Intermediate to machine is still Microsoft (C2)]
[1:17:13][@Ikkir_Isth][How long do you think it will take before someone makes a Linux debugger that can rival Visual Studios?]
[1:17:54][@erdomina][What do you think of programming competitions? Have you participated in any?]
[1:18:08][@mrbass21][What role do you think software security has in modern gaming? Is it not worth wasting CPU cycles to guard against different exploits? How good of a job is the game industry doing in implementing it and should they be doing more or less?]
[1:23:35][Close down the Q&A and get the chat link setup for Mr McGrath][:speech]
[/video]
