It’s been a long time since I’ve written a blog post. Several things have slowed me down since then. I’ve developed pains in my hands and arms – not constant, but regular – that have often made it difficult to keep working. When I was able to get work done, I’ve often taken on more outside contracts to keep money coming in. I haven’t stopped work on Balloon Platform Defense altogether though, but what time was available for it was always focused on actually adding features rather than making them presentable. And I’ve been acutely aware of how out-of-date was the currently uploaded version – every time I applied for some programming work, I’d link to this game as an indication of what I could do, while having mixed feelings about doing so because it was old and buggy, which was a constant reminder that anyone who had subscribed for updates hadn’t had any in over a year!
Those problems mostly started a month or two after releasing the early-access version spoken of in my last post. I noted in the last paragraph of the previous post that sound effects were added in the following week – in fact, so was some music, and some particle effects for when balloons were popped. Since the first introductory level featured a bunch of basic red balloons waiting to be popped, bits of red rubber burst out. This meant I received a complaint about blood splurting all over the place in what’s supposed to be a family game. It seemed pretty clear to me. I also added the capability for characters to wrap around a level, whether horizontally or vertically. This continues to be a pain every time a new feature is added, whenever distances between objects are relevant to game logic in some way, it can always be thrown off by the metric of a wraparound level, until the code has been really carefully written to take account of every circumstance.
In the next half a year or so I added the occasional feature, but mostly I was working on outside paid projects. I made a more functional GUI system and a cloud shader to finally get the clouds visible through the windows looking decent. I had always intended to come up with a way of making ropes between balloons, or between balloons and players, and eventually after learning a lot of extra math, I figured it out – but didn’t end up doing anything with it besides testing it at this time. Following that trend, I also wrote a routine to guide certain balloons toward the windows for a greater challenge, and haven’t used it so far.
Another thing that had always been intended was to give the simple round balloons proper round collisions. Of course, although they are usually circular, they can be squashed at any time, so they can only be generally defined as ellipses, and the math for elliptical collisions took a while to work out. While I could find routines online for simply determining whether two ellipses intersected or not, I needed to know how much force they should exert on each other and in what direction, which meant writing my own routine. While this has worked well in Windows, the browser version currently has to stick to rectangular collisions, or else it gets slowed down drastically.
The pain in my hands was particularly bothering me when playing games, and I thought that it would be easier to try new level ideas if an AI player could do the playing. I didn’t realise how long I would spend on this – it’s a good thing to have learned for the future, but was a lot of delay at the time. But while it’s not visible in the game at present, I think the AI players will make it into the finished game, at least into a multiplayer mode, so this won’t have been wasted time.
Wanting to add some more interesting level features, I tried to start improving the level editor – adding the capability to place balloons inside other balloons like crates. (The crate had been drawn ages ago, but never used because the level editor functionality to put anything into it would be the hard part.) Also added was the ability to change the size of windows, and to put the ropes between certain balloons. Again, so far, these features haven’t been implemented on any levels.
In time for some friends coming round one day, I added a quick party game, in which you have a balloon tied to you with a string, and must pop the other players balloons before they pop yours. This is only one of the five party-style rounds that was available on ‘Balloon Party’ game made previously from a previous version of the game with different physics and graphics – I’ll at some point replicate the other party games as well.
Finally, yesterday I released an updated version of the game – it’s a bigger file, but apart from a few bug fixes, very few improvements are actually visible. The elliptical collision isn’t used in the online version, the AI isn’t currently used, neither are the new level editor features, so the main changes visible are improved clouds through the windows, the party game, and the fact that the game can be played with 4 players (although the controls are a bit awkward, unless using the Windows version). But the other improvements are in the code and waiting to be made visible, and shouldn’t be too far away now.