A month ago I released my first game, Euclid’s Inferno. I’m glad I was able to start from an idea and turn it into an actual playable game on Steam in less than a year.
I have read advice telling you not to spend too much time developing your first game, since, well, it is your first game, it won’t be good. Anyway, the game is out, and I am very happy about the final product. It has its flaws, but I had a lot of fun developing and playing it.
How many copies have I sold? In one month, four. I don’t have any expectations of this becoming a hit, or even a moderate success. In fact, I lost money making it due to Steam’s hundred dollar fee. Making money was not the main goal. But if the game does well in the future, I will certainly not complain!

I realized that I am good at developing new mechanics. I had lots of fun thinking about new features such as weapons and enemies. I developed prototypes to see if a concept was viable and fun before turning it into an actual feature.
Also, I learned that I am bad at developing levels. It’s the area I struggled the most with. I had to keep a level interesting, challenging the player in new ways but not making the game feel unfair. I am not sure I completely succeeded in this aspect.

Developing this game made me a better Lua programmer, and a better developer overall. Currently, the game sits at around 11,800 lines of code, so a big part of the development was organizing the code, keeping it well structured and future proof as I kept adding more features.
I wrote utilities for handling entities, timers, collisions between mathematical objects, internationalization, and UI components. These will be useful for future projects. I suffer from a severe case of NIH. I feel that using libraries and frameworks takes out the joy of learning and understanding complex topics and developing my own solutions. I try to avoid them if possible.
I accidentally wrote a level editor, since I needed a way to quickly develop them to test my game. Typing numbers in a text file wasn’t going to be fun. In the end, I shipped the game with it, which will hopefully encourage players to develop their own content.
I sometimes had to worry about performance, specially when rendering hundreds of objects on the screen. Even a marvel of engineering like LuaJIT has its limitations.

Given the game’s art style, my vector drawings helped settle its aesthetics. I received mostly positive feedback from players, impressed by the sharp, minimalist look. I had to develop GLSL shaders to improve its vibrancy, since I was using a limited color palette.
Without a doubt, I learned the most when making the game’s music. I composed twenty seven unique songs. I learned about different musical scales and modes, music composition, chords and a lot more. I’m no professional musician, but this made me a bit less scared of making my own music. I enjoy listening to it, even when I’m not playing the game. My mind is still coming up with new ideas and patterns, so I guess this is an excuse to develop more levels and expand this game. Who knows, maybe on a later update?