2:34Test-driven development doesn't help solving the harder problems of game programming
                    
                        2:34Test-driven development doesn't help solving the harder problems of game programming
                     
                    
                        2:34Test-driven development doesn't help solving the harder problems of game programming
                     
                 
                
                    4:59Purpose of debug services
                    
                        4:59Purpose of debug services
                     
                    
                        4:59Purpose of debug services
                     
                 
                
                    6:331) Coaxing bugs to the surface
                    
                        6:331) Coaxing bugs to the surface
                     
                    
                        6:331) Coaxing bugs to the surface
                     
                 
                
                    8:002) Locating bugs that are clearly present but difficult to pinpoint
                    
                        8:002) Locating bugs that are clearly present but difficult to pinpoint
                     
                    
                        8:002) Locating bugs that are clearly present but difficult to pinpoint
                     
                 
                
                    11:58We'll focus on versatile debug services aimed at solving difficult bugs
                    
                        11:58We'll focus on versatile debug services aimed at solving difficult bugs
                     
                    
                        11:58We'll focus on versatile debug services aimed at solving difficult bugs
                     
                 
                
                    13:21Logs. Example of debugging framerate problems
                    
                        13:21Logs. Example of debugging framerate problems
                     
                    
                        13:21Logs. Example of debugging framerate problems
                     
                 
                
                    15:49We could start by recording our debug timers on each frame
                    
                        15:49We could start by recording our debug timers on each frame
                     
                    
                        15:49We could start by recording our debug timers on each frame
                     
                 
                
                    16:35Simplifying the usage of our debug timers
                    
                        16:35Simplifying the usage of our debug timers
                     
                    
                        16:35Simplifying the usage of our debug timers
                     
                 
                
                    17:38We could combine the log and the looped live code editing replay system
                    
                        17:38We could combine the log and the looped live code editing replay system
                     
                    
                        17:38We could combine the log and the looped live code editing replay system
                     
                 
                
                    20:01Limitations of this approach - Is not particularly good for multithreading problems
                    
                        20:01Limitations of this approach - Is not particularly good for multithreading problems
                     
                    
                        20:01Limitations of this approach - Is not particularly good for multithreading problems
                     
                 
                
                    21:23Necessary components: counter log, replay system, log of memory consumption and diagramming
                    
                        21:23Necessary components: counter log, replay system, log of memory consumption and diagramming
                     
                    
                        21:23Necessary components: counter log, replay system, log of memory consumption and diagramming
                     
                 
                
                
                    25:57We want all the debugging subsystems going through the same log
                    
                        25:57We want all the debugging subsystems going through the same log
                     
                    
                        25:57We want all the debugging subsystems going through the same log
                     
                 
                
                    27:14We want to avoid having to change the code in order to debug it...
                    
                        27:14We want to avoid having to change the code in order to debug it...
                     
                    
                        27:14We want to avoid having to change the code in order to debug it...
                     
                 
                
                    29:11...and also avoid having to remove debug calls once we're done
                    
                        29:11...and also avoid having to remove debug calls once we're done
                     
                    
                        29:11...and also avoid having to remove debug calls once we're done
                     
                 
                
                    31:44Review of desired features for our debug system
                    
                        31:44Review of desired features for our debug system
                     
                    
                        31:44Review of desired features for our debug system
                     
                 
                
                    32:56Will we need tuning/fiddling support?
                    
                        32:56Will we need tuning/fiddling support?
                     
                    
                        32:56Will we need tuning/fiddling support?
                     
                 
                
                    36:40Let's start building the debug system
                    
                        36:40Let's start building the debug system
                     
                    
                        36:40Let's start building the debug system
                     
                 
                
                    38:05The old debug cycle counters were lousy on purpose
                    
                        38:05The old debug cycle counters were lousy on purpose
                     
                    
                        38:05The old debug cycle counters were lousy on purpose
                     
                 
                
                    43:00Improving the interface of the cycle counters
                    
                        43:00Improving the interface of the cycle counters
                     
                    
                        43:00Improving the interface of the cycle counters
                     
                 
                
                    43:27Abusing constructor/destructor pairs to achieve that better interface
                    
                        43:27Abusing constructor/destructor pairs to achieve that better interface
                     
                    
                        43:27Abusing constructor/destructor pairs to achieve that better interface
                     
                 
                
                    54:49We shouldn't need to store values anywhere to make paired calls at the beginning and end of a frame
                    
                        54:49We shouldn't need to store values anywhere to make paired calls at the beginning and end of a frame
                     
                    
                        54:49We shouldn't need to store values anywhere to make paired calls at the beginning and end of a frame
                     
                 
                
                    57:11"I just kind of ruined The Variable"α
                    
                        57:11"I just kind of ruined The Variable"α
                     
                    
                        57:11"I just kind of ruined The Variable"α
                     
                 
                
                    1:01:03Review of the inner workings of the new cycle counter interface
                    
                        1:01:03Review of the inner workings of the new cycle counter interface
                     
                    
                        1:01:03Review of the inner workings of the new cycle counter interface
                     
                 
                
                    1:02:15Testing that the code still runs after today's changes
                    
                        1:02:15Testing that the code still runs after today's changes
                     
                    
                        1:02:15Testing that the code still runs after today's changes
                     
                 
                
                
                    1:03:22@SoysauceTheKid Is there a way to determine how much overhead the debug takes when it is enabled? (Or is there such a thing as debug levels?)
