Adding a Debug Frame Slider
?
?
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
z Toggle filter mode V Revert filter to original state
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus
Keyboard Navigation
Global Keys
[, < / ], > Jump to previous / next episodeW, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
z Toggle filter mode V Revert filter to original state
Menu toggling
q Quotes r References f Filter c CreditsIn-Menu Movement
a
w
s
s
d
h
j
k
l
←
↑
↓
↓
→
Quotes and References Menus
Enter Jump to timecodeQuotes, References and Credits Menus
o Open URL (in new tab)Filter Menu
x, Space Toggle category and focus nextX, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus
Credits Menu
Enter Open URL (in new tab)⏫
Previous: 'Drawing Multi-frame Profile Graphs'
⏫
0:49Run the game and set the stage for the day
0:49Run the game and set the stage for the day
0:49Run the game and set the stage for the day
1:56"You feel me, dawg?"α
1:56"You feel me, dawg?"α
1:56"You feel me, dawg?"α
2:47handmade_debug.cpp: Introduce case DebugType_LastFrameInfo and _DebugMemoryInfo and tie them into the system
2:47handmade_debug.cpp: Introduce case DebugType_LastFrameInfo and _DebugMemoryInfo and tie them into the system
2:47handmade_debug.cpp: Introduce case DebugType_LastFrameInfo and _DebugMemoryInfo and tie them into the system
6:12handmade_debug.cpp: Introduce BasicTextElement
6:12handmade_debug.cpp: Introduce BasicTextElement
6:12handmade_debug.cpp: Introduce BasicTextElement
7:50Hype 4coder and demo some indentation issues
7:50Hype 4coder and demo some indentation issues
7:50Hype 4coder and demo some indentation issues
9:24Compile and run and find that BasicTextElement does work
9:24Compile and run and find that BasicTextElement does work
9:24Compile and run and find that BasicTextElement does work
9:50handmade_debug.cpp: Propagate BasicTextElement
9:50handmade_debug.cpp: Propagate BasicTextElement
9:50handmade_debug.cpp: Propagate BasicTextElement
10:32handmade_debug_interface.h: Define our new DebugTypes and DEBUG_UI_ELEMENT
10:32handmade_debug_interface.h: Define our new DebugTypes and DEBUG_UI_ELEMENT
10:32handmade_debug_interface.h: Define our new DebugTypes and DEBUG_UI_ELEMENT
12:44Run the game and view the profiler
12:44Run the game and view the profiler
12:44Run the game and view the profiler
13:10handmade_debug.cpp: Investigate why the DebugTypes appear in reverse order
13:10handmade_debug.cpp: Investigate why the DebugTypes appear in reverse order
13:10handmade_debug.cpp: Investigate why the DebugTypes appear in reverse order
14:36handmade.h: #define DLIST_INSERT_AS_LAST
14:36handmade.h: #define DLIST_INSERT_AS_LAST
14:36handmade.h: #define DLIST_INSERT_AS_LAST
15:54handmade_debug.cpp: Make AddGroupToGroup call DLIST_INSERT_AS_LAST
15:54handmade_debug.cpp: Make AddGroupToGroup call DLIST_INSERT_AS_LAST
15:54handmade_debug.cpp: Make AddGroupToGroup call DLIST_INSERT_AS_LAST
16:27handmade_debug.h: Add ViewingFrameOrdinal to debug_state
16:27handmade_debug.h: Add ViewingFrameOrdinal to debug_state
16:27handmade_debug.h: Add ViewingFrameOrdinal to debug_state
17:48handmade.cpp: Add a DEBUG_DATA_BLOCK "Debug Control" for a FrameSlider
17:48handmade.cpp: Add a DEBUG_DATA_BLOCK "Debug Control" for a FrameSlider
17:48handmade.cpp: Add a DEBUG_DATA_BLOCK "Debug Control" for a FrameSlider
19:04handmade_debug.cpp: Implement DebugType_FrameSlider
19:04handmade_debug.cpp: Implement DebugType_FrameSlider
19:04handmade_debug.cpp: Implement DebugType_FrameSlider
22:04handmade_debug.cpp: Introduce DrawFrameSlider
22:04handmade_debug.cpp: Introduce DrawFrameSlider
22:04handmade_debug.cpp: Introduce DrawFrameSlider
26:11Run the game and see that we did totally mess it up
26:11Run the game and see that we did totally mess it up
26:11Run the game and see that we did totally mess it up
26:20"Nice work, Muratori. You're off the team"β
26:20"Nice work, Muratori. You're off the team"β
26:20"Nice work, Muratori. You're off the team"β
26:25handmade_debug.cpp: Iterate through the for loop in DrawFrameSlider
26:25handmade_debug.cpp: Iterate through the for loop in DrawFrameSlider
26:25handmade_debug.cpp: Iterate through the for loop in DrawFrameSlider
27:10Song: 'Too Many Frames' by Casey Muratori
27:10Song: 'Too Many Frames' by Casey Muratori
27:10Song: 'Too Many Frames' by Casey Muratori
28:21handmade_debug.cpp: Make ViewingFrame yellow, the color of urineγ
28:21handmade_debug.cpp: Make ViewingFrame yellow, the color of urineγ
28:21handmade_debug.cpp: Make ViewingFrame yellow, the color of urineγ
30:48Run the game, view the FrameSlider and explain what will happen when we run out of per-frame arena space
30:48Run the game, view the FrameSlider and explain what will happen when we run out of per-frame arena space
30:48Run the game, view the FrameSlider and explain what will happen when we run out of per-frame arena space
32:49handmade_debug.cpp: Switch to a smaller SubArena for the debug information
32:49handmade_debug.cpp: Switch to a smaller SubArena for the debug information
32:49handmade_debug.cpp: Switch to a smaller SubArena for the debug information
33:21Run the game and hit an assertion when we have insufficient memory to store the debug data
33:21Run the game and hit an assertion when we have insufficient memory to store the debug data
33:21Run the game and hit an assertion when we have insufficient memory to store the debug data
35:32handmade_debug.cpp: ZeroStruct the Frame
35:32handmade_debug.cpp: ZeroStruct the Frame
35:32handmade_debug.cpp: ZeroStruct the Frame
35:54Run the game and watch the FrameSlider as we run out of space to store the debug data
35:54Run the game and watch the FrameSlider as we run out of space to store the debug data
35:54Run the game and watch the FrameSlider as we run out of space to store the debug data
38:02handmade_debug.cpp: Provide the ability to interact with the FrameSlider
38:02handmade_debug.cpp: Provide the ability to interact with the FrameSlider
38:02handmade_debug.cpp: Provide the ability to interact with the FrameSlider
42:03Run the game and crash upon interacting with the slider
42:03Run the game and crash upon interacting with the slider
42:03Run the game and crash upon interacting with the slider
42:20"Who wrote this ridiculous code?"δ
42:20"Who wrote this ridiculous code?"δ
42:20"Who wrote this ridiculous code?"δ
42:30handmade_debug.cpp: Put the interaction code in the correct place
42:30handmade_debug.cpp: Put the interaction code in the correct place
42:30handmade_debug.cpp: Put the interaction code in the correct place
43:01Run the game and interact with the slider
43:01Run the game and interact with the slider
43:01Run the game and interact with the slider
43:38handmade_debug.cpp: Replace MostRecentFrameOrdinal with ViewingFrameOrdinal
43:38handmade_debug.cpp: Replace MostRecentFrameOrdinal with ViewingFrameOrdinal
43:38handmade_debug.cpp: Replace MostRecentFrameOrdinal with ViewingFrameOrdinal
45:59Run the game and find that we can pick the ViewingFrame with the slider, but that the profiler expands weirdly
45:59Run the game and find that we can pick the ViewingFrame with the slider, but that the profiler expands weirdly
45:59Run the game and find that we can pick the ViewingFrame with the slider, but that the profiler expands weirdly
50:14Run the game and investigate why ToggleExpansion is happening
50:14Run the game and investigate why ToggleExpansion is happening
50:14Run the game and investigate why ToggleExpansion is happening
53:32handmade_debug.cpp: Conditionally set MostRecentFrameOrdinal if we're paused
53:32handmade_debug.cpp: Conditionally set MostRecentFrameOrdinal if we're paused
53:32handmade_debug.cpp: Conditionally set MostRecentFrameOrdinal if we're paused
54:10Run the game and admire the profiler
54:10Run the game and admire the profiler
54:10Run the game and admire the profiler
55:13handmade_debug.cpp: Implement the ability to pause the profiler
55:13handmade_debug.cpp: Implement the ability to pause the profiler
55:13handmade_debug.cpp: Implement the ability to pause the profiler
57:30Run the game and try pausing the profiler
57:30Run the game and try pausing the profiler
57:30Run the game and try pausing the profiler
58:21Demonstrate the fact that we track all of the data
58:21Demonstrate the fact that we track all of the data
58:21Demonstrate the fact that we track all of the data
1:00:00Q&A
🗩
1:00:00Q&A
🗩
1:00:00Q&A
🗩
1:07:54Wrap it up and glimpse into the future
🗩
1:07:54Wrap it up and glimpse into the future
🗩
1:07:54Wrap it up and glimpse into the future
🗩
⏬
Next: 'Adding Buttons to the Profiler'
⏬