About

My name is Patrik Harag, I live in Pilsen, Czech Republic, where I also studied software engineering and now work as a software developer in one of the local companies. I have many interests and hobbies, and one of them is programming, which has been a hobby of mine for years before I started studying IT and became a professional. And it was just for fun that the Sand Saga gradually came into existence in my free time.

Harag.cz logo Harag.cz GitHub LinkedIn

In the text below, you can learn about the backstory and insights about the Sand Saga.

11 Years of Sand Games

It all started for me in 2012, when I first played a basic Android falling-sand game. Although it had ugly graphics, I was immediately struck by this unique and fascinating concept.

Later, in my spare time, I was learning to program in Java and I had the idea to create my own, better version of a falling-sand game. With my limited programming knowledge, I started by implementing a few basic elements in my game, including sand, water, and walls. I also added a few simple tools that players could use to manipulate the elements. In early 2013 I released the first version of Sand Game based on the Swing GUI toolkit. Ultimately, I abandoned the project.

In 2014, I started developing Sand Game 2 (GitHub), which was based on JavaFX. Most of the codebase was written between 2014 and 2015, with the last version released in 2017. The game includes many elements and is extensive and highly complex, with many tools available. It also features advanced features like sophisticated temperature spreading and fire mechanics. I put a lot of effort into optimizing the processing of many elements on the canvas, with the ability to handle a large number of iterations per second.

I received excellent feedback from users and my friends, and the game even helped me land my first job. However, the fact that the game was in the form of a Java desktop application limited its reach. Another problem was complicated hierarchy of elements (element = an instance of a class implementing the Element interface), which seemed as a good choice at the beginning, but made it difficult to work with in later development stages. I also spent too much time on features that didn't have a major impact on gameplay.

The first commit of Sand Game JS (GitHub) was made on August 28, 2022. I was learning JavaScript and I got an idea of creating falling-sand game prototype. The thought was to move on soon, but things took an unexpected turn and here we are. I started from scratch with a completely different design, but I was able to use the experience I gained from developing Sand Game 2. One of my main goals was to make the game playable on a variety of devices, so I made sure to optimize the game for both mobile and desktop platforms. The evolution is documented in the version history.

Sand Game JS was hosted on my portfolio website, harag.cz. Initially, the website had monthly traffic in the tens. Over time, thanks to Sand Game JS, the traffic increased to tens of thousands. People found the game through Google by searching for terms like ‘falling sand game’, ‘sand game’, and similar. Later, they started searching directly for ‘sand game js’ or ‘harag.cz’.

The name and location of the game on my portfolio website were not ideal, especially as the game grew on popularity. I also had the idea of scenarios. As a result, I decided to keep Sand Game JS as the name of the engine and build Sand Saga on top of it. I created a new website at sandsaga.com to host the game.

Further Development

Sand Saga has the potential to be improved and extended in many aspects:

I would like to develop all of the above. However, progress is rather slow. If you disagree with the slow progress, consider sending some coins and I will dedicate myself full-time :) Currently, the game only brings me costs, apart from the good feedback.

Support

Version History

24w45a
2024-11-10
  • Game: Introduced Brutal Mode, which enables blood (supporters only)
  • Game: Renamed temperature tools (°C− ⇒ 20 °C, °C+ ⇒ 1000 °C, °C⧺ ⇒ 1500 °C)
Blog 2024-11
24w43a
2024-10-23
  • Web: Introduced account page, account merging and referrals
  • Web, Game: Improved modding support (API documentation, Theme Designer)
Blog 2024-10
24w41a
2024-10-13
  • Game: Introduced Gunpowder, Dynamite and Nitro (experimental, supporters only)
  • Web: Introduced an official alternative domain for people (students) who have the main domain blocked
  • Web: Google authentication method (closed testing at first, enabled for all: 2024-10-16)
24w39a
2024-09-29
  • Web: Installation (PWA compliant)
  • Game: Improvements to the user experience on smartphones
Blog 2024-09
24w37a
2024-09-15
  • Game: Meteor explosions and burning Thermite now emit particles
  • Game: Introduced Firework
  • Game: The restart button is always present
24w35a
2024-09-01
  • Game: Introduced new Canvas Settings dialog
  • Game: Various improvements have been made to ensure the game can handle all sizes of snapshots
  • Web: Improved Workshop – filtering by logged user, pagination, sorting
24w33a
2024-08-18
  • Web: Introduced Workshop
  • Web: Introduced Leaderboard
Blog 2024-08
24w31a
2024-08-04
  • Scenarios: Introduced Mission: Demolition
  • Scenarios: Updated Sandbox: Rain (Napalm rain)
24w29a
2024-07-21
  • Game: Introduced Napalm
  • Game: Burning elements now produce fire when falling
Blog 2024-07
24w27a
2024-07-07
  • Game: Introduced Plastic
  • Game: Introduced Extinguisher
  • Game: Added extra tools for supporters – Grass Seed, Tree Seed, Tree, Bird, Butterfly, Fish
24w25a
2024-06-23
  • Game: Minor improvements related to liquids and their interactions
  • Game: Birds can burn now
  • Scenarios: New scenario Sand Painting
  • Scenarios: Renamed Sandbox: Sandscape => Sandscape (it isn't a true sandbox)
Blog 2024-06
24w23a
2024-06-09
  • Game: Introduced Acid
  • Game: Fluid and gas shaders
n/a
2024-06-01
  • Web: PayPal donations & supporter badge
Blog 2024-05
24w21a
2024-05-26
  • Game: Toolbar redesigned
  • Game: Introduced Oil, Brick and Wood
24w19a
2024-05-12
  • Game: Fish, butterfly, bird – spawning and behaviour
24w17a
2024-04-28
  • Game: Introduced birds and butterflies
  • Game: Improved Move tool – it can be used to move solid bodies and entities
  • Scenarios: Updated scenario Tutorial: Move Tool (move a tree)
  • Scenarios: Updated scenario Cheese Game by Mecanix
Blog 2024-04
24w15a
2024-04-13
  • Game: Introduced temperature tools (°C+, °C⧺, °C−)
  • Game: Improved tree interactions with powders and fluids
  • Game: Improved solid bodies handling in fall-through mode
  • Web: Added dev tools – Scenario IDE, Palette Designer, Texture Designer
Older: Sand Game JS version history