From 17a4c3847cb512707e40906ac7ec8f4e87a92b99 Mon Sep 17 00:00:00 2001 From: Matt Mascarenhas Date: Tue, 31 Aug 2021 16:24:05 +0100 Subject: [PATCH] Index hero/code640 --- cmuratori/hero/code/code640.hmml | 119 +++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 cmuratori/hero/code/code640.hmml diff --git a/cmuratori/hero/code/code640.hmml b/cmuratori/hero/code/code640.hmml new file mode 100644 index 0000000..ad0778b --- /dev/null +++ b/cmuratori/hero/code/code640.hmml @@ -0,0 +1,119 @@ +[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]