Skip to main content

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

I think this may be the best game of the jam! It reminds me of Noita, which is in my Top 3 of greatest indie games of all time. I like that you have to strategically plan your ash heaps, otherwise you might get stuck below a platform. The only minor nitpick is that it wasn't explained in game how to refuel (I'm assuming it's when you step on the flames?). 

By the way how did you code the ashes? Was it a physics engine with each pixel of ash as a separate rigidbody? Or some kind of clever particle system?

(1 edit) (+2)

Thank you for your feedback! Yes, the ammo is the little flames. We got in touch elsewhere, but here’s the rundown of the ash sim anyway in case somebody else is interested:

The game maintains a bitmap to keep track of terrain collision data. Basically, each pixel in the collision map is either solid or air. Each piece of ash “claims” a single pixel in this bitmap.

In the update routine, each piece of ash looks at a row of 3 pixels underneath it in the collision bitmap to decide what to do next.

  • 3 air pixels underneath ash: keep falling
  • 3 solid pixels underneath ash: go to sleep
  • At least 1 solid & 1 air pixel: glide diagonally on top of solid stuff

Each piece of ash has a floating-point velocity vector. The ash will only be able to “claim” a new pixel in the collision bitmap once the floating-point coordinates would take the ash to a different integer pixel. I guess if I were to port this to an old platform I should’ve used fixed-point math :P

That was the gist of it. Of course, there’s some secret sauce to improve the game feel of the ash: subtle randomness to make everything feel more organic, ash can also bounce off other stuff if projected with enough force, etc.

The old After Dark screensaver “Confetti Factory” inspired me to simulate ash like this. It used to captivate me as a kid. I have actually never played Noita so I guess I’ll have to see what it’s like!