The Himmelfahrt project is a pure solo project and represents my personal reimagining of a game from my childhood, one whose title I don't even remember anymore. The gameplay was simple: you controlled a submarine and had to sink passing ships on the surface using torpedoes.
As the captain of the last functioning submarine, players must decimate the enemy fleet as much as possible. They're free to choose how to configure their submarine. High scores can optionally be saved to an online database.
The project took shape when I set out to develop a complete, polished game within one month alongside my regular work schedule. To make it even more exciting, I wanted to build the game in an engine I hadn't used before—Godot. After 30 days, Himmelfahrt was finished, and I learned a great deal along the way.
Godot
I first came across the game engine Godot through fellow students. At first, I didn't find it particularly interesting, but as I kept running into more and more things about Unity that bothered me, I figured it couldn't hurt to take a look.
At first, I struggled with Godot's node system, which is structurally quite different from Unity's Entity-Component System. But there are plenty of helpful guides out there to help you rethink Unity patterns for Godot.
Once you understand that, Godot opens up into a huge variety of possibilities. The node system makes it easier to develop independent components and combine them across many scenes into the final game. I was also surprised by how intuitive Godot is. Where Unity often causes confusion with its many packages and duplicate solutions (for example, there are three UI systems and two input systems), Godot stays consistent in its menu navigation and terminology. It even has features I still miss in Unity to this day, such as native localization.
I can say without a doubt that Godot has had a lasting impact on the way I develop games, and I'll be paying significantly more attention to this game engine going forward.
30 Days
The challenge I set for myself—developing a full-fledged game in an unfamiliar game engine within 30 days—was very rewarding and insightful. After about five days, I had finished a prototype for the game. Based on prior experience from past game jams, I had planned to spend at most a quarter of the total time on the prototype, since polishing and playtesting would take up most of the time. That assumption turned out to be true.
Graphics, sound, menus, online high scores, and balancing took up the rest of the time. It was very interesting to deliberately set aside time to have other people playtest the game—a development step that's easy to overlook on projects like this. The feedback you get this way is incredibly valuable, and it showed me how my vision differed from what was realistically achievable with this project, as well as how people actually ended up playing the game.
I'll definitely take on the challenge of developing a game in 30 days again in the future.
Art
I had always wanted to work with a very limited color palette. The green-brown tones seemed fitting for the game's setting. Working with just four colors took some getting used to at first, but I quickly accepted the limitation and learned to work with it. This inevitably meant that sprites could be developed much faster than on other projects. The only real challenge was fitting in details or guaranteeing readability for UI elements.
I'm especially happy with the TV shader, which I developed as one of the final steps of development. It not only supports the setting but also gives the game the arcade-cabinet look I was going for.
