(Airship Trader) Dev Blog #1 - An Airship, Some Cargo, and a Bit of Code
Dev Blog #1 - An Airship, Some Cargo, and a Lot of Code
Hi, I am Florian. I am a Game Design & Production student at S4G Berlin, currently in my 2nd semester. Before that, I worked as a graphics and motion designer. Now, besides my studies, I am also trying to become a solo game dev. Or, well, I am a solo game dev already. I am just still trying to figure out what I am doing.
While I am between my 2nd and 3rd semester, I wanted to start working on a personal project. And this time, I want to share my progress and process with all of you in one of those typical dev blogs that we all love and cherish.
Mainly, I am doing this to keep myself motivated. But I would also love to get feedback, meet like-minded humans, and hopefully find some people who want to follow along.
I plan to post status updates every so often, whenever I finish a "major" issue or feature. I would be very happy if you want to join me on the journey, give me some feedback along the way, and maybe, one day, play the finished game.
The Idea
I want to create a game about airships and trade.
The premise is simple enough:
Fill your airship with cargo, transport it between cities, earn money, and upgrade your ship.
The interesting part is managing the balance between cargo weight and the ship's uplift. By changing the balance, the player can manipulate the ship's tilt and use it to climb and descend during flight.
(click the GIF to see all frames)

The player can fill gas bags at the front and back of the ship to change its balance. Loading cargo on the left or right side has a similar effect.
So, in theory, it is a pretty simple system.
In practice, apparently, it is a little more complicated.
The First Two Days
Over the last two days, I managed to create the basic balance system and get the ship to accelerate, move and steer, all inside a very ugly placeholder world.
And honestly, I am already pretty proud of the result.
I am still not particularly confident when it comes to coding, so getting all of this working feels like a nice little achievement. The movement is also a bit more involved than a simple character controller because the balance of the ship affects its movement vertically.
If the ship is tilted upwards, it should climb. If it is tilted downwards, it should descend. So I had to make the balance system and movement system work together instead of treating them as completely separate things.
For now, the player clicks buttons to manage the ship's balance. I also want to add full controller support, though. I have already added controller input for increasing and decreasing the uplift on both sides, so I can already see that implementing the rest should be fairly straightforward.
The Beautiful Code
My code is not perfect.
Actually, it is one long single script.
I know.
I will refactor it at some point.
For now, I am deliberately keeping it this way because I am still relatively new to coding. I understand the basics, but I often have to stop and think quite a bit about how to actually apply the things I learned in my courses.
Keeping everything in one script is quick and easy for me to work with right now. I can find things, change things and see what happens without having to think too much about architecture.
Obviously, that will not be a good solution forever. As the project grows, I will have to clean things up and separate systems properly.
But for now, it works.
And that is good enough.
Learning Godot
I also ran into some problems when translating my tilt values into something Godot could actually use.
I had to do some research and figure out how to convert the degree values I was working with into something that Godot's rotation system could understand. I also ended up using interpolation with lerp to make the rotation behave the way I wanted.
The code I used for this was completely new to me, but it fixed the problem and got the movement working.
I am actually quite happy about problems like this. I could probably just copy a solution, move on and forget about it. But I want to understand what I am doing eventually, and hopefully this project will help me turn these "I have no idea how this works" moments into things I actually understand.
I also had to get used to the way code is written in Godot again. During my 2nd semester, we were working with Unity, so I had not touched the Godot console in a while.
Luckily, most of what I had learned before came back pretty quickly. There were still a few things I had to look up and relearn, but that is exactly what I wanted to get out of this project.
I want to actually learn by making something.
With the foundation from my coding courses, I want to use this small project to get more comfortable with programming. I think I understand the basics, and I hope this project will help solidify that knowledge while giving me the opportunity to learn new things along the way.
What's Next?
The next step will be finishing the controller support for the current version.
That will make testing the ship much more convenient than clicking buttons all the time.
But that is mostly a little quality-of-life feature.
The real challenge is coming next:
Cargo.
I want to create an inventory system for two storage rooms, one in the front and one in the back of the ship, and allow the player to place crates into them using drag and drop.
That sounds simple enough.
It probably isn't.
I am going to break that task down into smaller pieces first. Drag and drop in particular feels a little over my head at the moment, so I will have to find some good tutorials and figure out how to connect what I learn with the systems I already have.
And hopefully, at some point, have an actual game.
If you made it this far, thanks for reading.
I have no idea yet where this project is going to end up, but I am really looking forward to finding out. If you have experience with Godot, game systems, airships, cargo games, or just have an idea that you think could make the project better, feel free to jump in.
Follow the game and come aboard for the voyage!
I’m also happy to hear your feedback!
Discussion