[video output=day263 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Adding a Debug Frame Slider" vod_platform=youtube id=NgWclbqkXJg annotator=Miblo]
[0:49][Run the game and set the stage for the day]
[1:56]["You feel me, dawg?"][quote 461]
[2:47][handmade_debug.cpp: Introduce case DebugType_LastFrameInfo and _DebugMemoryInfo and tie them into the system]
[6:12][handmade_debug.cpp: Introduce BasicTextElement]
[7:50][Hype 4coder and demo some indentation issues]
[9:24][Compile and run and find that BasicTextElement does work]
[9:50][handmade_debug.cpp: Propagate BasicTextElement]
[10:32][handmade_debug_interface.h: Define our new DebugTypes and DEBUG_UI_ELEMENT]
[12:44][Run the game and view the profiler]
[13:10][handmade_debug.cpp: Investigate why the DebugTypes appear in reverse order]
[14:36][handmade.h: #define DLIST_INSERT_AS_LAST]
[15:54][handmade_debug.cpp: Make AddGroupToGroup call DLIST_INSERT_AS_LAST]
[16:27][handmade_debug.h: Add ViewingFrameOrdinal to debug_state]
[17:48][handmade.cpp: Add a DEBUG_DATA_BLOCK "Debug Control" for a FrameSlider]
[19:04][handmade_debug.cpp: Implement DebugType_FrameSlider]
[22:04][handmade_debug.cpp: Introduce DrawFrameSlider]
[26:11][Run the game and see that we did totally mess it up]
[26:20]["Nice work, Muratori. You're off the team"][quote 462]
[26:25][handmade_debug.cpp: Iterate through the for loop in DrawFrameSlider]
[27:10][Song: 'Too Many Frames' by Casey Muratori]
[28:21][handmade_debug.cpp: Make ViewingFrame yellow, the color of urine][quote 463]
[30:48][Run the game, view the FrameSlider and explain what will happen when we run out of per-frame arena space]
[32:49][handmade_debug.cpp: Switch to a smaller SubArena for the debug information]
[33:21][Run the game and hit an assertion when we have insufficient memory to store the debug data]
[35:32][handmade_debug.cpp: ZeroStruct the Frame]
[35:54][Run the game and watch the FrameSlider as we run out of space to store the debug data]
[38:02][handmade_debug.cpp: Provide the ability to interact with the FrameSlider]
[42:03][Run the game and crash upon interacting with the slider]
[42:20]["Who wrote this ridiculous code?"][quote 464]
[42:30][handmade_debug.cpp: Put the interaction code in the correct place]
[43:01][Run the game and interact with the slider]
[43:38][handmade_debug.cpp: Replace MostRecentFrameOrdinal with ViewingFrameOrdinal]
[45:59][Run the game and find that we can pick the ViewingFrame with the slider, but that the profiler expands weirdly]
[50:14][Run the game and investigate why ToggleExpansion is happening]
[53:32][handmade_debug.cpp: Conditionally set MostRecentFrameOrdinal if we're paused]
[54:10][Run the game and admire the profiler]
[55:13][handmade_debug.cpp: Implement the ability to pause the profiler]
[57:30][Run the game and try pausing the profiler]
[58:21][Demonstrate the fact that we track all of the data]
[1:00:00][Q&A][:speech]
[1:00:31][@fwe4][How much would it cost to save draw buffer snapshots so when you pause you can show the visual state it was in, or maybe save enough data to recentre the frame?]
[1:03:09][@mongorians][It is impossible to keep the entire codebase in mind when developing a larger project? How does this impact "code design" decisions in Handmade Hero? What about other, larger projects (e.g. AAA titles)?]
[1:05:04][@glhrmfrts][Originally by @Scykoh: "Is the engine portion expected to be the largest chunk of the Handmade Hero project?"]
[1:06:55][@culver_fly][Can you please explain again the problem with texture loading? Why does it not work occasionally?]
[1:07:54][Wrap it up and glimpse into the future][:speech]
[/video]
