[video output=day215 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Cleaning Up Debug Event Collation" vod_platform=youtube id=VAKkuva8St4 annotator=Miblo]
[1:00][Recap and set the stage for the day]
[5:09][Blackboard: The inconsistency between an event buffer and a frame]
[9:45][handmade_debug_interface.h: Start to make Events be a temporary buffer by reducing the MAX_DEBUG_EVENT_ARRAY_COUNT]
[10:22][Run the game, bump up the MAX_DEBUG_EVENT_ARRAY_COUNT and play with the camera]
[11:26][handmade_debug_interface.h: Remove MAX_DEBUG_EVENT_ARRAY_COUNT and MAX_DEBUG_EVENT_COUNT and bake their values straight into Events]
[14:38][handmade_debug.h: Start porting the rest of the code to use copy out][quote 293]
[18:28][handmade_debug.h: Reorganise debug_state]
[21:39][handmade_debug.cpp: Massage DrawProfileIn]
[25:05][handmade_debug.cpp: Replace the concept of CollateArena in GetDebugThread with allocatable values]
[27:28][handmade.h: #define FREELIST_ALLOC]
[29:43][handmade_debug.cpp: Use FREELIST_ALLOC in GetDebugThread]
[30:34][Internet: decltype[ref
    site="C++ reference"
    page="decltype specifier"
    url="http://en.cppreference.com/w/cpp/language/decltype"]]
[31:11][handmade.h: Fight with decltype]
[34:39][handmade.h: Make FREELIST_ALLOC work]
[35:03][handmade_debug.cpp: Introduce NewFrame to initialise the collation]
[42:48][handmade_debug.cpp: Implement collation]
[45:53][handmade_debug.cpp: Provide the ability to get new frames]
[48:20][handmade_debug.cpp: Work through compile errors]
[57:00][handmade_debug.cpp: Introduce FreeFrame]
[57:51][handmade.h: Attempt to silence the "assignment within conditional expression" warning][quote 294]
[59:05][handmade_debug.cpp: Fix some copy pasta]
[1:00:03][Run the game and run out of memory]
[1:00:20][handmade_debug.cpp: Implement FreeFrame]
[1:08:08][handmade_debug.cpp: Introduce FreeVariableGroup]
[1:08:56][Run the game and see that we still hit the Arena->Size assertion]
[1:09:41][handmade_debug_interface.h: Ensure that the debug system can be compiled out]
[1:10:41][Run the game and see that we're back to our super speedy software rendered world]
[1:10:53][Q&A][:speech]
[1:12:51][@evraire][Once collation is done, will we get hierarchies going next?]
[1:13:51][@quartertron][Are you going to do some tricks for compile time string searches or something?]
[1:14:04][@groggeh][The last software company I worked at, you would fail a code review MISERABLY right now. How do you feel about those practices?]
[1:16:32][@BrutalABK][Do you use SQL and, if so, how do you structure your databases?]
[1:16:50][@quartertron][I imagine that all the "paths" will be known at compile time, so you probably don't need to do strcmp but I'm not sure if just using the addresses would work]
[1:17:24][@ezysigh][By the way, I tried decltype() on clang and it worked in the same kind of context (I think). cl is probably broken]
[1:17:43][@kaesve][Can you give us some programming challenges for until you get back?]
[1:18:22][@Dragonmaster047][Would it be viable to write a game that uses a database model and its logic as database transformations?]
[1:20:42][@MartinCohen][My mind cannot stop thinking about the scratch memory thing you talked with Jon the other day on the pre-stream, so I'm sorry if this is off-topic. It was a piece of memory that is kept per thread (and grows a little). Do I understand it correctly that you're passing it down the call stack, so that each function can push and pop a piece of scratch memory from it?]
[1:22:06][@Mysterious_J_][I've never thought about metaprogramming much before, and it sounds really interesting. Do you have any recommendations for more information on it?]
[1:22:30][@LOstTGM][What happens with the particles' (more simplified) collision detection if you at the same time hold and drag the window's title bar, since the game timer will be paused when the window is in the drag / size message loop built into Windows?]
[1:24:32][@Dragonmaster047][How would you "abstract" a math library as in, the game / engine uses a v2 / v3 / v4 class and you have to use graphics libs with predefined vector classes they use for rendering but you don't want to couple your game with one of these libs?]
[1:25:27][Close down][:speech]
[/video]
