Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
(+1)

Yeah, the falling sand part of the game took 10 days to implement because I didn’t expect it to be so complex (mostly hard to find bugs), so I would say they are quite large time sinks, but it is really fun to add new pixels with weird properties and watching them react with each other

As for performance oh definitely, as I started adding larger levels the slowdown started becoming huge because every pixel on the screen (except air) would look around and move, luckily each level was split into 4 * 4 pixel blocks since the levels are loaded from images. This meant I could stop each sprite/block from updating if they were too far from the player and slightly further out after that they would stop rendering which made it very easy to implement compared to other things, you can actually see this on large levels because water for example might suddenly stop when you would expect it to continue down since the blocks they want to move into are dormant until you are in range.

High quality falling sand engines like in Noita, use tricks likes multithreading in larger 32 * 32 regions which are properly chunk loaded, and use virtual rectangles to mark parts of the game that have some activity in them, so it only needs to update those, this lets it run really well at a high resolution.

Sorry about the essay, there’s just a lot of cool technical witchery to talk about 👌

(+1)

thanks for the very detailed explanation, I appreciate it!