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.

BTC: bc1qe6f267rxf5dy9c5kjvwydau5eg83mvzs7srfxm
ETH: 0x3316506F0061a39592D4402A0B954D617309f5bb
SOL: 9LkuF1RnaM9FMik9BQAmLWbBVXjUtSPRBFhohwDw4vT6