cinera_handmade.network/cmuratori/hero/code/code640.hmml

120 lines
10 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[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="GilbertJohnsonKeerthi 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]