From 84c6df5a6142940343e7b4357437871a9ab87e91 Mon Sep 17 00:00:00 2001 From: Matt Mascarenhas Date: Wed, 28 Jul 2021 15:26:10 +0100 Subject: [PATCH] Index hero/code638 --- cmuratori/hero/code/code638.hmml | 75 ++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 cmuratori/hero/code/code638.hmml diff --git a/cmuratori/hero/code/code638.hmml b/cmuratori/hero/code/code638.hmml new file mode 100644 index 0000000..68c5017 --- /dev/null +++ b/cmuratori/hero/code/code638.hmml @@ -0,0 +1,75 @@ +[video output=day638 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Recording Diagram Commands" vod_platform=youtube id=8R4TvbuDrK8 annotator=Miblo] +[0:00][Recap and set the stage for the day][:speech] +[0:39][Thoughts on diagrammed debugging of our :collision system][:run] +[5:07][Describe our DIAGRAM_*() functions][:"debug system" :research] +[6:51][Introduce DIAGRAM_Color() and DIAGRAM_Thickness()][:"debug system"] +[9:01][Introduce diagram_entry and diagram_group structs][:"data structure" :"debug system"] +[14:24][Wonder how [@naysayer88 Jon] handles conditional compiling out of functions in JAI][:language :speech] +[15:03][Remove DIAGRAM_Phase() in favour of permitting nested diagrams at the Begin and End, and introduce DIAGRAM_Point(), DIAGRAM_Text() and DIAGRAM_Out()][:"debug system"] +[18:20][Check the chat for JAI info][:language :speech] +[18:49][Rename DIAGRAM_Text() to DIAGRAM_Overlay(), and make diagram_entry be a linked list in an arena][:"data structure" :"debug system"] +[20:36][Set up diagram_entry as a linked list, augmenting diagram_group with an Arena and PhaseDepth][:"data structure" :"debug system" :memory] +[23:01][Add Text to diagram_entry and rename DIAGRAM_Out() to DIAGRAM_Text()][:"data structure" :"debug system"] +[25:24][Introduce AppendDiagramEntry(), with thoughts on :threading and architecture-transparent debug systems][:"debug system" :memory] +[28:19][Fix up compile errors at diagramming calling sites, introducing DIAGRAM_IsOn()][:collision :"debug system"] +[35:22][Implement AppendDiagramEntry() and introduce diagram_attributes][:"data structure" :"debug system"] +[38:27][Introduce DIAGRAM_Stick()][:"debug system"] +[39:33][Implement DIAGRAM_Color() and DIAGRAM_Thickness()][:"debug system"] +[40:29][Continue to implement the AppendDiagramEntry() linked list][:"debug system"] +[42:54][Implement DIAGRAM_Sphere(), _Line(), _Box(), _Point() and _Overlay()][:"debug system"] +[44:43][Implement DIAGRAM_Begin() and DIAGRAM_End()][:"debug system"] +[46:03][Reflect on our diagramming code][:"debug system" :research] +[46:51][Consider recording the diagramming state for the renderer to track][:"debug system" :research] +[48:50][Make a union of the P\[\] and Attrib values in diagram_entry, including the Text buffer from diagram_attributes][:"data structure" :"debug system"] +[51:57][Implement DIAGRAM_Text(), augmenting diagram_group with a FormatBuffer\[1024\]][:"debug system" :"string manipulation"] +[57:06][Consider future work on our diagramming system][:"debug system" :research] +[59:12][Introduce RenderDiagrams()][:"debug system"] +[1:00:15][Hit a write access violation on DEBUG_RECORD_ALLOCATION() in PushSize_()][:collision :"debug system" :run] +[1:00:55][Compile in -Od and again hit that write access violation on DEBUG_RECORD_ALLOCATION() in PushSize_()][:collision :"debug system" :run] +[1:02:03][Investigate our write access violation on DEBUG_RECORD_ALLOCATION() in PushSize_()][:collision :"debug system" :research] +[1:03:35][Disable HANDMADE_DIAGRAMS][:"debug system"] +[1:04:12][Demo the memory arena viewer][:profiling :run] +[1:06:40][Our debug_event array in debug_table is 136 MiB][:"debug system" :memory :research] +[1:09:27][Increase our debug_event array to 2*64*65536 (544 MiB)][:"debug system" :memory] +[1:09:39][:Run the game] +[1:10:02][Revert our expansion of the debug_event array][:"debug system" :memory] +[1:10:10][Introduce DIAGRAM_Reset() for GAME_UPDATE_AND_RENDER() to call][:"debug system" :memory] +[1:14:44][In -O2, overflow the debug_event array via the :collision system][:"debug system" :run] +[1:15:06][In -Od, overflow the debug_event array via the diagramming system][:"debug system" :run] +[1:16:56][Increase our debug_event array to 2*64*65536 (544 MiB)][:"debug system" :memory] +[1:17:10][Again overflow the debug_event array via the diagramming system][:"debug system" :memory :run] +[1:17:56][Decrease our debug_event array to 2*16*65536 (136 MiB)][:"debug system" :memory] +[1:18:10][Step in to DIAGRAM_Reset() and through to diagramming calls][:"debug system" :memory :run] +[1:19:36][Determine to limit our diagramming to a particular entity][:"debug system" :research] +[1:21:20][Set up AppendDiagramEntry() to conditionally push on a diagram_entry][:"debug system"] +[1:23:01][:Run in -Od without overflowing the debug_event array][:"debug system"] +[1:23:05][:Run in -O2 without overflowing the debug_event array][:"debug system"] +[1:23:24][Introduce DIAGRAM_SetFilter() and DIAGRAM_Filter(), augmenting diagram_group with Filter and FilterPassed values][:"data structure" :"debug system"] +[1:27:57][:Run without overflowing the debug_event array][:"debug system"] +[1:28:53][Disable the :"debug visualisation" in the :"entity system"][:"debug system" :research] +[1:30:37][Q&A][:speech] +[1:31:16][@centhusiast][Q: Do you know about WebView2?[ref + site="Microsoft Docs" + page="Introduction to Microsoft Edge WebView2" + url=https://docs.microsoft.com/en-us/microsoft-edge/webview2/]] +[1:32:22][@said6289][Q: What's sphere roll-off?][:collision] +[1:33:09][@jack_mousseau][Q: You made a note about rewinding a :memory arena? Does a rewind free the allocation?] +[1:34:21][@alexkelbo][Q: Shouldn't we add spatial partitioning for :collision and such at this point?] +[1:35:19][@mindmark42][Q: You mentioned you are doing :memory arenas differently now. What are you doing differently?] +[1:36:07][@matiasmunkp][Q: In the early videos you were mentioning if the series got enough attraction, you could probably look into adding :networking features. What is your stance on this now?[ref + site="Star Code Galaxy" + url=https://starcodegalaxy.com]] +[1:36:52][@jonathanlivingstone][Q: Why did you forward-declare the diagram functions in the header file? I thought you did the unity build system so you didn't need to do that kind of thing. Unless the #include order requires it?][:language] +[1:38:33][@botondar][Q: Off-topic: Do you know any particular reason why MSVC would optimize a piece of code better with /Ox instead of /O2 (2x speed-up)?][:language] +[1:39:20][Plug godbolt[ref + site="Compiler Explorer" + url=https://godbolt.org]][:language :research] +[1:42:28][@mindmark42][Q: Sorry but what do you mean by grow linearly? Is that like reallocating so it's contiguous?][:memory] +[1:43:02][@botondar][Q: (cont.) No, the code performs better with /Ox and not /O2 which doesn't make sense to me because /O2 enables more optimizations][:language] +[1:45:42][@philliptrudeau][Q: Would it be possible to render all of the unfiltered N-squared diagrams if the number of debug events was huge? Or are there just way way too many diagrams for that?][:"debug system"] +[1:47:05][Recommend making a highly optimised :"debug system" as a project][:speech] +[1:48:12][@xxthebigfoxx][Q: What do you use to build on Linux?][:language] +[1:48:31][@centhusiast][Q: Do you know that [@nothings Sean Barrett] is writing a C compiler. Are you going to use it?][:language] +[1:48:52][@xxthebigfoxx][Q: Any build system? Or just .sh files?][:language] +[1:49:21][Wrap it up with a glimpse into the future][:speech] +[/video]