This post is about the Taat game. A puzzle game that I built duing the last 5 years or so. I've split this post into two parts. This one is more about the history of the project and the 2nd one will be about the technical details and the tools.
This post is also the basis for the presentation I'll be giving in a few days in a local meetup group.
I used to play PC games for a long time. There was always something special about it. I also had a special interest in puzzle games which I always found particularly entertaining and fun.
In the recent years I was more interested in PC puzzle games that were accessible to kids. By accessible I mean not being hard enough and not having elements like violence. I know it's very likely I'm missing something, but I can't recall a single game that would tick those two boxes. Were puzzle games that would be friendly to the 5-6 year category a niche? Even games on the Nintendo platform such as Mario + Rabbids Kingdom Battle had fantasy violence elements which I wanted to avoid. This one also belongs to the tactial RPG category, which was not exactly what I was going for, and it would also be way more difficult to build.
As probably many other engineers I always had an itch of making my own game. In the past I tried that with Unity, and other tools like phaser.io, but I didn't manage to achieve much. I read a couple of tutorials and eventually abandoned any ideas I had. The tools were not the problem. As a matter of fact, the tools are rarely the problem. I just didn't had enough motivation at the time.
Somewhere around 2020, I bumped onto a youtube tutorial on how to make a Sokoban style puzzle game using Godot. I spent more time on that compared to the other attempts, and I eventually started creating additional levels and giving them to one of my kids to try them out. I thought that the levels were fun, easy and manageable in terms of difficulty. I also thought that playing the same levels again and again would become boring but, obviously, I was wrong.
It's quite hard to remember that as a kid you can go through the same repetive tasks and having fun all the time. Things are new and things are fun. There is no need to automate and optimize. There is no need to experience more and keep trying new things. Things can be just good and fun - even if seamingly there is nothing special about them.
I started adding more levels and at some point I think I've reached 15 to 20. We kept playing those and having fun. The later ones were more challenging and I had introduced a couple of additional mechanics like apples and enemies (which at the time were represented by cows), because ... probably that was the first asset that I stumbled upon in the asset pack I had picked.
And then, as always, the project was parked. Right now I don't recall why exactly, but it's quite likely that I didn't had the capacity to spend more time on it.
After one and a half year I came back to the project. I realized that Godot was upgraded to version 4.x and I tried launching the game. To my surprise I found that the game would not work anymore because some APIs were modified and I had to follow a migration guide.
I started thinking what I wanted to do with this game and what would happen if I would park it for another couple of years. I put some time into thinking what I would be going for and which were the mechanics I wanted to have, which platforms I wanted to support and how much content would the game have.
Publishing to Steam was my main goal, but I also thought that having it on Itch would be nice. My mechanics were nothing special and I had no special needs from a game engine. The game was grid based so even the physics were irrelevant for it - there were no collision detections for example. All things were proceduraly evaluated which made the game relatively easy to develop. Having 100 levels was my main goal and having a few additional mechanics seemed reasonable.
I would probably estimate it to something like 100-200 hours. And that would be a proper engineering estimate of falling about 10x off.
During the time of the development of Taat, I've played a number of games that had a significant influence on it. The game that I got the most inspiration from was Talos Principle. The portals and the laser mechanics were taken from it. I think at some point I was thinking that I was building something like "Talos Principle for Kids". That's not to imply that Taat is on par with Talos in any element.
Other games on the PC that had an influence on Taat during the development were A Short Hike, FEZ, The Alto Collection and Yoku's Island Express. The influense of those games was indirect as those don't have that much in common with a Sokoban style puzzle game. The Sokoban part was a, sorta, accidental mechanic. It was a concept that was easy to explain. It was easy to build additional mechanics around it. And it was, relatively, easy to build a game like it.
I don't think I've evaluated many options as I've quite quickly found that using Tiled for designing my levels was a very convenient choise, as that would enable me to separate the level building process from the actual game interpretation process. After the switch to Löve and Tiled, I've started adding other elements like portals, lasers and, in the end, traps. I wanted to have at least one additional mechanic, but I couldn't think of anything that would stick.

