Adding a Debug Frame Slider
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next timestamp
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu and Index Controls

a
w
s
d
h j k l


Esc Close menu / unfocus timestamp

Quotes and References Menus and Index

Enter Jump to timestamp

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
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:00:31fwe4 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:00:31fwe4 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:00:31fwe4 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:09mongorians 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:03:09mongorians 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:03:09mongorians 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:04glhrmfrts Originally by Scykoh: "Is the engine portion expected to be the largest chunk of the Handmade Hero project?"
🗪
1:05:04glhrmfrts Originally by Scykoh: "Is the engine portion expected to be the largest chunk of the Handmade Hero project?"
🗪
1:05:04glhrmfrts Originally by Scykoh: "Is the engine portion expected to be the largest chunk of the Handmade Hero project?"
🗪
1:06:55culver_fly Can you please explain again the problem with texture loading? Why does it not work occasionally?
🗪
1:06:55culver_fly Can you please explain again the problem with texture loading? Why does it not work occasionally?
🗪
1:06:55culver_fly Can you please explain again the problem with texture loading? Why does it not work occasionally?
🗪
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
🗩