[video 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]