Karp Paul
Ailin: Traps and Treasures Post Mortem
I personally do not like the term "Post Mortem". However, it is a common term in gamedev, so I am using it.
Introduction
I have wanted to make games since I was a kid. There is a long story of how I studied programming in school and after and how I got into Software Development many years ago and tried making games using various technologies, but that is a story for another time.
I experimented with Unity and other game engines for many years. However, the development only kicked off when I started using Godot. There is a whole big topic on the differences between Unity and Godot. I will not expand on it, but I will say that Unity did not work for me, Godot does. I just think that it is important to note that it took me years to finally realize that de-facto standards (Unity and UE) do not work for me, and there are probably some underlying philosophical reasons.
Before I started working on ATnT, I made several prototypes, all in 2D. One of these prototypes aimed to become a top-down stealth game in which the player has to navigate levels and hide from enemies. At that point, I was experimenting with object movement through "move_and_collide" and "move_and_slide" functions, but I did not like the results I got. Then, I decided to try making a grid-based movement. and studied how to work with Tweens. That was the starting point of this game development. Thus, that prototype became ATnT, but you can still see the title 2dtdstealth in a screenshot below.
Development
Basic mechanics prototyping took only several days. I had an empty field with some movable objects (boxes) and a character. At that point, I decided I wanted to do a Sokoban game with some additional mechanics. I did not know which mechanics yet, but I had some ideas. This is how the game looked in late April 2022.

At that point, the grid in ATnT was square: each cell was 32x32 pixels. When I started adding graphics which I found on OpenGameArt, it appeared that this perspective was somewhat unnatural. Thus, I reshaped the grid, and each cell is now 32x24 pixels. I was afraid that this perspective might confuse players because they would expect the same distance between objects both vertically and horizontally, but after several tests, I came to the conclusion that putting visual cues, such as different props and decals, helps avoid this issue. This is what the game looked like in June 2022. The title, as you can see, was TreasureSweeper.

The character was drawn by my friend, who later also created the cover art for Steam. I provided several references, including Lara Croft. I quickly realised that I wanted my game to have a protagonist even if there was no story. I named the protagonist Ailin after Youtuber and Twitch streamer AileenSenpai who is feminine, intelligent and badass. I also liked the name.
In July 2022, I added more graphics and most of the game mechanics which now present in the game: spikes, spiders and torches, and mines. Though, they worked differently.

Specifically, a spike trap stayed broken after the player moved a box or a chest on top of it. It was one of my friends who tested the early version of the game and suggested that spikes should recharge.
Spiders and torches also worked differently. A torch had a charge. If the player carries the torch, it will lose that charge by 1 unit per turn. Thus, torchers could not be carried far. Spiders, on the other hand, would move to a neighbouring cell when the player with a torch approached it. I wrote a pretty complicated algorithm that calculates the cell to which the spider should move based on obstacles and the direction from which the player comes. I scrapped this code later entirely.

Sometime in June 2022, I decided to participate in Steam Next Fest in October. I had to dedicate some of my time to creating a Steam page for the game. At that point, I decided that I definitely wanted my game to be released on Steam. Interestingly, there are various rumours regarding Steam Next Fest in the indie game dev community that I heard. For example, they said that to get accepted to the Fest, you need to get 1500 wishlists before registration. Obviously, that is not true. The game was accepted without any problems.
When the game was registered for the Fest, I had my deadline. I knew that I needed to create a demo before the Fest began, and I wanted to make sure that I could deliver all elements which I wanted to see in the final game. Specifically, the built-in level editor. Therefore, I spent about two weeks working almost exclusively on the editor, and in the middle of August, it was finally ready.

In September, I dedicated most of my time to making Steam integration (Workshop and achievements) and levels for the demo. After that, I focused mostly on developing levels and testing, testing, testing.
October 25th was the day when I finally released the game.
Lessons Learned
Developing a game, even a small one, proved to be challenging. Besides obvious technical issues that I had to overcome, there are many organizational, mostly concerning self-organization and timing. Here are some of the lessons:
One of the core principles that I followed is this: you should treat game development as a project, not as a process. Processes are attractive: you are in the flow, programming, adding features and mechanics, tuning and tinkering. Projects have limitations, milestones and deadlines. Projects are boring. During the development, I had so many game ideas that I wanted and still want to implement, but each time I had to stop myself from doing it. I wrote down all those ideas, and some of them I might even implement in future updates for ATnT. I also had many ideas for other games, and, from time to time, I was thinking, should I just switch to another idea? Thankfully, I did not.
It is much easier to learn new things when you have a specific goal in mind. Working with graphics, animations, sounds and music - I had (and still don't have) proficiency in these fields, but for the development, when I knew exactly what I needed to do, I was able to get some practical skills. Specifically, I had to learn how to write music and how to work with pixel graphics in Aseprite.
It is extremely hard to plan the structure of the project, such as classes and file structure, from the very beginning, but when you finally make decisions regarding architecture, don't ignore refactoring. Many issues can be avoided if you just refactor and rewrite some code. This is basic advice, but it might be hard to follow.
If you have some experience in programming, most bugs that you will encounter will not be in specific systems, they will be in systems' interactions. For example, about a week before release, I found out that marking mines on a level blocks spiders. I would not even notice this bug unless I decided that I needed a level with both spiders and mines, and that I needed to test how this combination works. So, test various combinations of mechanics and systems, even if such combinations are not prominent in your game.
Overall, I am very pleased with the experience I got, and now I feel much more confident about making larger games. There are several ideas that I have in mind for Ailin as well. First, I have some basic ideas for the second game, it would still be a puzzle game but in a different subgenre. Second, there is a number of features which I would like to add to ATnT and at least one new mechanic - these are ideas that I cut during the development. Finally, I am thinking about porting the game to other platforms, specifically Nintendo Switch. Unfortunately, this is an uncharted territory for me that would require a significant financial investment which I can not currently afford. Having said that...
You can support me by purchasing Ailin: Traps and Treasures on Steam!