Sand Game JS



Sand Game JS is a fast and powerful falling-sand game engine for desktop & mobile browsers. It allows players to experiment with various elements, such as sand, soil, water and fire. With grass and trees growing on soil, and other natural processes, it offers a unique experience. Sand Game JS is primarily tested on Google Chrome and Google Chrome for Android. Sand Game JS is the browser-based successor to Sand Game 2.

How to Play

Sand Game JS can be played using either a mouse and keyboard or a touch screen

  • For mouse and keyboard users, the left mouse button (LMB) is used for drawing, while the right mouse button (RMB) is used for erasing. You can draw a straight line or a rectangle, you can hold the shift or ctrl key while dragging the LMB or RMB. To prevent elements from being redrawn, you can hold the alt key while drawing. To fill an area, hold both the ctrl and shift keys while using the LMB or RMB. Additionally, the middle mouse button can be used to create a meteor.

  • On a touch screen device, touch input or dragging can be used to draw with the primary brush. Simply touch and drag your finger on the screen to create elements.

Scenes There are five scenes available for exploration. Furthermore, there are three distinct modes available for experimentation: boxed, fall-through, and erasing. The boxed mode confines the elements within the boundaries of the canvas. The erasing mode automatically removes elements when they reach the bottom of the canvas. The fall-through mode creates a continuous cycle where elements repeatedly fall from the top to the bottom, providing ongoing interactions and dynamics.

Scale Adjustment By default, the canvas size and the scale (element size) are calculated automatically based on the screen dimensions and other parameters. By increasing the element size, fewer elements will appear on the canvas, which improves performance but also leads to a more pixelated appearance. On the other hand, if the element size is decreased, more elements will populate the canvas, providing a finer level of detail, but potentially impacting performance. The Performance metric is a good indicator.

Exporting/Importing Canvas content can be exported (downloaded) for later use. These exports can then be opened or seamlessly placed into a scene.

Image Templates By importing a JPG/PNG... image (in the same way as an exported canvas), it is possible to create a template that can be placed onto the canvas. This feature enables to incorporate custom graphics.


I'm developing Sand Game JS to...
  • ... be fast and stable,
  • ... be able to handle small elements (= a lot of elements),
  • ... look natural and not ugly,
  • ... simple (with not too many buttons),
  • ... perform well on mobile and desktop.

The source code is hosted on GitHub.

Changes in individual versions are listed in the version history.

Feedback is welcome.


I created my first basic falling sand game in 2013 and named it Sand Game.

The development of Sand Game 2, based on JavaFX, began in 2014 and concluded with its final version in 2017. Despite its success, the game’s reach was limited as it was a Java desktop application.

In 2022, the development of Sand Game JS began. Hosted on harag.cz, the game increased website traffic from tens to tens of thousands. With its growing popularity, I decided to build Sand Saga on top of the Sand Game JS engine and host it on a new website, SandSaga.com.

Similar Games

While there are numerous games in this genre, each with their own unique goals and features, none offer the same level of satisfying sand falling as Sand Game 2 and Sand Game JS :). But if you're done with my games, I recommend these:

  • The Powder Toy (pc)
  • PLOP by Caltrop (browser)
  • Sandspiel by Max Bittker (browser)


There are 41 comments.

There should be a slider to choose the amount of a certain element you can draw. There should be an option to create your own templates and add the cabin or custom images to make the game have more customization. The game should overall have more customization options in the base game to make it more enjoyable and more different between each and every player. That would overall make the game more player based and player controlled.


There should be custom elements in the base game. You could only have to choose the color, the way it interacts with elements and temperatures, and whether it is a solid, liquid, or a gas. There should also be a background changer.

you guys should make something really explosive better then thermite


Replying to 5b65f9f9-588e-45ab-a68e-46b16652741c:

By the way, if you haven't noticed... I wrote you here, about the Cheese Game... https://github.com/MecanixCreations/Mecanix-Sand-Game-JS-Edits/issues/1

Replying to c52d9eec-0746-4df7-834f-39e8694b4ab9:

these guidelines and templates will be useful for custom stuff!

Replying to 0a1c9fcd-d1b7-426f-9ea2-f57aa38b1a7d:

accidental physics engine is crazy

Replying to 4aa27828-29b2-44ed-bd70-5ff33781c363:

I just finished writing the guidelines for content creators: https://sandsaga.com/manual