Taat mechanics test level
The game eventually started reaching its final form and my development iteration seemed very quick which felt very good.
I was designing the levels and writing the code in parallel.
For the levels I had three 5x10 grids printed on A4 pages which I was caring around me. I would take those even on vacation with me, as designing levels was not something you could do all the time.

Designing levels with pen and paper
I've finished all the 100 levels with just those 5 mechanics.
A number of seamingly cool thoughts would appear every now and then which I would instantly sketch on my A4 sheets. Some of those would take weeks or months to be ported to the game. The momentum for the entire process was good until I've started reaching the end. Probably around level 90 was the worst part. I couldn't come up with anything new. All new ideas felt like re-iterations of existing levels. That shouldn't come as a surprise as I was bumping straight onto the Ninety–ninety rule.
By then I had also settled on that I wouldn't have an action button. The original Sokoban concept doesn't require any action buttons. This means you can get away with just the arrow keys on the keyboard or a pad/joystick on a controller. When I started introducing additional mechanics I was faced with the choise of whether to add an action button or not. For example, when you step on a portal, you could make it so that the push of a button triggers the teleportation mechanism. This would work but it would mean kids would need to use additional keys, which would make the game harder. Have you seen a 5 year old holding an XBox One Controller?
I've added a 2nd player, which came with another set of problems such as which keyboard buttons to choose, what if there are multiple joysticks connected, what if someone wanted to use one keyboard and a joystick, what if someone wanted to switch controllers etc. The use of Steam Input API made all of those problems even more complicated. I eventually added a dedicated controller configuration menu in the Settings, but I still don't think those are very intuitive.
In my head, a 2nd player could be used by an adult to assist while also being in the game. I thought that was a cool concept but I didn't hear from anyone confirming that.
I spent an immense amount of time on Taat. It's very hard to have a precise calculation, but I guess it was somewhere around 1000-2000 hours. While approaching the end, all the levels were designed and tested, most of the noticable glitches were fixed and the Steam integration was finalized (including cloud saves, Steam Input API, achievements etc.). And at that time the progress came to a halt. It's this time you just need to push the launch button. Instead it's quite likely you will be running around in circles thinking, should it also have X and should it also have Y? I started giving activation keys to some of my close friends so they could give the game a go and provide feedback. Their input was very valuable, and while most of their input was accurate, I couldn't fix much at that stage. Not without putting in another tens of hours.
Procrasinating at the end of a project can also be quite a fruitful time for other endeavours. It's as if, you need to do important things to justify not finishing something that is equaly important. It's also the time that additional requirements will pop-up, like making a trailer, preparing an announcement, and the worse of all, some sort of a marketing push. Putting ads and the like.
I've grabbed the opportunity to spend more time on something that wasn't related to the game, and that was learning DaVinci Resolve to create a trailer. It took me a couple of afternoons to finish it. I was running out of smaller things to do. I still had things such as putting in the Store Page details and a list of at least 20 smaller improvements that I would have to code, which even now remain open.
That was it. I had to release the game.
I didn't fix all the final bits I wanted but that's ok. I even have a tiny bug somewhere which I hope I'll not be getting complaints about. Now I wish to get complaints about it ...
After a double pass the game passed the Steam publishing review and I've set the release date. I picked the funky 25.11.25. I would need to wait a month or so. I've started detaching from the wrap-up process and gradually switching to observing the stats page. The game was getting more and more traction. I was surprised, but I know that views don't converge to clicks, and when those do, those don't necessary converge to sales. People starting adding the game to their wishlist. I think the game was getting wishlisted once or twice a day. Was that good? Was That bad? I didn't know, and I still don't, although I have an impression of what it means ... now.
Release date came and the game sold 3 copies on the first day. That was ok ... I guess. The game sold a few more copies over the next few days, accumulating somewhere around 10 sales in total. That was ok ... I guess. It was certainly not Elden Ring, but it would sell a bit more over the next weeks, or months, I thought. Probably.
It did not.
I still didn't want to do anything marketing wise. I think I was drained and dissapointed. I thought my game was targeting a specific audience that would be keen on giving me 4 euros/dollars. That's like getting a beer in a bar, and the game had content for 2-3 hours for an adult. I thought it was a fair deal. It probably was and it probably still is, but even though the gaming world is a big market, it's saturated with thousands (millions?) of products. The majority of top listed products are way better packaged compared to Taat, because I also decided to ... make the cover art myself. Which, let's say, it doesn't look amazing. I thought it would be cool for it to stand out, even if that meant using semi-poor cover art. See, I know my marketing tricks and those definitely can be instantly reflected in the sales of the game. Right?
The only "marketing" type of thing I did was giving a few copies to Steam Currators, and getting some reviews from them. It's hard to say what the currator impact was but likely it was not something earthshaking.
Over the next months the game sold a few additional copies.
I was so bad at marketing that I didn't even nudge people on the Löve forums, which is something I intend to fix.
The game was still getting wishlisted which seemed nice, and at the beggining of Spring it was on ~110 people wishlists.
During the Steam Spring Sale, I've put the game to 20% off, and this resulted into 3 additional sales and then it was another stop.
At the time of this writing I still haven't reached the base of $100 to get payed.
Now this section may seem that I am dissapointed with the outcome, but I'm really not. At some point I thought "yeah, why not, maybe I it will sell a million copies", but that obviously was not near to any convievable reality.
Right now I know that the only way to sell is to promote the game properly. Reach out to a publisher or someone to do that for you. Or to have something really ground-breaking (which Taat is certainly not).
I didn't question the choice of Lua/Löve. I loved (pun intended) the tools and the libraries I had, and I was quite happy with the end result. Nothing was getting in my way, and even if some libraries didn't had updates in years, everything was working fine, and that is what really matters.
When testing the game on OSX, I've run onto some segmentation faults.
I was really stuck and all the options I had were not compelling. I could try to patch the library myself, which would require me to investigate and learn about C++ and Lua FFI, which I didn't had the energy for. I've decided to give up on OSX users, which probably was the right call at the time. The unfortunate bit is that on OSX you can't have the game run via Proton as you can on Linux.
Would I not had those sort of issues if I was using Godot or Unity? I don't know. I guess. Maybe. If I were using Godot or Unity would I be able to make it this far. Probably not. Is it really a tool choice thought? It kinda is and it kinda isn't. For a variety of project when the tools enable you to be productive and have fun, that is all that matters. Especially for toy projects like this one.
So, I guess now comes the basic question: Was it worth it?
Yes, of course, even though, it would be nice to have spend some time less on it. The fact that some of that time was with family and friends, is making up for it though.
And I guess the main question is, if I would make a new game, would I use Lua/Löve?
Yes, definitely.
And the 2nd main question is, would I make a new game?
Sure, why not. If there was time and a funky idea, I would certainly go for it. Especially now that I know a decent chunk of things related to the development and release process of a game.
We do different things for different reasons and I wanted to build something so my kids can have fun with. I loved games so much as a kid, that I thought if someone was making a game having me in mind that would be the most special thing in the world, even if I didn't fully realize how much effort was put into that. When I would, and I eventually would, I would be probably even more thrilled. There is also a personal drive for such projects. Learning and exploring. Having fun. Spending time with others while creating those things, but also not spending time with the people that need your time. And that last bit matters also a lot and it can hurt. Especially when you realize how much time that was.
The original steps of this game also happened during the Covid-19 pandemic. This time was a mess, for the most of us.
People that we love mainly need our time and focus. They want us to be there. They want the simple things from us.
Because in the end, as Paul McCartney sings ...
And in the end
The löve you take
Is equal to the löve
You make