[video output=day214 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Collating Permanent Debug Values" vod_platform=youtube id=4aeT9T-i3Qs annotator=Miblo]
[1:25][Recap and set the stage for the day]
[2:05][handmade_debug_interface.h: Turn on DEBUG_IF and resume implementing it]
[4:13][handmade_debug.cpp: Introduce DEBUGInitializeValue]
[4:54][Consider how to hook this into the system]
[9:13][handmade_debug.cpp: Make varieties of DEBUGInitializeValue for the various types]
[12:47][handmade_debug_interface.cpp: Try using the sequence operator to set DebugValue##Path]
[17:28][On using the sequence operator to initialise a static]
[18:31][handmade_debug_interface.cpp: Use the sequence operator to set DebugValue##Variable]
[19:51][handmade_debug.cpp: Write DEBUGInitializeValue][quote 289]
[21:47][handmade_debug.cpp: Consider adding CollateAddVariableToGroup, AcquireMutex and ReleaseMutex to DEBUGInitializeValue to enable us to manipulate these types indirectly]
[25:27]["A better way"][quote 290]
[25:38][handmade_debug_interface.h: Write a new, thread-safe DEBUGInitializeValue]
[30:50][handmade_debug.cpp: Implement the ability to output all the variables in a list]
[31:42][handmade_debug.cpp: Introduce GetGroupForName][quote 291]
[32:07][handmade_debug.cpp: "Double up on the fanciness"][quote 292]
[33:33][Blackboard: How handmade_config.h enables us to preload values on execution]
[35:15][handmade_debug.cpp: Undo and introduce GetGroupForHierarchicalName]
[36:09][handmade_debug.cpp: Add *ValuesGroup to debug_state]
[37:52][handmade_debug.cpp: Make CollateAddVariableToGroup test if Permanent]
[38:46][handmade_debug.cpp: Write GetGroupForHierarchicalName]
[41:29][handmade_debug.cpp: Initialise DebugState->ValuesGroup]
[42:07][Run the game and see that it picks up all the debug variables]
[42:22][handmade_debug.cpp: Set *HackyGroup differently in DEBUGDrawMainMenu]
[42:48][Run the game and see that we're sort of working]
[43:33][handmade_debug.cpp and handmade_debug_interface.h: Investigate why we're adding the same variable multiple times]
[45:31][Debugger: Break into DEBUGInitializeValue and inspect Event]
[48:02][handmade_debug.cpp: Test if Event->Type == DebugType_MarkDebugValue at the start of the routine]
[49:52][Run the game and see all of the variables]
[51:07][win32_handmade.cpp: Reduce the number of threads used]
[52:10][Run the game and see that we are still outputting too many copies of the variables]
[52:22][win32_handmade.cpp: Revert the number of threads used]
[52:55][Debugger: Break into DEBUG_IF and Go to Disassembly]
[55:21][handmade_debug.cpp: Find that RestartCollation keeps rereading the events and adding them]
[58:57][Q&A][:speech]
[59:23][@desuused][Variable initiation hack in DEBUG_IF macro makes my internal code quality kitten sad. Would it be possible to move that initiation to struct ""method""?]
[59:55][@btnGames][Persisting the DEBUGValue between live code loading is great, I didn't understand what you were doing but then I got it with the demo, really cool. I had conflated the value of a variable with the value of debug of the variable. Small addition for a huge benefit]
[1:02:20][@btnGames][Are you sad that you didn't fix Collation? If no more questions come in it would be neat to see it now, so you're not sad]
[1:02:49][@Mr4thDimention][Will you have time tomorrow to look at 4coder? I am trying to decide whether to prioritize getting the new demo out tomorrow morning]
[1:04:33][@Mr4thDimention][Gotcha, I do have parameterized commands that I'd love to hear a response on]
[1:05:10][@thenightysfly][Why are you awesome? Which dojo did you train to become a code warrior?]
[1:05:42][@Manicthenobody][desuused elaborated with a @Cmuratori prefix]
[1:06:19][@Manicthenobody][I quote "instead of writing debug_event Name = initiator((AnotherVar = something, something)); make a struct constructor debug_event (&AnotherVar, something) that initiates the value"]
[1:07:55][@desuused][So that you don't do assignment in the function call in the macro, which makes me really saaaad]
[1:10:25][@elxenoaizd][Are you playing any games? If so, what?]
[1:11:06][@MartinCohen][So elvin = elxenoaizd?]
[1:11:38][@Manicthenobody][How did you keep up that awesome beat just now?]
[1:11:51][@thenightysfly][What type of games do you prefer?]
[1:12:39][@elxenoaizd][Not elven but elzen]
[1:13:08][Wind it down][:speech]
[/video]
