[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]