Godot: seven weeks later
Published by James on 31/10/2023Happy Hallowe’en, Kinoko fans!
Today marks exactly seven weeks since Unity announced their Unity Runtime Fee. Now, I don’t know if it’s just me, but it actually feels like it’s been so much longer than that. I had to count the weeks on the calendar three times to believe that it’s only been that long. Maybe it’s because we’ve been busy rebuilding our game from the ground up, whilst also settling into our new house, and maybe it’s also because Unity Technologies have since done a complete U-turn, brushing it all under the carpet and, seemingly, managing to get most people to stop talking about it. (Their stock, meanwhile, has continued to plummet.)
At the time, we announced that we’d be joining the masses by abandoning Unity in favour of a complete rebuild, powered by the Godot game engine.
Although we were, by then, already nine months deep into development, I guessed that learning to use Godot and then rebuilding our game from the ground up would take a matter of weeks, not months. When we started to develop our game last winter, I’d never developed a video game in my life. I had no experience. When we started to rebuild our game last month, I had nine months of experience. For all sorts of reasons, the rebuild was never going to take as long as the original build.
So, seven weeks later, how’s the rebuild coming along?
Above is a recent clip of our game, recorded just four days ago. I’ve added a bit more to Kinoko’s mechanics since then (more on all of that shortly), but this gives a pretty good idea as to where our game is at today. We haven’t rebuilt every single thing that the Unity build had yet – for instance, we don’t have a saving/loading system, which the old version had, and except for a basic pause menu we haven’t restored any of the interfaces – but, in their places, we’ve added a few things that the Unity version never had at all.
The first thing I did, of course, was to reimplement Kinoko’s running and jumping. I then added the starbits, the purple sparkling pickups which, just like in Unity, currently do nothing (although we do have a pretty good idea as to what we want to do with them now). I designed a new system of ‘states’ for Kinoko – for instance, ‘idling’, ‘running’, ‘jumping’, ‘falling’ – which makes controlling Kinoko’s animations and determining what he can and can’t do so much easier, and I took the opportunity to carefully improve all the things I wasn’t quite happy with before, such as the precise timings and feel of Kinoko’s movements.
When we dropped Unity, we’d just started a process of adding more levels and dealing with the connections and transitions between them. Since starting in Godot, we’ve stuck with one level for the time being, which Chelsey’s taken the opportunity to redesign and lengthen. Instead of building the game outwards, we’ve continued to focus on building it upwards, restoring mechanics such as the starsprite-based player health system, and introducing new mechanics for Kinoko such as a melee attack and a dodge roll. For the time being, this is something we’ll continue to do, since the first level alone gives us plenty to work on and improve in the short-term.
Whilst it still needs work from a visual standpoint, NPC dialogue has been massively improved this time around. The ways in which I write, store, and recall strings of dialogue is so much more simple than it was before, and everything about it is now far easier for me to reuse with different NPCs.
In the last few days, I’ve begun looking at enemies again. I was never quite happy with the feel of any of our enemies in the Unity version, so I’ve been doing my research here into everything that Godot has to offer and seeing how we might develop better, more interesting, and more challenging enemies. Where before, for instance, I was doing all of the enemy movements in pure code, the enemy I’ve been working on thus far uses Godot’s ‘Path2D’ node type to follow a hand-drawn path, giving me so much more control over how they move whilst also being so much easier to manage.
Yesterday and today, I’ve been reintroducing Kinoko’s raygun and the ability to shoot enemies with it. Enemies don’t have health yet, dying in a single hit, so it’s rather basic, but I’m happy with how it’s coming along so far and, as with everything else, I’m taking the opportunity to make it better than what we had in place for it before.
I’m not going to talk about it at length in this particular blog post, since it’s a topic that’s really worth a post of its own at some point, but you might also have picked up from the video above that we’ve got some new music (not the ‘game over’ music, that’s currently still stock). We’re happy to say that that’s an original piece of music that we now own, produced by a member of our Discord community, Ember a.k.a. Strymes49. It’s terrific. We weren’t looking for music this early on, but when we heard what Ember had produced – for a bit of fun, no less, with no real expectation that it would become official – we had to buy it! We hope to upload it to our YouTube channel soon, so you can have a proper listen, once Chelsey’s produced some suitable artwork worthy enough to be displayed alongside it.
On the whole, we’re both really happy with how the rebuild’s coming along. It wasn’t ideal, having to make the decision to scrap our game and start over, but looking back now, after seven weeks we’re glad we did. It hasn’t always been easy – tutorials, which were numerous for Unity, aren’t widely available, and where they are, they’re normally for GDScript, which has made my decision to use C# a regretful one at times – but considering it’s only been seven weeks (seriously, it feels like it’s been at least twice as long as that) we feel things have progressed excellently.
I mentioned in our previous, game-related blog post that – due to the rebuild – it would be a while until we had something interesting to show off, and I was right. Now, though, I feel like we’ve overcome that hurdle and we’re about to get back to having more frequent and exciting updates again. Stay tuned, and, in the meantime, don’t forget about the new Kinoko Fan Club which gives you access to our daily Discord updates!