I'm working on an entirely new system for saving and syncing conquest games. It's currently in beta, and it's not certain that it will make it into the game yet, but I thought you might enjoy a dive into the why and how of it.
I'm embarking on an attempt to make multiplayer strategic conquest work in Airships.
First off, to be clear, this may well not work. I wrote the strategic conquest code without thought to making it multiplayer, which means I now need to try and refit it for this purpose. It's entirely possible that I can't get it to work consistently, or that performance or UX problems make the experience a terrible one.
Still, lots and lots of people insisted they really wanted this feature, especially cooperative strategic multiplayer, so I'm giving it a try. If, after a few weeks of work, things are still a complete mess, I will shelve the attempt.
I started working on this about three days ago, having formulated an approximate plan:
The next version of Airships will focus on improvements to troops. In this post, I'm going to write about the performance and pathfinding problems that large numbers of boarding troops face, and how they have been resolved for the next version.
I like writing about bugs in Airships. I don't want to present myself as some infallible rock-star Indie developer, because I'm anything but. Airships is a game for builders and tinkerers, and I have seen again and again that you like reading about its creation, warts and all.
So today we delve into The Mystery of HMS Longcat.
After a series of bug fix releases for dev 8, I am now making headway on dev 9 and its menagerie of monsters. In a previous post, I showed you the tentacle movement I implemented for the game. Now I want to show you how these tentacles are actually used by the Sky Kraken.
With Airships dev 8 complete, it's time to start creating monsters.
Monsters and pirates is what dev 9 is going to be all about. What sets monsters apart from normal airships is that they can have abilities that are a little more out there, that would be hard to give to players for reasons of balance or user interface.
One of these things is tentacles. Giant aerial kraken will descend from the skies and begin snacking on your crew as you attempt to fend them off. Now, Airships' graphics may not be the fanciest, but they do pay attention to detail. A fixed tentacle graphic swinging by would be boring: how about properly animated ones? I wanted to try, at least.
With dev 7 and its revisions complete, I am now fully engaged in working on the next major version of Airships. This time, the big addition is going to be monsters, and to make that happen I'm doing a lot of cleaning-up and restructuring.
All units, including the upcoming monsters - dragons, fleshcrackers, suspendium bees - are handled in-game as "a kind of airship" or "a kind of crew member". Obviously, buildings are just airships without lift and propulsion, and landships ones with an alternative propulsion system. I can reuse the code for handling a lot of stuff - movement, collision, shooting, targeting - for creatures as well. A fleshcracker is just a funny-looking small landship, an aerial kraken is just an airship with no crew and a special tentacle attack.
So what distinguishes the two kinds of units?
In between major releases of Airships, I like to work on things that don't require deep changes to the game's code but make the whole experience better. For version 7.2, I want to make the combat feel more visceral, which of course mainly means one thing: better explosions.
Modern graphics cards are complicated beasts. Treat them right and they're extremely powerful, but use them badly and you produce a lot of heat to no great effect. They like to do things in big batches: give them thousands of polygons in one go, and they're fast, but send them information piecemeal and they'll spend most of their time on overhead.
So why do computers that can run Skyrim on high settings struggle with big fights in Airships, a mere 2D game? The problem is that there's so many small things to draw: each module, each tile, each individually rotated limb of a crew member. Until recently, the game did this in an utterly inefficient way.
I've been hard at work on Airships dev 6, and have now fixed upon a release date for it, and for Airships on Steam: February 25. So unless anything goes majorly wrong in the next two weeks, that's when you get the fancy new version of the game.
Speaking of fanciness, I did a short video of the new heraldry that's now in, with a whole bunch more layout and symbol options:
Today brings both the release of Airships 5.3 and the start of the Steam closed beta for the game.
The next major version of Airships, EA6, will have support for multiple languages. Right now, English and German are supported, and I hope to also include French and Spanish. I have fairly limited resources, so I may not be able to afford professional translation to many languages. So if you want, you can help out by providing or verifying translations through this spreadsheet.
One of the nifty features of Airships is that you can create your own coat of arms. You can do this for your single-player empires, selecting a symbol (a charge) to give you a particular bonus. And you can design and register a coat of arms for your unique use in multiplayer. The system hasn't really changed since the initial release with the exception of a few added charges, but with dev 6 - the update of prettiness - I want to improve on what's there.
At the start of 2014, I'd been working on Airships for a few months, and the major components were beginning to take shape: ship design, combat, heraldry, even a simple strategic map and multiplayer. I'd been blogging about the game on my site and IndieDB right from the start, and the very positive response was a major source of motivation. Still, the game lacked much of a user interface, and the computer's ships just hung in the sky and fired, with no tactical AI to drive them.
When you start upgrading the visuals of your game, some parts start sticking out like a sore thumb. In this case, I'm really unhappy with the way damaged armour looks, so I'm going to outline a way to make it look better. This is a bit involved, but there is a really cool picture at the end...
In the first post on lighting, I got as far as adding unidirectional light sources to the game. The next step was to make the light directional, so things facing a light source would be lit up more strongly. To do this, the game needed to keep track of the direction of light, and not just its intensity.
Over the past few days, I've spent a lot of time going over Airships and improving it in terms of AI, speed, and bugs. The major highlight is that the strategic game should be more balanced now: AI empires make much better decisions in terms of what to build and who to invade. Also, I've eliminated inefficient code for crew shouts and firing angle calculations that were taking up a solid two thirds of CPU time - remember to profile, kids!
On top of that, there's lots of other improvements:
This week, I started working on dynamic lighting, which is one of the major planned features in the next release. The idea is that explosions, fires, etc. light up their surroundings. I also want to take into account light direction, so surfaces that are angled towards the light source are lit up more strongly. Like in real life!
The release of Airships early access 5 is scheduled for Tuesday, October 21. All that reminds is some final testing and baking the releases, and you'll get to play with the new features like ramming and boarding and sails. To bridge the gap, here's an overview of the new kinds of crew you can get, as well as two stories of ridiculous bugs I discovered in the last few days.
In the first three boarding posts, I've detailed how I built up the new boarding feature, adding the concept of crew existing outside of ships, and building each part of the boarding process. There's a final thing I really wanted to add: grappling hooks! Because they're cool.
In the last two installments on boarding, I covered all the phases of boarding except for how to get your crew across from your ship to the enemy's. The marines are able to leave your ship and hang on to the outside, and once on the other ship, they can enter and start fighting. What remains is the leap across.
I'm continuing work on boarding combat, which will be the major addition in the next release of Airships, according to the development plan.
Last time, I got to the point where air marines could teleport over to an enemy ship and fight the crew there. This disrupts the enemy ship's operations, with marines killing crew who would otherwise be busy firing at your ships. But marines should also be able to take over ships with enough effort. This was the next thing to implement.
I'm now getting started on airship-to-airship boarding, which is the major new feature in the next development release. With boarding, you can send air marines to enemy ships to disrupt them and even take them over.
Note: This plan file is outdated, and only here for historical reasons. This is the up to date one.
Let me get down to laying out my future plans for Airships. Right now, the game is still in the middle of development, and is not going to hit alpha for many months. Along the way, I'm going to add a whole lot of features, and the game's price is going to rise to $10 for the alpha, and then to $15 when we approach the final version.
My rough plan, subject to change:
Or: How I componentised the Airships UI to reduce technical debt.