[video output=day198 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Run-time Editing of Debug Hierarchies" vod_platform=youtube id=wyN_xzqz5dk annotator=Miblo] [2:18][Recap and set the stage for the day] [4:31][handmade_debug.h: Introduce debug_variable_reference] [8:04][handmade_debug_variables.h: Introduce DEBUGAddUnreferencedVariable] [9:43][handmade_debug.h: Add debug_variable *Var to debug_variable_reference] [9:51][handmade_debug_variables.h: Introduce DEBUGAddVariableReference] [12:15][handmade_debug_variables.h: Clean up compile errors] [14:11][handmade_debug.cpp: Propagate Ref out] [16:16][Compile and see that it still works] [16:35][handmade_debug_variables.h: Try adding a UseDebugCamRef into two different groups] [18:06][Run the game and see UseDebugCam in two groups] [18:51][handmade_debug.cpp: Implement the ability to have more than one debug_variable_hierarchy] [24:26][handmade_debug.cpp: Introduce AddHierarchy] [27:32][handmade_debug.cpp: Write the Hierarchy doubly-linked list] [29:42][Debugger: Step in to AddHierarchy] [31:15][handmade_debug.cpp: Call AddHierarchy in the correct place] [32:27][Run the game and find things in better shape] [32:58][handmade_debug.cpp: Implement the ability to tear items off the menu] [38:59][handmade_debug.cpp: Implement DebugInteraction_TearValue] [41:14][handmade_debug.variables.h: Introduce DEBUGAddRootGroup] [45:08][handmade_debug.cpp: Call DEBUGAddRootGroup] [47:12][handmade_debug_variables.h: Make DEBUGAddVariableReference take debug_variable *Group] [50:11][handmade_debug.cpp: Call DEBUGAddVariableReference] [51:04][handmade_debug_variables.h: Make DEBUGAddRootGroup add a debug_variable_reference] [52:00][handmade_debug_variables.h: Introduce a new DEBUGAddRootGroup and rename the original to DEBUGAddRootGroupInternal] [54:47][Run the game and test out our new tearing ability] [55:45][handmade_debug.cpp and handmade_debug.h: Introduce DebugInteraction_MoveHierarchy] [57:25][handmade_debug.cpp: Draw a MoveBox for each Hierarchy] [58:41][handmade_debug.cpp: Implement the ability to move that Hierarchy] [59:31][handmade_debug.h: Add debug_hierarchy *NextHotHierarchy to debug_state] [1:02:14][Debugger: Step in to DraggingHierarchy] [1:02:58][handmade_debug.cpp: Clear NextHotHierarchy] [1:03:14][handmade_debug.cpp: Introduce DEBUGTextLine to display when we are interacting] [1:04:22][handmade_debug.cpp: Make the check be on HotInteraction] [1:05:25][Run the game and try that again] [1:05:55][handmade_debug.cpp: Move Assert(Var)] [1:06:22][Run the game and check out our tearing and moving abilities] [1:07:00][Q&A][:speech] [1:07:47][@Connor_Rentz][No questions] [1:08:04][@elxenoaizd][You mentioned that encapsulation is good but not in the OOP way. Could you elaborate then in which way you mean?] [1:09:09][@insofaras][Are the menu items spaced evenly vertically? Looks a bit odd to me] [1:09:25][handmade_debug.cpp: Use LineAdvance to space the lines] [1:16:49][@adamantoise17][Why is there so much lag / latency when dragging the hierarchies around? Or is that just Twitch streaming artifacts?] [1:18:08][@blah238][Are the different tear-offs intended to have identical hierarchies or is the intention that you drill down into different things without all the tear-offs being affected?] [1:19:12][@APlethora][I noticed you use the internal keyword. I haven't seen it before. What is its purpose?] [1:19:23][@theGeekPirate][I apologize since I came in late, but out of curiosity, what was the tolerance (in pixels) you used for dragging out a subsection?] [1:19:38][@mojo123X][You mentioned that for linked lists at work you use metaprogramming. What did you mean?] [1:19:51][@Outcastedbird][I missed 90% of the stream, so I missed a ton. I just want to ask what are some tips for people who want to get into designing games? Dos and Don'ts and simple things that are worthwhile] [1:20:02][@APlethora][Does anyone know if there is plans in the future to add other platform support to this project?] [1:20:23][@elxenoaizd][Have you ever written anything for the PS1? (I think Jeff mentioned he used to do some stuff in a J&C episode?)] [1:20:27][@blah238][Have you ever played any of the Space Quest games? The music for the video on the Handmade Hero site reminds me of it a lot] [1:20:47][@MartinCohen][Do you plan doing something with the character spacing in the text renderer?] [1:21:02][@Angrycrow][Is 'sentinel' a design pattern that will help with making the torn instances of the UI independent, or is that terminology that you've gained in years of tool development? Now that I understand what you meant by 'tearing' the interface, it seems really useful for isolating instances of hierarchies] [1:21:31][@Longboolean][Not a huge deal, but the labels no longer show if clicking them will expand or minimize them. Also at a glance it is not clear what is a category and what is a var] [1:21:48][@plain_flavored][Which game console had the worst SDK?] [1:22:16][Wrap it up][:speech] [/video]