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