From 666a2d6d0221aeeab7444e459ec8b1dab60dc639 Mon Sep 17 00:00:00 2001 From: Matt Mascarenhas Date: Mon, 11 Oct 2021 19:23:13 +0100 Subject: [PATCH] Index hero/code641 --- cmuratori/hero/code/code641.hmml | 94 ++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 cmuratori/hero/code/code641.hmml diff --git a/cmuratori/hero/code/code641.hmml b/cmuratori/hero/code/code641.hmml new file mode 100644 index 0000000..87c4f95 --- /dev/null +++ b/cmuratori/hero/code/code641.hmml @@ -0,0 +1,94 @@ +[video output=day641 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Voxel Flood Fill for Collision Search" vod_platform=youtube id=76B73tx6g0g annotator=Miblo] +[0:00][Recap and set the stage for the day][:collision :speech] +[3:21][Direct vs path-solved :collision voxel :movement][:"debug visualisation" :run] +[5:04][Path solvers: Dijkstra, A*][:run :searching] +[6:14][Turning our :collision system into more of an A* style search][:run :searching] +[7:25][Describe the direct-descent :collision in MoveEntity()][:research] +[9:53][Begin to switch MoveEntity() to do flood fill :collision search, separating out the Collision testing and Movement loops][:searching] +[16:46][Conceptualising flood fill][:searching :speech] +[19:41][Stack up the voxels to test for :collision tracking purposes in MoveEntity()][:searching] +[26:22][Automatic stacking by proximity][:collision :searching :speech] +[27:28][Respecify UpdateBest() as PushVoxelCheck() in MoveEntity()][:collision :searching] +[30:18][Consider checking voxels more efficiently][:collision :searching :speech] +[34:04][Make MoveEntity() consider the voxels in only the six 3D cardinal directions][:collision :searching] +[43:39][Consider how to produce the closest point][:collision :searching :speech] +[45:27][Note our possible inability to use GetClosestPointInBoxConservative() for LocalFromP][:collision :searching] +[45:52][Consider how to produce the closest point (cont.)][:collision :searching :speech] +[47:56][Introduce a voxel_stack and helper functions: PushVoxelStack() and PopVoxelStack()][:collision :"data structure" :searching] +[56:27][@Molly][Meow][:speech] +[57:32][@yanchith_the_kind][By the way, does anyone here know why the sphere :collision geometries should help sliding around corners with "Search in P"?] +[59:22][Make MoveEntity() call PushVoxelStack()][:collision :searching] +[1:00:24][Introduce PopVoxelStack()][:collision :searching] +[1:01:06][Note an :optimisation in PushVoxelStack(): Known early termination][:collision :searching] +[1:02:57][Implement PopVoxelStack(), and introduce StackNotEmpty() for MoveEntity() to call][:collision :searching] +[1:07:09][Consider how to handle embedding, in our flood search scheme][:collision :searching :speech] +[1:08:53][Plan our next steps in MoveEntity()][:collision :searching :speech] +[1:09:35][Delete UpdateBest() and voxel_move][:collision :"data structure" :searching] +[1:10:18][Specify how MoveEntity() accepts motion][:collision :searching] +[1:14:57][Consider our problem with GetClosestPointInBoxConservative()][:collision :searching :speech] +[1:17:00][Fix compile errors in MoveEntity()][:collision :searching] +[1:17:49][Consider :caching the :collision voxel checks][:collision :searching :speech] +[1:19:06][Make MoveEntity() set up the :collision voxel stack][:collision :searching] +[1:25:12][Reflect on the current state of our flood search routine][:collision :searching :speech] +[1:26:00][TODO(casey): We should use the minimum grid size necessary to bound the from/to points...][:collision :searching] +[1:27:00][Q&A][:speech] +[1:27:05][Make MoveEntity() compute and use the minimum grid size necessary to bound the from / to points][:collision :searching] +[1:35:10][Q&A for reals][:speech] +[1:36:04][@thesandvichmaker][Q: Does your in-house editor cache tokens for a buffer and keep them around? I have my incremental tokenization but the memory overhead is pretty gross and unnecessary. I'm thinking of just fully :caching line states (like whether you're in a block comment or not) and then caching only N lines of tokens with LRU eviction or something. I have a suspicion I am just overcomplicating things][:parsing] +[1:36:33][@bearexplicit][Q: PushVoxelStack has typo two times: double I.z?][:collision :searching] +[1:36:41][Fix typos in PushVoxelStack()][:collision :searching] +[1:36:46][:Caching considerations in :parsing][:speech] +[1:40:10][@yanchith_the_kind][Q: What do you think about using Search in P in games with :movement that should feel "physically correct" (gravity, jumping, etc.)? Is there an extension of your work on The Witness that would work well there, or would you go with a classical approach like GJK or MPR?][:collision] +[1:45:21][@thesandvichmaker][@handmade_hero :parsing is definitely what has made this text editor feel like a mistake. I figured I might as well follow through making it because of how easy it is to improve upon the functionality of my daily driver (vim), but text editing is definitely sad. I had been retokenizing fully on every edit but it got too slow especially when making multiple edits on a single keystroke (for example with multiple cursors)] +[1:48:06][@technicbeam][[@naysayer88 Jon]'s streaming today, or at least he is right now] +[1:48:28][@natte84][Q: How would one store text instead?][:"file format"] +[1:50:03][@jojomunki][So books are okay as text? But program files would need some sort of idea about discrete chunks, i.e. structs, functions, whatever?][:"file format"] +[1:51:38][@natte84][How much does :compression help with this? Doesn't compression map it better?][:"file format"] +[1:52:22][@h0stman][What is the alternative?][:"file format"] +[1:55:49][@0xf3f3][Q: So a C/C++ file just with free functions and no declarations / definitions between these functions is pretty much random access?][:"file format" :language] +[1:56:40][@androthi][So C files would have all the defines in a separate data area?][:"file format" :language] +[1:57:37][@centhusiast][Q: So the JSON format is also bad in that sense because it is a text format?][:"file format" :language] +[1:58:48][@mtxset][But if code is in, let's say AST, you won't be able to use any text editor to modify it. You will need some specific software][:"file format"] +[1:59:43][@f__stein][Q: You should get the new [~remedybg Remedy] if you have not already. It has some nice stuff[ref + site=itch.io + page=RemedyBG + url=https://remedybg.itch.io/remedybg]] +[2:00:47][@thesandvichmaker][[~remedybg Remedy] 0.3.6 was pretty crashy for me when I was on my laptop] +[2:01:25][@midnightsun55][Are there any editors or programming languages that don't use text and can highlight gigabyte files currently?] +[2:02:33][@centhusiast][Q: What happened to RAD Game Tools. Did Epic Games buy the company?] +[2:03:38][@midnightsun55][If you still worked at RAD would you have got a massive bag of cash?] +[2:07:03][@natte84][Q: How is the sale platform for SCG progressing?] +[2:10:02][@sentientcoffee][[@naysayer88 Jonathan] raid yay] +[2:11:49][Thoughts on e-commerce server engineering when your payment processor is, and is not, reliable][:speech] +[2:14:25][@mindmark42][Q: How do you even test your code against an unreliable payment processor?] +[2:16:44][@gir33][The whole idea of crypto is decentralizing "trust"] +[2:19:38][@davr0s][Yeah, after an economic collapse, people still still have GPUs going on crypto, they won't just be fighting over food and water] +[2:20:34][@futuremillennium][Q: Can you make your cam bigger for the Q&A?] +[2:21:05][@stathibus][Have we had a [@cmuratori Casey] rant about NFTs yet?] +[2:22:38][@demonixtb][It isn't even that because at no step in creating an NFT you cannot confirm the person creating it actually owns the item] +[2:26:38][@jazzrabbitt][@handmade_hero Then you can say the same for any art. What are they solving? What is the painting that is hanging in my room solving?] +[2:29:39][@j_blow][With Mona Lisa, they actually hang fakes intentionally most of the time, so they don't get damaged by all the jerks taking flash photography nonstop] +[2:30:42][@f__stein][I was very surprised how small the Mona Lisa was, when I saw it. Popular media always depicts it as bigger] +[2:31:12][@jazzrabbitt][@handmade_hero It is an appreciation and value of the creation. If I would create the exact game of yours after two years from publication, no one would buy it. I would say there is an appreciation to creation in society which makes the original piece valuable] +[2:32:42][@ultrascientism][NFTs produce a lot of excess CO2] +[2:33:24][@yanchith_the_kind][Totally agree with value being subjective to the person buying the art. How does this tie into supporting the artist? Don't NFTs help there?] +[2:34:12][@johnm___][@handmade_hero What about using NFT for creating a digital used market? I can't sell you a game I bought off steam] +[2:35:34][@zufaelligertyp][Hey, the idea to want to be close to the actual thing that da Vinci touched with his hands is somewhat relatable. Not important for everybody, but it's certainly not "arbitrary"] +[2:39:56][@holophonist][@MaIlchad No it's because I'm interested in the history of certain pieces of art. If that's "arbitrary" then so is anything else you value] +[2:42:39][@jwindahouse][How did Avengers create value to society? If anything it has negative value because it stole two hours of people's lives they could have used to create actual value] +[2:44:30][@jazzrabbitt][@handmade_hero What should be the price of Mona Lisa? Every copy of Mona Lisa should be 1 million, then, or should all be 1 dollar including original?] +[2:47:01][@mtxset][@handmade_hero This sounds like tulips bubble or more recent coin bubble, or more recent crypto bubble] +[2:48:15][@botondar][So how much can I buy the Wacom tablet for that da Vinci painted the Mona Lisa with?] +[2:48:35][Assuming the great masters all used an iPad Pro, would they all have been arrested for child porn after Apple flagged them?][:speech] +[2:50:55][@creikey][@handmade_hero If the value of art is arbitrarily decided by people, why can't originality be arbitrarily chosen as valuable?] +[2:54:44][@holophonist][Yeah, instead of curating and verifying priceless art, they should be doing something productive like making a videogame!] +[2:56:26][@pengaruu][Pyramids are pretty damn useless and quite permanent] +[2:57:12][Closing thoughts about energy wasted on NFTs and cryptocurrencies][:speech] +[2:59:54][@ultrascientism][Crypto also carries anti-bank, anti-government ideological strain] +[3:01:31][@creikey][@handmade_hero The payment processors aren't the government, though, they're a private institution who don't own a military and couldn't stop something like crypto] +[3:02:13][@midnightsun55][@handmade_hero By that argument, having passwords is useless, because a robber can make you type the password by force] +[3:04:32][@ultrascientism][With crypto, governments technically can't confiscate your money (without torturing passwords out of you). They can make it very difficult to spend that money] +[3:05:08][@infinityjest][@handmade_hero But couldn't society decide that we switch to crypto for our currency, and change the laws accordingly?] +[3:07:04][@mailchad][Oh yeah, turns out that's not true: blockchain is public, if you know the size of the transaction and when, you can trace it back quite quickly] +[3:07:39][That's it][:speech] +[/video]