Owen Piette’s Falling Sand Game
Feb 19, 2011 I created a hardware implementation of a falling sand game, inspired by the Java-coded Pyro Sand Game, which is not actually a “game” in the strictest sense, as it lacks an objective, but is more accurately a 2D particle simulator that satisfactorily models certain dynamics of falling sand.
- Not falling short (no pun intended) of things to do, falling sand games are the original sandbox game (again, no pun intended). Sandman is sponsoring a very active community that involves Sand Game competitions involving some very talented gamers.
- The basics of falling sand games are simple, and well-explained by one of Noita's three developers, Petri Purho, in this blog post. Before Noita he worked on Crayon Physics Deluxe, which has obvious physics-y parallels. The lineage from falling sand to Noita's 'Falling Everything' engine is even clearer.
Features:
– Explosions! (2 kinds)
– Energy transfer, sandbox temperature
– Load/Save
– Turn boundary walls on/off
– Turn sources on/off
– Many Elements
– Select area size: 320×240 – 1280×1024
– Save/load/modify/add elements and physics
– Up to 200 elements
– Use less than 100% CPU on limited FPS mode.
– Group or hide elements
First of all, mad props go out to the original creator of this game. Great idea. I only wish I could read Japanese… Here’s a link to the original, or at least as close to the original as I can find (Again, without knowing how to read Japanese.) http://ishi.blog2.fc2.com/blog-entry-158.html


Having wasted hours of productivity on the Java verison of the Falling Sand Game, I began to think of improvements that could be made from the original. No source was available for the original, and Java isn’t my choice programming language, that I decided to start de novo with C/C++ and the cross-platform wxWidgets. That’s why I called it “wxSand”, although a lot of people call it “Owen Piette’s Falling Sand Game”.
Falling Sand Game Original Version
I tend to feel that The Falling Sand Game should be more of a Zen experience than anything else. I also believe that the game should be as cyclic as possible, so that environments can run and evolve for long periods of time. Finally, I recognize the close connection of The Sand Game with the game of Life: Whereby, with a few very simple rules, and some starting conditions, you can create a very unpredictable outcome.
Of course, the original is pretty sweet. So I’ve make a version with my own rules, and the ability to write your own mods with whatever elements you create. I have implemented many, many more interactions and elements than the original version. Discover them as you play.
Originally, I didn’t want to make this Open Source. I think it takes away from the mysticism of the game. Those of you that are so inclined should be able to see the simple algorithm. Note the close connection with the game of Life. Also note the impossible situations, like unequalized water levels. These aren’t shortcomings of the game, but instead interesting artifacts of the rules of this alternate reality!
Unfortunately I haven’t had time in the last five years to update the game. If programming was my day job, you might see an update. If people donated money, I would release an update. I would probably re-write it in C#, which is what I’m using these days. It might even port to Linux and mac with Mono?
www.fallingsandgame.com
An excellent resource for links to the original, other variations of the game, and neat saved games, is the Falling Sand Forum. Sandman is sponsoring a very active community that involves Sand Game competitions involving some very talented gamers.
FSG Wiki
User-based documentation on how to make new elements for wxSand.
I like to think that this game can be played with a very laid-back approach. Just set up some walls and watch the sand fall… I completely support any other games written in the same style, like the games at SmartMelon Games.
I am an independent programmer and I support other independent programmers. Large publishing companies all too often kill a good game off by making sequel after sequel. Wolfenstein was awesome, but Return to Castle Wolfenstein? Indie game developers introduce new ideas into the gaming world. Go check some out at GameTrove.net.
I always appreciate constructive feedback:
If you like the game, you can tell me that most effectively by making a small donation for my effort. Of course, I always appreciate any help in paying for bandwidth to host this site too. Since I was listed on digg.com, joystiq.com, and other places, I’ve used 25GB of my bandwidth just for this page!

