[video output=day203 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Debug UI State Caching" vod_platform=youtube id=6gBJ9f5tUV4 annotator=Miblo]
[0:59][Recap our current situation]
[2:19][Blackboard: Breadth-first vs depth-first tree traversal]
[8:46][Debugger: Step into DEBUGDrawMainMenu and hunt for the hierarchy]
[13:25][handmade_debug_variables.h: Make DEBUGAddVariable call the correct Context]
[13:38][handmade_config.h: Manually rewrite the config]
[14:42][Debugger: Step through and hit a first-chance exception]
[15:20][Debugger: Inspect the DebugState->RootGroup]
[16:33][handmade_debug_variables.h: Set Link->Var in DEBUGAddVariableToGroup]
[16:49][Run the game and find it's looking a little bit better]
[17:19][handmade_config.h: Ensure that the write-out worked correctly]
[17:43][handmade_debug.cpp: Test for View->Collapsible.ExpandedAlways to be true]
[19:17][Run the game and find that everything is collapsed]
[19:37][handmade_debug.h and handmade_debug.cpp: Add debug_view Dummy to debug_state and make GetDebugViewFor return it]
[20:10][Run the game and see the debug menu expand briefly]
[20:28][handmade_debug.cpp: Finish implementing GetDebugViewFor]
[24:29][Run the game and see that it's almost working fine]
[24:45][handmade_debug.h: Consider storing the debug_view in debug_variable_link]
[26:55][handmade_debug.h: Introduce debug_id]
[27:51][handmade_debug.cpp: Pass ViewID to GetDebugViewFor]
[28:21][handmade_debug.cpp: Introduce DebugIDFromLink]
[29:15][handmade_debug.h: Add debug_id ID and debug_variable *Var to debug_interaction]
[30:12][handmade_debug.cpp: Revert the code in DEBUGEndInteract and DEBUGInteract]
[31:07][handmade_debug.cpp: Introduce VarLinkInteraction in order to compress these routines]
[33:48][handmade_debug.h: Add debug_view *ViewHash to debug_state]
[35:40][handmade_debug.cpp: Implement a hash function in GetDebugViewFor]
[40:33][handmade_debug.cpp: Introduce DebugIDsAreEqual]
[41:25][Run the game and see that our stuff works, except for indentation]
[42:29][handmade_debug.cpp: Set the Layout.Depth in order to fix the indentation]
[43:48][Run the game and see that the indentation is working pretty well]
[44:42][handmade_debug_variables.h: Investigate why the Real32 isn't working correctly]
[46:08][handmade_config.h: Try manually adding .0f to DebugCameraDistance]
[46:35][Run the game and find that DebugCameraDistance is working]
[47:07][handmade_debug.cpp: Reimplement tear-offs]
[50:27][handmade_debug_variables.h: Introduce DEBUGAddVariableToDefaultGroup]
[51:30][Run the game and find that the tear-off behaves as it did before]
[52:18][handmade_debug.cpp: Grab the correct group in DEBUGDrawMainMenu]
[53:38][Run the game and tear off specific values]
[54:18][handmade_debug.h: Make DebugIDFromLink and VarLinkInteraction take the Tree]
[55:35][Run the game and see that the state is isolated]
[56:38][Recap today's work]
[57:50][Q&A][:speech]
[58:14][@mykevelli][Pure design question. In GetDebugViewFor() your method is named such that it's a query but it appears to be a command in some cases (in that it changes the state of the system). I've heard that you typically want to avoid this. Do you agree? Is there a reason you did this?]
[59:53][@elxenoaizd][Do you think learning all the algorithms and data structures is a must, or is it OK to learn them when the need for one of them rises? Or is it one of those things that you have to learn beforehand in order to know if you need them or not?]
[1:02:01][@Insobot][4bugger... No libraries. You need a new game maker?]
[1:02:16][@quartertron][Q: Binary search tree is a subset of BTree, I think]
[1:03:07][@Rfh666][About your memory allocation (way back when): Shouldn't the amount of memory you allocate depend on the size of the world chosen by the user? As it is, it is fixed at compile time (if I understand correctly)]
[1:05:29][@elxenoaizd][I would like to be a tools programmer / game tech writer like you, but I'm still learning things so I'm not fully qualified to work as one. I'm thinking of working in a simple game company where the qualifications aren't so hardcore (maybe they use Unity or whatever), and at the same time do my private low-level self-learning. Good idea? Yes / No]
[1:08:35][@bewbilicious][What are your plans for streaming once you complete this game?]
[1:08:46][@abnercoimbre][You've discussed using Blender. Are you a 3D modeller of some sort? More specifically, what operations do you do with that software package?]
[1:10:09][@quartertron][I'd like to see a Blender pre-stream demo]
[1:10:30][@TheSizik][Would you consider doing a short off-hours stream to show people how you do things (like metaprogramming) that you won't get to touch on in Handmade Hero?]
[1:11:08][@Roots2D][Hey, love catching the stream when I can. What language do you recommend as a beginner programmer looking to get into game development?]
[1:14:51][Stream is over][:speech]
[/video]
