[video output=day202 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Multiply Appearing Debug Values" vod_platform=youtube id=JTwMFtyuL6M annotator=Miblo] [0:28][Debugger: Enabling "Go To Definition / Declaration" feature] [3:10][Internet: Building Browse Information Files: Overview[ref site="MSDN" page="Building Browse Information Files: Overview" url="https://msdn.microsoft.com/en-us/library/f403he0y.aspx"]] [4:00][build.bat: Add -FR flag] [7:18][Debugger: Show a dummy win32 project with this browse info enabled] [7:55][build.bat: Remove -FR flag and delete the *.bsc and *.sbr files] [8:13][Recap our current status] [8:59]["Patience is a virtue"][quote 268] [12:12][Set the stage for the day] [13:55][handmade_debug.h: Introduce debug_variable_link] [15:10][handmade_debug_variables.h: Introduce DEBUGAddVariableToGroup] [17:18][handmade.h: #define DLIST_INSERT] [18:40][handmade_debug_variables.h and handmade_debug.cpp: Use this DLIST_INSERT macro] [19:59][handmade_debug_variables.h: Continue cleaning up] [20:57][handmade.h: #define DLIST_INIT] [22:05][handmade_debug.h: Consider whether we want to store parent pointers for variables] [23:25][handmade_debug_variables.h: Introduce debug_variable_group_builder to enable DEBUGEndVariableGroup to pass the parent VarGroup back] [25:07][handmade_debug_variables.h: Add a GroupDepth and *GroupStack array to debug_variable_definition_context to show another way to solve this problem] [29:13][handmade_debug.cpp: Initialise that GroupStack in debug_variable_definition_context] [31:07][handmade_debug_variables.h: Continue on cleaning up compile errors] [33:05][Blackboard: Traversing trees using pointers and then stacks] [38:08][handmade_debug.cpp: Add *Stack to WriteHandmadeConfig] [41:51][Blackboard: The natural order of the stack] [45:40][handmade_debug.cpp: Introduce debug_variable_iterator to augment the stack] [52:39][handmade_debug.cpp: Continue cleaning up compile errors] [54:15][handmade_debug.cpp: Unwind the stack iteration loop] [56:25][handmade_debug.cpp: Use our stack implementation in DEBUGDrawMainMenu] [57:25][handmade_debug.cpp: Continue cleaning up compile errors] [1:00:46][handmade_debug.cpp: Introduce a dummy GetDebugViewFor] [1:01:18][Correctly spell "variable"][quote 269] [1:01:27][handmade_debug.cpp: Finish cleaning up compile errors] [1:03:49]["That's the end of that"][quote 271] [1:04:51][Q&A][:speech] [1:05:19][@TheSizik][Does it work?] [1:07:32][@diaboIix17][Earlier in the stream you said that you once spent 10 weeks on a problem. What was that problem?] [1:09:03][@insofaras][Have you considered using intrusive linked lists like those in the Linux kernel that use offsetof()] [1:10:03][@ijustwantfood][How portable will the game engine be? Could it be used to make other games?] [1:10:42][@cubercaleb][Curve Solver?] [1:11:05][@insofaras][Will we ever see the memory chunk debug visualization?] [1:12:32][@Imapushover][What flavour of Linux on your laptop today, and what will it be on Monday] [1:13:02][@insofaras][By the way, I think the Linux kernel implementation can have something in multiple lists at once] [1:13:24][Blackboard: Linked lists] [1:14:35][@Angrycrow][Can you give me a quick rundown again of how you're substituting the stack for instances of the debug view?] [1:15:01][@MartinCohen][So what do you use as a "formatting language" usually?] [1:15:55][@cubercaleb][Is this how you do UI in your other programs?] [1:16:44][Call it done][:speech] [/video]