I use dreamhost.com for my websites, email, ssh, etc. They’ve been excellent and I have no problem recommending that you use them too. Easy maintenance and no nuisance.
Falling Sand
[POWDER] | Standard powder. |
---|---|
[WATER] | Water splash. |
[FIRE] | Fire spark. |
[SEED] | Cast seeds to grow trees. |
[G-POWDER] | Gunpowder. Explosive, keep fire away! |
[FAN] | Fan. Continuously sends wind. |
[ICE] | Smashing ice becomes snow. |
[S-BALL] | Super ball. |
[CLONE] | Clone tool. Multiply an object by clicking over it. |
[F-WORKS] | Set off fireworks of the selected dot with the other click. |
[OIL] | Oil. Flammable liquid. |
[C-4] | Plastic bomb. |
[STONE] | Stone. It's heavy but breakable. |
[MAGMA] | Magma. It burns everything. |
[VIRUS] | Virus. Transforms dots. |
[NITRO] | Nitroglycerin. High-sensitivity explosive. |
[ANT] | Ants. When they touch solids, they create a mysterious path! |
[TORCH] | Torch burns everything but keep water away. |
[GAS] | Flammable gas. |
[SOAPY] | Soapy water makes bubbles! |
[THUNDER] | Thunder. |
[METAL] | Metal conducts electricity. |
[BOMB] | Bomb explodes when it touches powder. |
[LASER] | Laser goes straight. It reflects against the polished metal. |
[ACID] | Acid melts various things. |
[VINE] | Vine grows in a tangled mass. |
[SALT] | Salt becomes sea water when melted. |
[GLASS] | Glass. Transparent dots. |
[BIRD] | Birds fly with a flock. |
[MERCURY] | Mercury. Heavy liquid metal. |
[SPARK] | Calm fire spark. |
[FUSE] | Fuse. It gradually burns. |
[CLOUD] | Rain cloud, snow cloud, and thunder cloud. |
[PUMP] | Liquid and gas are carried. * PEN-S adjusts the pen size. |
[WIND] | Send wind toward the arrow direction. |
[AIR] | Left click increases pressure while right click decreases it. |
[DRAG] | Drag various objects. |
[BUBBLE] | Soap bubbles. Drag as if drawing a circle. |
[WHEEL] | Gear. * Select [ERASE] to deletes. |
[PLAYER] | Add a playable Stickman. ←→ - Move ↑ - Jump ↓ - Action * It changes the attribution when touching powder. * WASD key for 2P. |
[FIGHTER] | Fighting Stickman. |
[BOX] | Box. Throw, blow or rotate it. |
[BALL] | Ball. It rolls very well. * The selected dot ball will be added with the other click. |
[CREATE] | The object that touches is created. |
[BLOCK] | It blocks wind or dots. |
[ERASE] | Delete blocks or gears. * Also it deletes the outer block. |
[CLEAR] | Delete erasers, dots or wind. |
[Copy/Paste] | Copy & Paste. Drag to copy, and click to paste. |
[TEXT] | Select colors to depict the characters. font - Change of font style- PLAIN, BOLD, ITALIC size - size of character |
[PEN] | Change the drawing style. free - free line line - straight line lock - width & height paint- Painting out |
[PEN-S] | Pen size. Adjust the drawing pen size. |
[SCALE] | Zoom in and out by clicking. Drag to move. |
[SPEED] | Change speed. * The enter key playbacks frame by frame. |
[Start/Stop] | Start/Stop the time. |
[UPLOAD] | Upload. * See below. |
[SAVE] | Save temporary. |
[LOAD] | Load temporary. |
[MiniMap] | Display of thumbnail. |
[MENU] | Setup menu. STR - Show name NUM - Show number of dots |
[SIDE] | Off screen settings. OFF - Hide LOOP - Move opposite |
[GRID] | Grid line. |
[BG] | Background effect non - hide air - high pressure (green) and low pressure (blue) line - pressure and streamline (wind) blur - motion blur shade - blur filter aura - aura filter light - light (additive synthesis) toon - toon shader mesh - Draw wind as line gray - gray scale track - trajectory filter dark - dark filter TG - thermography siluet - silhouette |
[DOT] | Maximum number of dots. |
[RESET] | Reset. |