[video output=day640 member=cmuratori stream_platform=twitch stream_username=handmade_hero  project=code title="Investigating Corner Collisions" vod_platform=youtube id=PZejeRCDT-M annotator=Miblo]
[0:00][Recap and set the stage for the day][:speech]
[0:28][Demo our sticky :collision bug using the new diagramming][:"debug visualisation" :run]
[4:25][Launch ~4coder, with build initially not working][:admin]
[5:43][Reacquaint ourselves with the gliding :movement code in MoveEntity()][:collision :research]
[10:02][Interpret our colour-coded :collision boxes][:"debug visualisation" :run]
[11:16][Reacquaint ourselves with the diagramming code in UpdateBest()][:collision :"debug visualisation" :movement :research]
[12:04][Reinterpret our colour-coded :collision boxes][:"debug visualisation" :run]
[14:04][Consider enabling MoveEntity() to allow diagonal motion][:collision :movement :research]
[17:01][Corner-diagonal motion should be handled][:collision :"debug visualisation" :movement :run]
[17:28][Double-check Dir and Side in MoveEntity()][:collision :movement :research]
[19:47][Our BestCell black box is missing][:collision :"debug visualisation" :movement :run]
[20:30][Disable the BestCell diagramming in MoveEntity()][:collision :"debug visualisation" :movement]
[20:46][The cyan plus sign remains][:collision :"debug visualisation" :movement :run]
[20:55][Continue to wonder about our missing BestCell black box][:collision :"debug visualisation" :movement :research]
[22:00][Disable the gliding code in MoveEntity()][:collision :movement]
[22:17][The BestCell black box is never drawn][:collision :"debug visualisation" :movement :run]
[22:46][Try make MoveEntity() draw the BestCell in red][:collision :"debug visualisation" :movement]
[22:55][The BestCell red box is never draw][:collision :"debug visualisation" :movement :run]
[23:09][Leave the BestCell black in MoveEntity() and try drawing a bigger version of the ToP box][:collision :"debug visualisation" :movement]
[23:33][Our black box remains missing][:collision :"debug visualisation" :movement :run]
[23:38][Try reversing the ToP and BestCell diagramming in MoveEntity()][:collision :"debug visualisation" :movement]
[23:52][Our BestCell is drawn, but not the ToP][:collision :"debug visualisation" :movement :run]
[24:20][Inspect RenderDiagrams() for bugs drawing the first entry][:"debug visualisation" :research]
[29:23][Step in to AppendDiagramEntry()][:"debug visualisation" :run]
[30:21][Fix DIAGRAM_Text() to pass Diagram_Text to AppendDiagramEntry()][:"debug visualisation" :language]
[31:59][Our BestCell and ToP are both drawn][:collision :"debug visualisation" :movement :run]
[32:27][Re-enable the gliding code in MoveEntity()][:collision :movement]
[32:44][MoveEntity() tests all but three edges][:collision :"debug visualisation" :movement :run]
[33:29][Enable MoveEntity() to test diagonal edge motion][:collision :movement]
[36:49][Somebody is talking about rust again][:language :speech]
[38:20][@fat_dratini][It gets the hose again][:language]
[38:56][Tentatively permit "R***"][:language :speech]
[39:16][MoveEntity() now tests the full cube, yet our corner gliding remains not working][:collision :"debug visualisation" :movement :run]
[42:01][Fix typo in MoveEntity()][:collision :movement]
[42:39][Consider testing the 2-neighbourhood][:collision :movement :run]
[45:10][@vacyoui][Unmentionable what, RPG Maker?][:language]
[46:57][Determine to widen the gliding :movement search space][:collision :research]
[51:55][Consider classifying our :movement direction dynamically as we march through the voxel][:collision :research]
[56:01][@tk_dev][Q: A line drawing algorithm?][:collision :movement]
[56:37][Consider drawing a wider line][:collision :movement :research]
[1:00:40][Increase VOXDIM from 2 to 3 in MoveEntity()][:collision :movement]
[1:01:17][Consider specifying all the possible wider :movement directions in MoveEntity(), avoiding oscillation][:collision :research]
[1:03:27][Consider adding an value that directs :movement tests based on previous tests][:collision :research]
[1:04:10][Introduce the notion of TriedOpposites in MoveEntity()][:collision :movement]
[1:06:51][Our gliding :movement code now tests further][:collision :run]
[1:07:18][Try making MoveEntity() flip and test each axis on separate loops][:collision :movement]
[1:12:24][Our gliding :movement code tests further still, but doesn't permit corner gliding][:collision :run]
[1:14:19][Consider drawing the glove's :collision box as a sphere][:"debug visualisation" :run]
[1:15:35][Implement the Diagram_Sphere case in RenderDiagrams()][:"debug visualisation"]
[1:20:10][@jarput][Has anyone noticed the "noise" on [@cmuratori Casey]'s latest streams? The editor seems more blurry to me]
[1:20:17][Implement the Diagram_Sphere case in RenderDiagrams() (cont.)][:"debug visualisation" :mathematics :rendering]
[1:25:55][Check out what would be our glove's :collision sphere][:movement :run]
[1:29:24][Check how UpdateBest() determines the TestP][:collision :movement :research]
[1:30:31][Break down our :collision test][:"debug visualisation" :movement :run]
[1:32:54][Red means you can't move directly through the current voxel to that voxel][:collision :"debug visualisation" :movement :run]
[1:35:48][:Collision in The Witness: Flood-fill search][:movement :speech]
[1:37:07][Q&A][:speech]
[1:37:42][@teamrandb][Q: Greetings [@cmuratori Casey], forgive my rude question, but why did you not post you streaming on twitter?]
[1:38:01][@mixelqueen][Q: Instead of switching between -O2 and -Od manually, why not \[set\] a different hotkey to build release vs debug?]
[1:38:18][Building both -Od and -O2 for refterm[ref
    site=refterm
    page=build.bat
    url=https://github.com/cmuratori/refterm/blob/main/build.bat]][:language :research]
[1:39:29][@anusaa][Q: On [~~code565 day 565] you said that the multithreading code in [~hero Handmade Hero] was crappy and that you learned much more about it since then. But what exactly is bad in that code?][:threading]
[1:40:16][@mindmark42][Q: Can you explain what a discriminated union is?][:"data structure" :language]
[1:42:36][@davr0s][I call it "tagged union"][:"data structure" :language]
[1:42:41][Theoretical discriminated union[ref
    site=Wikipedia
    page="Disjoint union"
    url=https://en.wikipedia.org/wiki/Disjoint_union]][:"data structure" :language :speech]
[1:44:13][@poissonprocess][Q: For someone just starting following [~hero Handmade Hero], would you recommend against using DirectSound? It looks to be deprecated now. Should I use xaudio2 or WASAPI?][:audio :library]
[1:46:07][@tk_dev][Q: Does the order in which entities move change the result in your :collision detection?]
[1:47:13][@mextroxtm][Q: Do you think the concept of IMGUI is applicable the same way in 3D user interfaces as in VR games? Are there any differences you would see? I might be writing a small research paper about it for university if I get the permission to][:ui]
[1:48:02][@olive_prist][Q: You invented IMGUI?][:ui]
[1:48:41][@olive_prist][Q: [@mike_acton Mike Acton] recommends sometimes doing deliberate practice for programming as opposed to working on projects. Have you done this yourself? Do you recommend it?]
[1:50:42][@0lpbm][Well, Wikipedia[ref
    site=Wikipedia
    page="Immediate mode GUI"
    url=https://en.wikipedia.org/wiki/Immediate_mode_GUI] credits [@cmuratori Casey], for the doubters][:ui]
[1:51:33][@carwynnelson][Q: Were there IMGUI interfaces before you coined the term? Or was the idea and the term completely original?][:ui]
[1:52:52][@thehorseisbrown][Would you coin a different term for IMGUI in hindsight? Wouldn't "code-based" or something in that direction be better?][:ui]
[1:53:12][@d3dbsp][Did you also coin GJK?[ref
    site=Wikipedia
    page="Gilbert–Johnson–Keerthi distance algorithm"
    url=https://en.wikipedia.org/wiki/Gilbert%E2%80%93Johnson%E2%80%93Keerthi_distance_algorithm]][:geometry]
[1:54:05][@enemypanda][Did you coin JavaScript?][:language]
[1:54:33][@carwynnelson][It's odd that [@cmuratori you] don't have a Wikipedia page[ref
    site=Wikipedia
    page="Eric Veach"
    url=https://en.wikipedia.org/wiki/Eric_Veach][ref
        site=Wikipedia
        page="Matt Pharr"
        url=https://en.wikipedia.org/wiki/Matt_Pharr]]
[1:58:52][@i_am_seabass][Q: Microsoft is setting fairly strict :hardware requirements for Windows 11. Basically, chips older than two years will not work. Do you think this is a good or bad thing? Seems like it will lead to a lot of waste of perfectly good hardware]
[2:01:48][@miltondts][Nah… the TPM requirement is about locking down the platform, DRM, etc][:"operating system"]
[2:04:34][@mougatron][Q: Have you ever used any :physics engine like Havok, PhysX, or Bullet? If so, do you have any opinion on them?]
[2:05:03][@beastexmachina][Q: Same opinion for trusted modules in embedded systems?][:"operating system"]
[2:06:44][Do we have any Iranians watching?][:speech]
[2:07:24][@xpaw][Does twitch work in Iran?]
[2:07:45][Persian-style grilled meats][:food :speech]
[2:08:11][@navidhg][Kebab koubideh][:food]
[2:08:22][Mediterranean grilled meats][:food :speech]
[2:10:16][@f__stein][@boop is Iranian, right? At least he spoke about speaking Farsi]
[2:10:40][Getting better at grilled chicken][:food :speech]
[2:11:20][@amirh12][Joujeh kebab][:food]
[2:11:25][Main problem figuring out the doneness of joujeh kebab][:food :speech]
[2:11:57][@vertual1][Touch][:food]
[2:12:12][@esert][If you want to get Middle East / Levant-type of seasonings and other produce in Seattle, try Goodies Mediterranean Market[ref
    site="Goodies Mediterranean Market"
    url=https://www.goodiesmedmarket.com/]][:food]
[2:13:17][@esert][Yes, in Lake City. They also have house-made kebabs, ready to cook][:food]
[2:13:28][Skewering before coming to room temperature][:food :speech]
[2:14:27][@miltondts][Does your skewer rotate?][:food]
[2:14:29][Rotating skewers manually][:food :speech]
[2:15:59][@sir_pinecone][How about using an infrared thermometer and then remove before it hits the target temperature, because it'll continue to cook for a bit as it sits?][:food]
[2:16:31][@miltondts][Also, I don't know if this is common, but I see the meat is not done all at the same time and they cut the meat on the skewer and leave the rest][:food]
[2:17:40][Wrap it up][:speech]
[/video]
