Possibly the biggest challenge in the development of Azimuth Skies, besides making the ship construction accessible to a non-modding player, is organising the weapons and how they will be controlled/fired. The system in Iron Skies presently is a simple enough evolution from Battlefield-style games where you simply switch between several turrets and fire them like a First Person Shooter. The big complication is in the custom ship structure; there has to be a simple way that shipbuilders can group and setup their turrets without bogging the whole thing down. I could just make things easy on myself and go for a system where turrets are placed on ‘hardpoints’ on sections, but that’s just too tired and limiting for my taste! So now I find myself in crazy territory, as not only are all the components of a ship in Azimuth Skies able to combine in any configuration, but the weapons can be wherever you can fit them in.
And just how do I define where things do and don’t fit, anyway? Well you shall see later when I get into the shipbuilder with a little more gusto. Right now my priority is making a skirmish mode type thing that’s actually got some solid gameplay behind it. It’s all just too unstable at present.
And so we come to my current task. The Weapon Group system evolved out of the need for organising varying numbers of turrets in varying directions with as much automation as possible. The ship’s creator places the turrets on the ship first. Then, they select all the weapons to be in a group together. This then creates a Weapon Group, say Group 1. These form the basis of your combat gameplay.
Pressing 1 takes the player to that group. This will attach the camera to an invisible object in a set place on the ship, the group viewpoint. The camera will pivot around this point. It is then offset by whatever Vector3 is specified, and a Crosshair is created in a straight line, at a specified distance from the group viewpoint (parented to it, like the camera). Thus, when the player moves the mouse, the group viewpoint rotates on the relevant axis and the crosshair points in line with it. Meanwhile, the group instructs all the turrets that are listed as a part of it to track that crosshair object. Rolling the mouse wheel will change the range of the crosshair +/- 50%.
The result should be a turret system that doesn’t suck! I’d like to illustrate more graphically, but I’m pressed for time and I think it’s probably better spent actually solving the problem. Wish me luck.
EDIT: Webplayer update posted! It’s still rough as hell, but it’s progress!
Well I really wanted to post a new version of the Azimuth Skies web demo this evening but it just doesn’t look as though it will be happening. Lexbox (that’s PC#2) got malware infected somehow at the weekend and I spent most of this evening fixing it to retrieve some files back… that, and apparently making oneself a chilli takes two hours. At least I assume this to be the case, short of someone tampering with the number of hours between 7 and 9.
So I shall round up the basic features coming in the next build and thereby force me to include the new webplayer tomorrow:
- Re-Re-RE-enabled damage on skyfighter Machine Guns, but this time they don’t push objects around and are working properly. Big thanks to the folks at Unity Answers for helping solve this one some months back.
- Airships have AI, that can move the ship to any given location. So they’re almost to the point where they’ll start shooting you (might even be, when I post the update)
- Put in a ‘debug’ reload zone for skyfighters
- Pressing ‘v’ will toggle Invert Y for skyfighters (till I put in a menu)
- Ships can now spawn, on a somewhat limited basis
- Sinking works properly, and ships tilt with their motion up/down
- More damage effects
- ADDITION: Ships now shooting each other, although they are crap shots
A lot has been going on recently. Partly due to the holiday season, partly due to a foul little piece of malware corrupting my windows installation and effectively wasting a week. However, much has changed since the last webplayer. There are more ships, they are more sophisticated, several things have been fixed and I really only have AI left to do (and some sounds) before the core gameplay model is complete. Check out the Webplayer above to give it a go!
Perhaps the biggest change has been of name. For the last four years, this project has been known as Iron Skies. A name I came up with for the incarnation that was my university project, I decided to change it in light of the Finnish indie film of a very similar name.
My game is now known as Azimuth Skies. Seeing as the name of the world within which it is set is Azimuth, this seemed like an obvious choice. I also toyed with the likes of Azimuth Wars and Azimuth Air Battles, but there really is (or at least, will be) more to the game than just combat.
For the uninitiated, Azimuth is “an angular measurement in a spherical coordinate system”, such as a compass bearing. It is also a term found in artillery, meaning direction of fire. So now you know.
From now on I will be streamlining the devblog a little. The webplayer will now be in one place, (on that top bar up there), and I will continue to update it, commenting on updates from time to time as entries here, so feel free to check back occasionally. Here’s what’s in the latest version:
– Ship’s guns now present and working; the first ship has a single forward cannon for you to play with
– Skyfighters added back in. With their new and shiny flight model that’s almost complete.
– Ships can ram each other! Collision causes damage finally, something the old version never got around to having. The damage model will change too; I want some components to leave behind a ‘shell’ of wreckage so that you don’t get weird gaps when a central system (like the hull) is destroyed. A hierarchy would be another alternative, but I want to make shipbuilding as simple as possible.
– Some targets to shoot at. Both the skyfighters and ship cannons can take em out. You can even ram the crap out of them.
As a final note, I am considering a new name for the project. Since my first version way back in 2006, a Finnish film studio has been working on Iron Sky, a movie about space nazis. I’ve known about it for a few months now, but the fact is it’s inevitably more publicised than mine and to continue using such a similar name is only going to cause me trouble later on. So if you have any ideas, feel free to suggest them!
At the very least it might prevent confusion around the fact that I’ve started again from scratch…
So it’s been a while since the last one due to all manner of things, but I’d like to tell you what I’m now working on. The Airship / Component system is at the heart of the game’s mechanics and I’ve given it a complete overhaul.
Play the Webplayer Test
- Controls: WASD move the ship; Left Shift / CTRL to ascend/descend; Right Mouse Drag to move camera and Left click on a ship component to open its properties.
What do I know about the Crunch? I haven’t even been to the Crunch. But I have been pretty busy, working toward a playable demonstration of Iron Skies.
If you use Unity, I highly recommend checking it out…
But as everything is a bit all over the place, I’d like to share a link with something that promises to be useful not just for this project but anything else I do with Unity: iTween. Okay, bad name; but a fantastic set of tools. It was written by an independent developer (nothing to do with Apple) and put basically is an extension on Unity’s functionality to make changing something from A to B both easy and powerful. All that needs installing is a static script, slapped into your asset folder. Coupled with how painless Unity is already, the result is possibly the best thing in the world you can get for nothing.
On a computer.
Well it’s been a while since I’ve posted, my excuse being no better than the usual guff about being busy and overworked and maybe a little hungry. Progress has so far been great, but the amount there is to do to meet my original aims is vast.
Today I decided that a working single player game was better than an unworkable mess of a multiplayer one, and for this reason I’m going to postpone the network feature of Iron Skies for the time being. I’ve done some trials with Unity’s networking and come to the conclusion network code is a bit hard.
Unless you’re a programmer or a particularly savvy designer, network games don’t work how you think they do. I liken a multiplayer game to a play on a theatre. In split screen, all the audience sit in the same theatre watching the same actors portray the same play. But in a network game, each member of the audience are in completely different theatres, with different actors, who are attempting to stand in the same place on the stage as all the other versions, and who’s only means of doing so is phoning up all the other theatres every couple of seconds to ask who’s moved and where they are now. Oh, but to keep it looking convincing, the actors ought to guess where they’re going to be and just adjust if they’re wrong about it.
A balmy-sounding analogy, but one that begins to capture the apparent inanity of networking. When coders say that adding multiplayer is a lot of work, they don’t just mean “oh I have to write a big file on the end here and some of the words in it are long and difficult to spell”. It is something that will totally change the core workings of your game code. The way everything talks to each other: picking up items, throwing objects, even movement; it all needs to be not just re-written, but often re-thought out.
I suppose this doesn’t sound like the ideal thing to leave out for later. It wasn’t an easy decision, but I don’t think the nightmare pandora’s box of online play is something I want to unleash before I even have a demonstration of gameplay. I will certainly want networking at some point, but it is easy to forget just how much work it requires.
So yes… Iron Skies 2.0 maybe?
One of the great things about Unity is its versatility, most notably that it runs in a browser. The Webplayer version builds from the exact same project as the Windows or OSX download does, and the plugin to run it is one of the easiest, most automatic things I’ve ever downloaded. Now, Iron Skies may end up a little too much for browser play, but this also has the interesting advantage of providing actual playable demonstrations to the devblog!
Launch Skyfighter Test
This demo has no gameplay yet I’m afraid, it merely demonstrates skyfighters: the little aerofoil craft that can swing the tide of battle. While this isn’t a flight sim and is mainly about airships, I have been tweaking the skyfighter controls relentlessly and have just overhauled them again. The basic movement and control mechanics are important to nail down for all player-controlled craft, and that I’m not too far off now. Once it feels good, I can start getting into the gritty detail of combat and gameplay.
Welcome to the first of the development blog posts for my game project, Iron Skies!
So first up, a bit about what Iron Skies is. It started out as a university project in Blitz Basic 3D, circa 2006. In 2009 I decided to make a completely new version from scratch in the fantastic Unity3D game engine.
The game is based on my much-talked (but so far still public-elusive) Cloudgazer universe. You play an airship captain, able to take command of anti-gravity battleships and nimble skyfighters, in a battle for supremacy of this groundless world. The cool thing about the game is that not only can you fight naval style real-time aerial combat in all manner of craft, you can actually build the airships yourself using a component system. This same system even allows damage to be taken based on hit location, and your ship’s stats in every attribute depend on the condition of these components. Shoot up someone’s engines and they’ll be reduced to a crawl, and even sink them by destroying the antimass tanks: provider of lift!
The current stage of the project sees me finally having a set of almost finished airship components in Unity, which have been compounded into a ship that can be flown about. You can also switch craft at this stage, which is an odd feature to see this early (especially as it probably won’t actually feature in the gameplay). However this helps debugging no end, and also ensures proper separation between Player and Craft in the code, aiding both AI and multiplayer architecture.