[video output=day201 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Isolating the Debug Code" vod_platform=youtube id=Nb9ObiFvw3I annotator=Miblo] [1:47][Recap and hit a first-chance exception] [2:38][Investigate this exception] [6:02][win32_handmade.cpp: Move DebugCollation above FramerateWait and pass NewInput and &Buffer to DEBUGFrameEnd] [7:30][handmade.cpp: Remove DEBUGStart and DEBUGEnd] [7:54][handmade_debug.cpp: Call DEBUGStart and DEBUGEnd in DEBUGGameFrameEnd] [11:06][handmade.cpp: Introduce DEBUGGetGameAssets to enable the debug system to get the TranState->Assets out] [12:37][handmade_platform.h: Give DEBUG_GAME_FRAME_END the same call structure as GAME_UPDATE_AND_RENDER] [13:23][handmade_debug.cpp: Create a DrawBuffer for the debug system] [15:00][Debugger: Step into DEBUGGetState] [15:32][handmade_debug.cpp: Paste DEBUGGetState into DEBUGGameFrameEnd] [16:50][Run the game and find that we're in better shape] [18:31][handmade.debug.h: Consider getting rid of this header file entirely] [19:52][handmade.cpp: Add conditional on HANDMADE_INTERNAL to enable us to toggle the debug system] [21:12][build.bat: Turn off HANDMADE_INTERNAL] [21:27][handmade_platform.h and win32_handmade.cpp: Add conditionals on HANDMADE_INTERNAL] [22:47][handmade_platform: Remove HANDMADE_PROFILE in favour of HANDMADE_INTERNAL] [25:05][Run the game successfully] [25:17][build.bat: Toggle HANDMADE_INTERNAL and still run successfully] [26:46][Think about how to proceed] [29:00][handmade_debug.h: Move the contents of debug_variable_group into debug_variable_reference] [30:52][handmade_debug.h: Consider splitting the variables up] [33:03][handmade_debug.h: Rename debug_variable_ structs to debug_tree and debug_tree_entry] [33:53][handmade_debug.h: Introduce debug_tree_entry_group] [34:41][handmade_debug.h: Rewrite debug_tree] [36:44][handmade_debug.h: Introduce debug_tree_entry_window] [37:58][handmade_debug.h: Introduce debug_tree_entry_type] [38:45][Recap these changes] [39:52][handmade_debug.h and handmade_debug_variables.h: Clean up the compile errors] [41:51][Consider using a caching-centric system] [44:41][handmade_debug.h and handmade_debug_variables.h: Start to implement a caching-centric system] [1:04:17][Pause this temporarily and turn off HANDMADE_INTERNAL] [1:04:57][Q&A][:speech] [1:05:25][@insofaras][Now that the amount of debug code is getting larger, will you create a debug debug system to debug the debug code?] [1:06:04][@Manicthenobody][Is this the link you were looking for earlier for MartinCohen?[ref site="infocobuild" page="ArsDigita University - How Computer Works" url="http://www.infocobuild.com/education/audio-video-courses/computer-science/how-computer-works-arsdigita.html"]] [1:07:07][@garryjohanson][What do you think about the use of pre-fetch cache instructions? Are they a viable option for general purpose programming to get maximum performance?] [1:08:28][@Connor_Rentz][After the two year period, will we be able to mod the game?] [1:08:37][@CaptainKraft][Does the architecture of your target system have a big effect on how you design your debug system?] [1:09:51][@Kelimion][Would be it an idea to pass build.bat a parameter which you would use to switch optimisation on and off on the different build units? Like IF %1 == opt, do this, otherwise do that] [1:10:29][@vivek12895][What do you think about "No Man's Sky"? I can't even think about how it works now. Will I get some idea after learning from you?] [1:11:28][@Connor_Rentz][I mean, after you release the source code. Will we be able to create our own bosses, worlds, etc.?] [1:11:48][@Stiegosaurus][Will you be returning to game specific coding soon?] [1:13:41][@CaptainKraft][Could something like a Raspberry Pi or other ARM desktop PC run Handmade Hero well enough, and is that the kind of system where you would want to do the debugging on a separate machine?] [1:14:47][@Kelimion][I meant for usage inside the game, so you could switch optimisation on and off from the debug menu] [1:15:26][@garryjohanson][Do you think it would be totz baller to make a GUI visual language for game scripting like what Unreal has?] [1:16:14][Blackboard: Visual Scripting] [1:18:35][@quartertron][Couldn't you collate just the last frame every frame instead of doing all of them in chunks?] [1:20:22][Close this down][:speech] [/video]