[video output=day217 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Per-element Debug Event Storage" vod_platform=youtube id=m2Y7UmUU_xo annotator=Miblo]
[2:34][Run the game and hit our assertion in FreeVariableGroup]
[3:49][handmade_debug.h: Consider cleaning this stuff up as we do it]
[5:22][handmade_debug.h: Move RootGroup from debug_frame to debug_state]
[7:08][handmade_debug.h: Introduce debug_element to store a chain of Events]
[9:54][handmade_debug.h: Introduce debug_stored_event]
[11:21][handmade_debug.h: Provide a way to walk the existing debug elements and free them]
[15:42][handmade_debug.h: Add TotalFrameCount and calculate how long the debug system will then be able to run before the TotalFrameCount wraps around]
[18:42][handmade_debug.cpp: #if 0 RegionIndex and work on VarLinkInteraction]
[22:51][handmade_debug.cpp: Introduce GetEventFromLink][quote 299]
[27:23][handmade_debug_interface.h: Refresh our memory of DEBUGInitializeValue and RecordDebugEvent]
[31:35]["Riddle me this, Batman"][quote 300]
[35:29][handmade_debug.h: Add ElementHash to debug_state and talk through the system]
[39:07][handmade_debug.h: Add debug_tree *RootTree to debug_state]
[39:54][handmade_debug.h: Reduce the size of the ElementHash array]
[41:19][handmade_debug.cpp: Rewrite FreeFrame]
[46:28][handmade_debug.h: Add debug_stored_event *FirstFreeStoredEvent to debug_state]
[47:04][handmade_debug.cpp: Remove HackyGroup]
[49:43][handmade_debug.cpp: Considering removing the concept of Region and sending all the BeginBlock and EndBlock into the ElementHash]
[50:48][On coming towards a coherent architecture]
[52:46][handmade_debug_interface.h: Figure out how to uniquely identify events]
[57:50][handmade_debug_interface.h: Add GUID to RecordDebugEvent]
[59:16][handmade_debug_interface.h: #define UniqueFileCounterString]
[1:01:22][handmade_debug_interface.h: Remove FileName and LineNumber]
[1:01:54][handmade_debug.cpp: Introduce HashThisEvent but turn off HANDMADE_INTERNAL]
[1:02:22][Q&A][:speech]
[1:03:53][@elxenoaizd][For UI programming, what do you think of the MVC (Model View Controller) pattern? Is it of any practical use?]
[1:06:47][@sssmcgrath][Could you talk a bit about other debug system-y stuff you've done before? I've done all sorts of debug systems, not much like what you're doing now, and I'm curious what other stuff you may have done (just high level description, one-sentence descriptions are fine). Thanks!]
[1:11:13][@Kr1zz0][Can you explain what the macro-nastiness exactly does? Why do you have two underscore "levels"?]
[1:13:12][@sizzle182][Would you say that your engine makes it easy for a new programmer to come in and add functionality?]
[1:13:48][@elxenoaizd][I was implementing Shadow mapping in OpenGL. It seems that there's a lot of issues and artifacts: Shadow Acne, Peter Panning etc., and to work around those you end up with something more complex and expensive. I kind of find it hard to believe that games with decent graphics use this technique. Do you know of any other good way to implement shadows, or do we just have to work around its limitations?]
[1:19:05][@brutalexcess][Is the mobile platform limit to Android-only (excluding iOS) for any particular reason?]
[1:20:21][@elxenoaizd][What if we just blur the edges of the shadows? (Gaussian blur)]
[1:21:03][@elxenoaizd][Do you think namespaces actually solve the problem of naming collisions? Or there's no need for them and the usual C-style 'SystemName_Function' suffices?]
[1:21:32][@cubercaleb][Yes, but how is Windows any different, don't you need to compile Windows programs on Windows?]
[1:26:10][On overcoming world hunger][:speech][quote 301]
[1:27:02][Close it down][:speech]
[/video]
