Handmade Hero»Episode Guide
Cleaning Up Debug Globals
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
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 Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

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:14The only reason we are writing a user interface is to support our debug system
0:14The only reason we are writing a user interface is to support our debug system
0:14The only reason we are writing a user interface is to support our debug system
1:08Since we are the only users of the UI, we don't care if it's not intuitive, as long as it provides efficient interaction at a low implementation cost
1:08Since we are the only users of the UI, we don't care if it's not intuitive, as long as it provides efficient interaction at a low implementation cost
1:08Since we are the only users of the UI, we don't care if it's not intuitive, as long as it provides efficient interaction at a low implementation cost
3:08Recap
3:08Recap
3:08Recap
3:22Our approach to UI code
3:22Our approach to UI code
3:22Our approach to UI code
4:45Initial plan for today: Turning off the profiling visualization
4:45Initial plan for today: Turning off the profiling visualization
4:45Initial plan for today: Turning off the profiling visualization
7:09The debug UI can be a nice complement live code editing
7:09The debug UI can be a nice complement live code editing
7:09The debug UI can be a nice complement live code editing
9:19Change of plans: We'll get rid of the global debug variables
9:19Change of plans: We'll get rid of the global debug variables
9:19Change of plans: We'll get rid of the global debug variables
10:30Moving global variables inside the debug state
10:30Moving global variables inside the debug state
10:30Moving global variables inside the debug state
10:50Making sure all routines have access to the debug state
10:50Making sure all routines have access to the debug state
10:50Making sure all routines have access to the debug state
12:22It will be better to access the debug state through the DebugGlobalMemory. Implementing DEBUGGetState
12:22It will be better to access the debug state through the DebugGlobalMemory. Implementing DEBUGGetState
12:22It will be better to access the debug state through the DebugGlobalMemory. Implementing DEBUGGetState
17:15Testing. We got rid of those global variables
17:15Testing. We got rid of those global variables
17:15Testing. We got rid of those global variables
18:19The memory for the DEBUGRenderGroup comes from the transient arena. It should come from the debug arena
18:19The memory for the DEBUGRenderGroup comes from the transient arena. It should come from the debug arena
18:19The memory for the DEBUGRenderGroup comes from the transient arena. It should come from the debug arena
19:05Performing the DEBUGRenderGroup allocation inside DEBUGReset
19:05Performing the DEBUGRenderGroup allocation inside DEBUGReset
19:05Performing the DEBUGRenderGroup allocation inside DEBUGReset
20:06Access to the debug state should imply its initialization
20:06Access to the debug state should imply its initialization
20:06Access to the debug state should imply its initialization
22:20CollationArena will be a subarena of DebugArena
22:20CollationArena will be a subarena of DebugArena
22:20CollationArena will be a subarena of DebugArena
23:50Initializing the debug RenderGroup
23:50Initializing the debug RenderGroup
23:50Initializing the debug RenderGroup
24:32DEBUGReset will call BeginRender
24:32DEBUGReset will call BeginRender
24:32DEBUGReset will call BeginRender
25:42DEBUGOverlay will call EndRender
25:42DEBUGOverlay will call EndRender
25:42DEBUGOverlay will call EndRender
26:50The debug system shouldn't rely on the asset system; debug assets should be baked into the binary
26:50The debug system shouldn't rely on the asset system; debug assets should be baked into the binary
26:50The debug system shouldn't rely on the asset system; debug assets should be baked into the binary
32:45If we want the debug system to have access to the asset system, we need to make sure that the asset system is initialized first
32:45If we want the debug system to have access to the asset system, we need to make sure that the asset system is initialized first
32:45If we want the debug system to have access to the asset system, we need to make sure that the asset system is initialized first
33:58Implementing DEBUGStart and DEBUGEnd
33:58Implementing DEBUGStart and DEBUGEnd
33:58Implementing DEBUGStart and DEBUGEnd
39:09Testing. Live code editing and debug services work together now
39:09Testing. Live code editing and debug services work together now
39:09Testing. Live code editing and debug services work together now
40:10Resizing the profile view by changing its orthographic projection
40:10Resizing the profile view by changing its orthographic projection
40:10Resizing the profile view by changing its orthographic projection
44:43The mouse pointer position should also be transformed
44:43The mouse pointer position should also be transformed
44:43The mouse pointer position should also be transformed
45:27Controlling the placement of the profile rectangle
45:27Controlling the placement of the profile rectangle
45:27Controlling the placement of the profile rectangle
49:57Adjusting lane heights
49:57Adjusting lane heights
49:57Adjusting lane heights
53:37Displaying the profile rectangle so that we can debug the code that scales and positions it
53:37Displaying the profile rectangle so that we can debug the code that scales and positions it
53:37Displaying the profile rectangle so that we can debug the code that scales and positions it
56:41Fixing lane heights
56:41Fixing lane heights
56:41Fixing lane heights
1:01:00Q&A
🗩
1:01:00Q&A
🗩
1:01:00Q&A
🗩
1:01:40Miblo I appreciate that there are more robust ways of implementing such things, but would it be practical to use the debug data to drive some of the game's visual effects, e.g. fire or, more likely, some otherworldly magical entity or the display on an in-game computer? Maybe it could be a sort of Easter Egg for those of us who know how the game's made
🗪
1:01:40Miblo I appreciate that there are more robust ways of implementing such things, but would it be practical to use the debug data to drive some of the game's visual effects, e.g. fire or, more likely, some otherworldly magical entity or the display on an in-game computer? Maybe it could be a sort of Easter Egg for those of us who know how the game's made
🗪
1:01:40Miblo I appreciate that there are more robust ways of implementing such things, but would it be practical to use the debug data to drive some of the game's visual effects, e.g. fire or, more likely, some otherworldly magical entity or the display on an in-game computer? Maybe it could be a sort of Easter Egg for those of us who know how the game's made
🗪
1:02:45elxenoaizd There are magenta spikes in the debug graph that happens so fast we don't have time to click on them. How do we plan to catch those? Having the ability to step-over frame-by-frame would be useful, methinks. Another idea is to have the debug text left off at the last rect position we hovered at
🗪
1:02:45elxenoaizd There are magenta spikes in the debug graph that happens so fast we don't have time to click on them. How do we plan to catch those? Having the ability to step-over frame-by-frame would be useful, methinks. Another idea is to have the debug text left off at the last rect position we hovered at
🗪
1:02:45elxenoaizd There are magenta spikes in the debug graph that happens so fast we don't have time to click on them. How do we plan to catch those? Having the ability to step-over frame-by-frame would be useful, methinks. Another idea is to have the debug text left off at the last rect position we hovered at
🗪
1:04:38Wrap it up
🗩
1:04:38Wrap it up
🗩
1:04:38Wrap it up
🗩