Handmade Hero»Episode Guide
Integrating Debug UI into Game Code
?
?

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:10"We will be in sync..."α
1:10"We will be in sync..."α
1:10"We will be in sync..."α
1:34Recap and set the stage for the day
1:34Recap and set the stage for the day
1:34Recap and set the stage for the day
3:16Run the game and show that the picking system is kind of random and janky
3:16Run the game and show that the picking system is kind of random and janky
3:16Run the game and show that the picking system is kind of random and janky
5:58handmade.cpp: Look at the current picking system and consider what we'd like to do
5:58handmade.cpp: Look at the current picking system and consider what we'd like to do
5:58handmade.cpp: Look at the current picking system and consider what we'd like to do
9:14handmade.cpp: Decouple the hit testing and the output
9:14handmade.cpp: Decouple the hit testing and the output
9:14handmade.cpp: Decouple the hit testing and the output
13:41handmade.cpp: Use debug_id in order to unify the system
13:41handmade.cpp: Use debug_id in order to unify the system
13:41handmade.cpp: Use debug_id in order to unify the system
16:14On the uses of pointers as a location in memory and a name
16:14On the uses of pointers as a location in memory and a name
16:14On the uses of pointers as a location in memory and a name
20:24handmade.cpp: Make DEBUG_HIT take LocalMouseP.z
20:24handmade.cpp: Make DEBUG_HIT take LocalMouseP.z
20:24handmade.cpp: Make DEBUG_HIT take LocalMouseP.z
23:34handmade_debug_interface.h: #define the necessary values and implement them
23:34handmade_debug_interface.h: #define the necessary values and implement them
23:34handmade_debug_interface.h: #define the necessary values and implement them
29:31handmade.cpp: Introduce DEBUG_REQUESTED
29:31handmade.cpp: Introduce DEBUG_REQUESTED
29:31handmade.cpp: Introduce DEBUG_REQUESTED
30:50handmade_debug_interface.h: Give debug_event the concept of a DebugID
30:50handmade_debug_interface.h: Give debug_event the concept of a DebugID
30:50handmade_debug_interface.h: Give debug_event the concept of a DebugID
31:51handmade_debug.cpp: Introduce DEBUG_HIT, DEBUG_HIGHLIGHTED and DEBUG_REQUESTED
31:51handmade_debug.cpp: Introduce DEBUG_HIT, DEBUG_HIGHLIGHTED and DEBUG_REQUESTED
31:51handmade_debug.cpp: Introduce DEBUG_HIT, DEBUG_HIGHLIGHTED and DEBUG_REQUESTED
33:12handmade_debug.cpp: Check for the existence of Memory in DEBUGGetState
33:12handmade_debug.cpp: Check for the existence of Memory in DEBUGGetState
33:12handmade_debug.cpp: Check for the existence of Memory in DEBUGGetState
35:26Run the game and hit an assertion
35:26Run the game and hit an assertion
35:26Run the game and hit an assertion
37:34handmade_debug.cpp: Replace the Assert in DEBUGGetState with a check for DebugState
37:34handmade_debug.cpp: Replace the Assert in DEBUGGetState with a check for DebugState
37:34handmade_debug.cpp: Replace the Assert in DEBUGGetState with a check for DebugState
38:10Run the game and find that the debug system highlights everyone
38:10Run the game and find that the debug system highlights everyone
38:10Run the game and find that the debug system highlights everyone
38:29handmade_debug.h: Add DebugInteraction_Select to debug_interaction_type
38:29handmade_debug.h: Add DebugInteraction_Select to debug_interaction_type
38:29handmade_debug.h: Add DebugInteraction_Select to debug_interaction_type
39:45handmade_debug.cpp: Introduce DebugIDInteraction based on VarLinkInteraction which takes the Type and ID
39:45handmade_debug.cpp: Introduce DebugIDInteraction based on VarLinkInteraction which takes the Type and ID
39:45handmade_debug.cpp: Introduce DebugIDInteraction based on VarLinkInteraction which takes the Type and ID
41:47handmade_debug.h: Add debug_id SelectedID to debug_state
41:47handmade_debug.h: Add debug_id SelectedID to debug_state
41:47handmade_debug.h: Add debug_id SelectedID to debug_state
42:03handmade_debug.cpp: Write DEBUG_HIGHLIGHTED and DEBUG_REQUESTED
42:03handmade_debug.cpp: Write DEBUG_HIGHLIGHTED and DEBUG_REQUESTED
42:03handmade_debug.cpp: Write DEBUG_HIGHLIGHTED and DEBUG_REQUESTED
43:00handmade_debug.cpp: Introduce IsSelected
43:00handmade_debug.cpp: Introduce IsSelected
43:00handmade_debug.cpp: Introduce IsSelected
44:56Run the game see that it doesn't look very exciting
44:56Run the game see that it doesn't look very exciting
44:56Run the game see that it doesn't look very exciting
45:09handmade_debug.cpp: Clear the NextHotInteraction when we end
45:09handmade_debug.cpp: Clear the NextHotInteraction when we end
45:09handmade_debug.cpp: Clear the NextHotInteraction when we end
45:47Run the game and see that we're in much better shape
45:47Run the game and see that we're in much better shape
45:47Run the game and see that we're in much better shape
47:14Q&A
🗩
47:14Q&A
🗩
47:14Q&A
🗩
47:40ChronalDragon You technically have 15 more minutes since we started late
🗪
47:40ChronalDragon You technically have 15 more minutes since we started late
🗪
47:40ChronalDragon You technically have 15 more minutes since we started late
🗪
48:25Use the 10 remaining minutes to nefarious endsβ
48:25Use the 10 remaining minutes to nefarious endsβ
48:25Use the 10 remaining minutes to nefarious endsβ
48:37handmade_debug_interface.h: Make DEBUG_HIGHLIGHTED take *Color
48:37handmade_debug_interface.h: Make DEBUG_HIGHLIGHTED take *Color
48:37handmade_debug_interface.h: Make DEBUG_HIGHLIGHTED take *Color
48:47On compiling something out and using ... as the parameters
48:47On compiling something out and using ... as the parameters
48:47On compiling something out and using ... as the parameters
49:17handmade_debug.cpp: Highlight entities in different colours
49:17handmade_debug.cpp: Highlight entities in different colours
49:17handmade_debug.cpp: Highlight entities in different colours
51:33Run the game and see that the picked entity persists
51:33Run the game and see that the picked entity persists
51:33Run the game and see that the picked entity persists
52:08handmade_debug.cpp: Make DEBUG_REQUESTED work on both the selected and hovered entities
52:08handmade_debug.cpp: Make DEBUG_REQUESTED work on both the selected and hovered entities
52:08handmade_debug.cpp: Make DEBUG_REQUESTED work on both the selected and hovered entities
53:00handmade_debug.h: Add SelectedIDCount to debug_state
53:00handmade_debug.h: Add SelectedIDCount to debug_state
53:00handmade_debug.h: Add SelectedIDCount to debug_state
53:32handmade_debug.cpp: Make IsSelected loop over all of the SelectedIDCounts
53:32handmade_debug.cpp: Make IsSelected loop over all of the SelectedIDCounts
53:32handmade_debug.cpp: Make IsSelected loop over all of the SelectedIDCounts
54:11handmade_debug.cpp: Introduce ClearSelection and AddToSelection
54:11handmade_debug.cpp: Introduce ClearSelection and AddToSelection
54:11handmade_debug.cpp: Introduce ClearSelection and AddToSelection
55:59handmade_debug.cpp: Make DebugInteraction_Select handle multiple selections
55:59handmade_debug.cpp: Make DebugInteraction_Select handle multiple selections
55:59handmade_debug.cpp: Make DebugInteraction_Select handle multiple selections
57:40Run the game and select as many things as we want
57:40Run the game and select as many things as we want
57:40Run the game and select as many things as we want
58:20Q&A Take #2
58:20Q&A Take #2
58:20Q&A Take #2
59:05insobot <3. *handmade?
🗪
59:05insobot <3. *handmade?
🗪
59:05insobot <3. *handmade?
🗪
59:24desuused You can emulate expression blocks with lambdas if you don't mind the craziness of C++11
🗪
59:24desuused You can emulate expression blocks with lambdas if you don't mind the craziness of C++11
🗪
59:24desuused You can emulate expression blocks with lambdas if you don't mind the craziness of C++11
🗪
59:44ChronalDragon insobot checks for your !qa thing I believe, yeah
🗪
59:44ChronalDragon insobot checks for your !qa thing I believe, yeah
🗪
59:44ChronalDragon insobot checks for your !qa thing I believe, yeah
🗪
1:00:05elxenoaizd Would you think it's better to start at a junior position at a company and then working my way up? Or try to apply for a higher position immediately?
🗪
1:00:05elxenoaizd Would you think it's better to start at a junior position at a company and then working my way up? Or try to apply for a higher position immediately?
🗪
1:00:05elxenoaizd Would you think it's better to start at a junior position at a company and then working my way up? Or try to apply for a higher position immediately?
🗪
1:00:23Mr4thDimention About universal IDs, what if some things want to be identified in the same system, but don't have fixed storage location or conflicts in some other way with the universal uniqueness?
🗪
1:00:23Mr4thDimention About universal IDs, what if some things want to be identified in the same system, but don't have fixed storage location or conflicts in some other way with the universal uniqueness?
🗪
1:00:23Mr4thDimention About universal IDs, what if some things want to be identified in the same system, but don't have fixed storage location or conflicts in some other way with the universal uniqueness?
🗪
1:01:50adamantoise17 Do you know yet if the HandMadeCon talks are going to be streamed and / or recorded?
🗪
1:01:50adamantoise17 Do you know yet if the HandMadeCon talks are going to be streamed and / or recorded?
🗪
1:01:50adamantoise17 Do you know yet if the HandMadeCon talks are going to be streamed and / or recorded?
🗪
1:02:19flamedog Bots on bots... Damn, imagine all the off-by-one errors
🗪
1:02:19flamedog Bots on bots... Damn, imagine all the off-by-one errors
🗪
1:02:19flamedog Bots on bots... Damn, imagine all the off-by-one errors
🗪
1:02:27cubercaleb Yeah, but wouldn't bots teaching bots how to program be the beginning of the singularity?
🗪
1:02:27cubercaleb Yeah, but wouldn't bots teaching bots how to program be the beginning of the singularity?
🗪
1:02:27cubercaleb Yeah, but wouldn't bots teaching bots how to program be the beginning of the singularity?
🗪
1:02:36LeagueofWoWScape You have recommended The C Programming Language book after watching your introductory series. Are there any other books you would suggest such as proper programming practices or reference books?
🗪
1:02:36LeagueofWoWScape You have recommended The C Programming Language book after watching your introductory series. Are there any other books you would suggest such as proper programming practices or reference books?
🗪
1:02:36LeagueofWoWScape You have recommended The C Programming Language book after watching your introductory series. Are there any other books you would suggest such as proper programming practices or reference books?
🗪
1:03:05elxenoaizd You mentioned that the pointer could be used as a key and the thing it's pointing to is the value. So do you mean something like this: PairOf X*, X?
🗪
1:03:05elxenoaizd You mentioned that the pointer could be used as a key and the thing it's pointing to is the value. So do you mean something like this: PairOf X*, X?
🗪
1:03:05elxenoaizd You mentioned that the pointer could be used as a key and the thing it's pointing to is the value. So do you mean something like this: PairOf X*, X?
🗪
1:03:25VeezyTreezy What else are you working on outside this project?
🗪
1:03:25VeezyTreezy What else are you working on outside this project?
🗪
1:03:25VeezyTreezy What else are you working on outside this project?
🗪
1:04:00bbkane_twitch If you're just starting to watch these videos and you don't have time to watch them all, which ones are most important?
🗪
1:04:00bbkane_twitch If you're just starting to watch these videos and you don't have time to watch them all, which ones are most important?
🗪
1:04:00bbkane_twitch If you're just starting to watch these videos and you don't have time to watch them all, which ones are most important?
🗪
1:05:09UnrelentingBerts How do you pick apart code of other programs / websites, etc.? Sorry for the newbish spam, I just want to get started in the morning
🗪
1:05:09UnrelentingBerts How do you pick apart code of other programs / websites, etc.? Sorry for the newbish spam, I just want to get started in the morning
🗪
1:05:09UnrelentingBerts How do you pick apart code of other programs / websites, etc.? Sorry for the newbish spam, I just want to get started in the morning
🗪
1:06:33elxenoaizd Trying to work with others and reading their code, do you try to understand everything they wrote or just understand enough to solve your problems?
🗪
1:06:33elxenoaizd Trying to work with others and reading their code, do you try to understand everything they wrote or just understand enough to solve your problems?
🗪
1:06:33elxenoaizd Trying to work with others and reading their code, do you try to understand everything they wrote or just understand enough to solve your problems?
🗪
1:08:00VeezyTreezy Is there a programming pattern you see all the time that you can't stand or hate?
🗪
1:08:00VeezyTreezy Is there a programming pattern you see all the time that you can't stand or hate?
🗪
1:08:00VeezyTreezy Is there a programming pattern you see all the time that you can't stand or hate?
🗪
1:09:42elxenoaizd How do you deal with programming colleagues that use OOP, getters / setters, etc.? Do you try to give them advice or stay away from them if possible?
🗪
1:09:42elxenoaizd How do you deal with programming colleagues that use OOP, getters / setters, etc.? Do you try to give them advice or stay away from them if possible?
🗪
1:09:42elxenoaizd How do you deal with programming colleagues that use OOP, getters / setters, etc.? Do you try to give them advice or stay away from them if possible?
🗪
1:10:06Ashanmaril I only know C++ really, but what's the alternative to getters / setters?
🗪
1:10:06Ashanmaril I only know C++ really, but what's the alternative to getters / setters?
🗪
1:10:06Ashanmaril I only know C++ really, but what's the alternative to getters / setters?
🗪
1:10:20Story: C++ getters / settersγ
1:10:20Story: C++ getters / settersγ
1:10:20Story: C++ getters / settersγ
1:15:10insofaras What about a getter than does some calculation on private variables? Like a getDay function on a class that stores an integer representation of time / date?
🗪
1:15:10insofaras What about a getter than does some calculation on private variables? Like a getDay function on a class that stores an integer representation of time / date?
🗪
1:15:10insofaras What about a getter than does some calculation on private variables? Like a getDay function on a class that stores an integer representation of time / date?
🗪
1:15:25Manicthenobody Jon should do that for JAI
🗪
1:15:25Manicthenobody Jon should do that for JAI
🗪
1:15:25Manicthenobody Jon should do that for JAI
🗪
1:15:37ezysigh C# does what you describe
🗪
1:15:37ezysigh C# does what you describe
🗪
1:15:37ezysigh C# does what you describe
🗪
1:16:12VeezyTreezy The getters and setters are less performant too, right?
🗪
1:16:12VeezyTreezy The getters and setters are less performant too, right?
🗪
1:16:12VeezyTreezy The getters and setters are less performant too, right?
🗪
1:16:21cubercaleb I know you mostly work on code in smaller groups of people, although what is it like to program in teams and how does the work get split?
🗪
1:16:21cubercaleb I know you mostly work on code in smaller groups of people, although what is it like to program in teams and how does the work get split?
🗪
1:16:21cubercaleb I know you mostly work on code in smaller groups of people, although what is it like to program in teams and how does the work get split?
🗪
1:17:10TheSizik What about the downside that you don't know whether a value you're accessing does a function call or not?
🗪
1:17:10TheSizik What about the downside that you don't know whether a value you're accessing does a function call or not?
🗪
1:17:10TheSizik What about the downside that you don't know whether a value you're accessing does a function call or not?
🗪
1:17:55Wrap this up
🗩
1:17:55Wrap this up
🗩
1:17:55Wrap this up
🗩
1:18:26Announcement: The speaker list for HandmadeCon 2015 is up1
🗩
1:18:26Announcement: The speaker list for HandmadeCon 2015 is up1
🗩
1:18:26Announcement: The speaker list for HandmadeCon 2015 is up1
🗩