Hello again! I have figured out how to use sandSaga's scripting, from editing the sandScape scene! there will be more stuff on the mod git soon. :)

Replying to 7ce8cc76-5ae9-4595-9228-d1c92cace7c5:

Please do put my creation on showcase, if you were too add modding support! thank you!!

Replying to 50b1bfd0-ef54-40bc-b09c-ef79e8fd5932:

Wow! BTW I didn't know you could create palettes in Gimp. sandsaga.com is coming out of beta soon (Sand Game JS will remain as the game engine name). There will be a space for content creators. If you're interested, we could showcase your creations here, and you could become famous as a modder ;) Soon, I'll provide guidelines for making scenarios and mods. I will also try to make modding easier, provide tools and information... and then some kind of workshop for content creators.

Replying to 1b34d7f2-c1c4-4b68-8d3a-c228b73aea66:

I mod sand game by taking the source, and editing things, to see how they work! i add new brushes, new maps, and even made CHEESE game! here is the link to my github with some sand game mods https://github.com/MecanixCreations/Mecanix-Sand-Game-JS-Edits

Replying to cc205089-f0c5-495c-9bad-dbe3cf029285:

Do you mean tools like palette-designer? These are separate 'apps' and are not currently bundled with Sand Game JS nor deployed. Maybe in the future. Can I ask how you mod / plan to mod the game? - I'm just curious

Replying to cc205089-f0c5-495c-9bad-dbe3cf029285:

I like to mod the game, so it is very useful to have access to these tools :)

Is there a way in the dev build to access the sand game JS tools, AKA the ones in the tools tab on github

Replying to a8c0cb03-12de-4934-bfc6-bfa00af91cce:

Thanks for answering!

Replying to 0a1c9fcd-d1b7-426f-9ea2-f57aa38b1a7d:

This happens because the solid body is blocked by the powder and the powder is blocked by the solid body, so they are deadlocked. I want to fix this before the next version is released because it often happens around tree roots (even more so in my very recent local dev builds). But thanks for the error report :)

I found a bug In the dev beta, where a solid body will be stopped if filled with a powder, how to recreate pause the game draw a circle of metal fill with Sand using Ctrl+shift unpause

Add a workshop so people can share there ideas and make new fixes and add dynamic physics

Add explosives

Replying to 963706fb-8d21-43b5-aebe-ce7acf53a2d9:

another thing is fluid dynamics, aka more realistic water!

more ideas: • another gas • explosives (dynamite) • birds • new scenes, and the ablitity to change the settings of the scenes • spouts, for water and "lava" • strong walls and coloured walls • clouds, and electricity (shocking/lightning) thats all!


Thank you for your feedback and suggestions guys. I really appreciate it!

Make the brush have a slider to change size, so you can make thick or fine lines! Add Lava, it has been requested a lot enable wood in the brush menu add the cabin as a template, and add rock as its own draw-able element alongside the template rocks make grass and tree seeds

Replying to b9612532-496f-4f73-a965-b6c17e92c7b6:

*Edit: I meant molten metal

I know you just added molten lava but can you add just plain lava to the game that doesn't harden? Thanks and me and my friends have been having fun playing your game at school.

you should make it to where you can control temperature

You should add cactuses for the sand and make it so template is back

you should add a steam explosion after enough steam builds up inside of elements

Replying to b4220d80-7526-4ff9-8d5d-257c6a5217bf:

i agree

please add like a bomb feature where you put it down and it will explode the surrounding area it would be cool.

Replying to 0384ca59-2466-4c05-85c1-0e8f6ca72aa2:

and make a spawn tool for fish as well

can you add humans to this? just like a spawning tool. Thanks!

may you please make fire better with templates

Please add slowing down time

Replying to 8c24dfd7-dc18-48f1-829a-2730cb5e0a4b:

There is a chance that it will be implemented eventually. But now I would like to focus on finishing the temperature processing that will allow me to introduce new elements and behaviour. I would also like to add templates (like in the Sand Game 2).

Replying to c1f5aa9d-8e17-4f71-b9ad-e1fb06614e9e:

Are you going to add a way to speed up time or slow down time.

Replying to f94d74b0-8b79-4c97-bf81-ab7e267b6e74:

That's all they can do right now. I do have some plans though ;) Edit 2023-08-10: Meteors are better now, click location = impact location

Can you change the way the meteor goes or will it always go right.