Handmade Hero»Episode Guide
Drawing Multi-frame Profile Graphs
?
?

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)
1:04Recap and set the stage for the day
1:04Recap and set the stage for the day
1:04Recap and set the stage for the day
3:29Apologise to folks not on the 4coder bandwagon yetα
3:29Apologise to folks not on the 4coder bandwagon yetα
3:29Apologise to folks not on the 4coder bandwagon yetα
3:37handmade_debug.cpp: Consider how to unify Element creation
3:37handmade_debug.cpp: Consider how to unify Element creation
3:37handmade_debug.cpp: Consider how to unify Element creation
10:26handmade_debug.h: Add RootProfileElement to debug_state and pass that down the profiler system
10:26handmade_debug.h: Add RootProfileElement to debug_state and pass that down the profiler system
10:26handmade_debug.h: Add RootProfileElement to debug_state and pass that down the profiler system
14:38Run the game and make sure that it works
14:38Run the game and make sure that it works
14:38Run the game and make sure that it works
16:26Debugger: Step into RootProfile and erroneously follow the ParentGroup path
16:26Debugger: Step into RootProfile and erroneously follow the ParentGroup path
16:26Debugger: Step into RootProfile and erroneously follow the ParentGroup path
17:20"Arrrgggghhhhhh"β
17:20"Arrrgggghhhhhh"β
17:20"Arrrgggghhhhhh"β
18:12Make this a very quiet, dignified editγ
18:12Make this a very quiet, dignified editγ
18:12Make this a very quiet, dignified editγ
18:24handmade_debug.cpp: Do AddElementToGroup in the CreateHierarchy path
18:24handmade_debug.cpp: Do AddElementToGroup in the CreateHierarchy path
18:24handmade_debug.cpp: Do AddElementToGroup in the CreateHierarchy path
18:47Run the game and see that we're in better shape
18:47Run the game and see that we're in better shape
18:47Run the game and see that we're in better shape
19:21handmade_debug.cpp: Simplify the ViewingElement code using RootProfileElement
19:21handmade_debug.cpp: Simplify the ViewingElement code using RootProfileElement
19:21handmade_debug.cpp: Simplify the ViewingElement code using RootProfileElement
20:42Opine the low resolutionδ
20:42Opine the low resolutionδ
20:42Opine the low resolutionδ
21:03handmade_debug.cpp: Simplify DrawFrameBars
21:03handmade_debug.cpp: Simplify DrawFrameBars
21:03handmade_debug.cpp: Simplify DrawFrameBars
26:11Blackboard: How the events are stored
26:11Blackboard: How the events are stored
26:11Blackboard: How the events are stored
28:33handmade_debug.h: Consider doing StoreEvent directly into the Element, without adding it to a Parent in CollateDebugRecords
28:33handmade_debug.h: Consider doing StoreEvent directly into the Element, without adding it to a Parent in CollateDebugRecords
28:33handmade_debug.h: Consider doing StoreEvent directly into the Element, without adding it to a Parent in CollateDebugRecords
30:31Blackboard: Why this might not work
30:31Blackboard: Why this might not work
30:31Blackboard: Why this might not work
32:12handmade_debug.cpp: Use debug_profile_node in DrawFrameBars
32:12handmade_debug.cpp: Use debug_profile_node in DrawFrameBars
32:12handmade_debug.cpp: Use debug_profile_node in DrawFrameBars
34:22Run the game and stress test the profiler
34:22Run the game and stress test the profiler
34:22Run the game and stress test the profiler
39:27handmade_debug.cpp: Switch to DrawProfileIn and make it take a debug_element RootElement
39:27handmade_debug.cpp: Switch to DrawProfileIn and make it take a debug_element RootElement
39:27handmade_debug.cpp: Switch to DrawProfileIn and make it take a debug_element RootElement
41:33Run the game and view the profiler with the old display
41:33Run the game and view the profiler with the old display
41:33Run the game and view the profiler with the old display
42:18Blackboard: Gracefully handling multiple events on a single frame
42:18Blackboard: Gracefully handling multiple events on a single frame
42:18Blackboard: Gracefully handling multiple events on a single frame
45:20handmade_debug.h: Remove AggregateCount from debug_profile_node and pack it a little differently
45:20handmade_debug.h: Remove AggregateCount from debug_profile_node and pack it a little differently
45:20handmade_debug.h: Remove AggregateCount from debug_profile_node and pack it a little differently
48:12handmade_debug.h: Remove TotalClocks from debug_element_frame
48:12handmade_debug.h: Remove TotalClocks from debug_element_frame
48:12handmade_debug.h: Remove TotalClocks from debug_element_frame
50:12handmade_debug.cpp: Introduce GetTotalClocks in order to compute TotalClock on demand
50:12handmade_debug.cpp: Introduce GetTotalClocks in order to compute TotalClock on demand
50:12handmade_debug.cpp: Introduce GetTotalClocks in order to compute TotalClock on demand
53:53Run the game and make sure the profiler still works
53:53Run the game and make sure the profiler still works
53:53Run the game and make sure the profiler still works
54:04handmade_debug.cpp: Space the EventRects based on the TotalClock
54:04handmade_debug.cpp: Space the EventRects based on the TotalClock
54:04handmade_debug.cpp: Space the EventRects based on the TotalClock
58:38Run the game and view our beautiful profiler
58:38Run the game and view our beautiful profiler
58:38Run the game and view our beautiful profiler
59:33Q&A
🗩
59:33Q&A
🗩
59:33Q&A
🗩
1:00:02insobot Relationship status it's complicated for the movement to be it's own main function inside?
🗪
1:00:02insobot Relationship status it's complicated for the movement to be it's own main function inside?
🗪
1:00:02insobot Relationship status it's complicated for the movement to be it's own main function inside?
🗪
1:01:30cvaucher Reasons performance was so bad with the new debug view? Isn't this still way fewer tris than a typical 3D game? Is the framerate reasonable if you switch to solid rectangles vs outlines?
🗪
1:01:30cvaucher Reasons performance was so bad with the new debug view? Isn't this still way fewer tris than a typical 3D game? Is the framerate reasonable if you switch to solid rectangles vs outlines?
🗪
1:01:30cvaucher Reasons performance was so bad with the new debug view? Isn't this still way fewer tris than a typical 3D game? Is the framerate reasonable if you switch to solid rectangles vs outlines?
🗪
1:03:56boogie0815 Will you make the UI immediate mode?
🗪
1:03:56boogie0815 Will you make the UI immediate mode?
🗪
1:03:56boogie0815 Will you make the UI immediate mode?
🗪
1:04:04dudeinbasement1 Will the debug graphing update even if the game is paused?
🗪
1:04:04dudeinbasement1 Will the debug graphing update even if the game is paused?
🗪
1:04:04dudeinbasement1 Will the debug graphing update even if the game is paused?
🗪
1:04:28Longboolean Right now the outlines on the profiler overlap each other. Makes it a little harder to make out the colors (or the change from one to the other). The obvious solution would be to draw them with a slight offset from the last each time, but are there any problems with that once the rectangles get really small?
🗪
1:04:28Longboolean Right now the outlines on the profiler overlap each other. Makes it a little harder to make out the colors (or the change from one to the other). The obvious solution would be to draw them with a slight offset from the last each time, but are there any problems with that once the rectangles get really small?
🗪
1:04:28Longboolean Right now the outlines on the profiler overlap each other. Makes it a little harder to make out the colors (or the change from one to the other). The obvious solution would be to draw them with a slight offset from the last each time, but are there any problems with that once the rectangles get really small?
🗪
1:05:07Mojobojo Is our current timestep code framerate independent? Will the game's simulation run the same at any framerate?
🗪
1:05:07Mojobojo Is our current timestep code framerate independent? Will the game's simulation run the same at any framerate?
🗪
1:05:07Mojobojo Is our current timestep code framerate independent? Will the game's simulation run the same at any framerate?
🗪
1:06:54zennmystic Are we going to do the batch way then?
🗪
1:06:54zennmystic Are we going to do the batch way then?
🗪
1:06:54zennmystic Are we going to do the batch way then?
🗪
1:07:23dudeinbasement1 (Off-topic) Have you ever defined structures inside of functions?
🗪
1:07:23dudeinbasement1 (Off-topic) Have you ever defined structures inside of functions?
🗪
1:07:23dudeinbasement1 (Off-topic) Have you ever defined structures inside of functions?
🗪
1:09:17sixdegreesofgaming Is there any advantage to making physics dependent on framerate other than convenience?
🗪
1:09:17sixdegreesofgaming Is there any advantage to making physics dependent on framerate other than convenience?
🗪
1:09:17sixdegreesofgaming Is there any advantage to making physics dependent on framerate other than convenience?
🗪
1:11:18Wrap it up
🗩
1:11:18Wrap it up
🗩
1:11:18Wrap it up
🗩
1:12:22Promote 4coder
🗩
1:12:22Promote 4coder
🗩
1:12:22Promote 4coder
🗩