🗪
 
                    
                        1:03:22@SoysauceTheKid Is there a way to determine how much overhead the debug takes when it is enabled? (Or is there such a thing as debug levels?)
🗪
 
                     
                    
                        1:03:22@SoysauceTheKid Is there a way to determine how much overhead the debug takes when it is enabled? (Or is there such a thing as debug levels?)
🗪
 
                     
                 
                
                    1:04:48@Psi9 Why not use a simple template? That would remove storing the ID, e.g. template<int ID> struct timed_block {};
🗪
 
                    
                        1:04:48@Psi9 Why not use a simple template? That would remove storing the ID, e.g. template<int ID> struct timed_block {};
🗪
 
                     
                    
                        1:04:48@Psi9 Why not use a simple template? That would remove storing the ID, e.g. template<int ID> struct timed_block {};
🗪
 
                     
                 
                
                    1:05:50@insofaras Would you agree that there is a similarity between test driven development and "writing the usage code first"?
🗪
 
                    
                        1:05:50@insofaras Would you agree that there is a similarity between test driven development and "writing the usage code first"?
🗪
 
                     
                    
                        1:05:50@insofaras Would you agree that there is a similarity between test driven development and "writing the usage code first"?
🗪
 
                     
                 
                
                    1:06:32@ChaiLatteQuinoa Would you consider functional programming for game development?
🗪
 
                    
                        1:06:32@ChaiLatteQuinoa Would you consider functional programming for game development?
🗪
 
                     
                    
                        1:06:32@ChaiLatteQuinoa Would you consider functional programming for game development?
🗪
 
                     
                 
                
                    1:08:01@ingenero How does the StartCycleCount get stored in the struct when you don't explicitly set StartCycleCount = StartCycleCountInit or something what you did with the ID?
🗪
 
                    
                        1:08:01@ingenero How does the StartCycleCount get stored in the struct when you don't explicitly set StartCycleCount = StartCycleCountInit or something what you did with the ID?
🗪
 
                     
                    
                        1:08:01@ingenero How does the StartCycleCount get stored in the struct when you don't explicitly set StartCycleCount = StartCycleCountInit or something what you did with the ID?
🗪
 
                     
                 
                
                    1:08:55@jfcatalan Do you get Heisenbugs, where the bug happens only when there's not any debug code running?
🗪
 
                    
                        1:08:55@jfcatalan Do you get Heisenbugs, where the bug happens only when there's not any debug code running?
🗪
 
                     
                    
                        1:08:55@jfcatalan Do you get Heisenbugs, where the bug happens only when there's not any debug code running?
🗪
 
                     
                 
                
                    1:10:18@InstantKafka So the destructor gets called right when it goes out of scope?
β🗪
 
                    
                        1:10:18@InstantKafka So the destructor gets called right when it goes out of scope?
β🗪
 
                     
                    
                        1:10:18@InstantKafka So the destructor gets called right when it goes out of scope?
β🗪
 
                     
                 
                
                    1:14:08@abnercoimbre Community fight
🗪
 
                    
                        1:14:08@abnercoimbre Community fight
🗪
 
                     
                    
                        1:14:08@abnercoimbre Community fight
🗪
 
                     
                 
                
                    1:14:25Close this down and wrap up another episode of Handmade Hero
🗩
 
                    
                        1:14:25Close this down and wrap up another episode of Handmade Hero
🗩
 
                     
                    
                        1:14:25Close this down and wrap up another episode of Handmade Hero
🗩