W.I.P. 2: Dogfight Thing

This is the work-in-progress for Dogfight Thing – a long-running project from two or three years ago. There’s a playable download for PC at the bottom of this post of the current state of the game which is exactly what is shown in the video – i.e. lacking a lot of gameplay.

Oh Dogfight Thing – how I wish I’d finished you. You never even got a proper placeholder name.

Dogfight Thing first started as a dabble with making something a little like Time Pilot – one of my favourite arcade games. It soon became an attempt to create the kind of simple dogfight game that was ubiquitous on 8 bit computers back in the day, or indeed as one game type of the classic VCS game Combat.

So I quickly knocked up a biplane model, because biplanes are brilliant (and it also gave me an excuse to give the pilot a nice flappy scarf). The first pass was a Sopwith Camel complete with authentic colouring and RAF rondels on its wings.

Before implementing player movement I then had to add some scenery so that you’d be able to tell you were moving since the camera would be tracking the player. I was reminded of one of the dogfight games on either my Vic 20 or C64 which had the player landing and taking-off from a runway, and remembering this fondly knew that my game had to feature the same mechanic so built an airstrip at the left of the map. The immediate thought was then if I’m taking off to start then so should the enemy, so I built another at the right, and this kind of cemented how the game would develop for a while – with two opposing forces fighting with the same tools.

dogfight001

 

With that in place I then got the player moving at a constant speed, and rotating to provide the nice loopy control method. However there was an issue in that if you perform a half loop then you end up flying upside-down. The old games used to prevent this by automatically performing Split-S and Immelman turns – half-rolling/half looping, but I didn’t want that because it would make full loops look strange, and there’s a lot of fun in just lazily looping the plane about. I briefly considered auto- half-rolling if the player stayed upside down for a short while, but that sounded nasty, so the only thing to do was add a button to half-roll. This solved the problem, but also added the ability to roll whenever you want which was a definite bonus. I later added trails to the wingtips when rolling turned out to be one of the things I liked doing the most (and indeed the ability to turn the trail length up to “Frankly Silly” in the options menu).

Adding the first enemy to shoot then brought a change of direction. I had a Sopwith Camel, so the obvious choice was to add a nice Fokker as the opponent, but at this point I decided I didn’t want to go there. I’d already got a nice blue sky with fluffy white clouds in place – this didn’t feel like the right place for real war. So I recoloured the player plane in nice bright red and made a blue copy for the enemies. At this point I decided that nobody dies in the game (pilots parachute safely out and toward the camera out of the 2d-plane that the game takes place on). I also decided that since the planes were identical that the people fighting were divided purely by their choice of colour – that was the only reason for the fighting (like the cat race in Red Dwarf). Further to this I then decided to try comic book style explosions, which I rather liked.

dogfight004

I think the art style was why Dogfight Thing never got a proper name. I usually like to pick a name (even a placeholder one) to help define the game and inform decisions throughout. I also like to find a nice font early on for the same reasons. The bright and breezy feel of the game possibly meant that this was less pressing here – it was the touchstone for everything else (when I added smoke trails to damaged planes I started out with white smoke that went black as more damage was taken, but this clearly isn’t a black smoke game, so I soon changed it for denser clouds of white).

dogfight002

Back to the name – I’d been toying with were really simple names like Super Sky Pilot, but never liked any enough to commit to. I tend to struggle with names for games, which is a little strange because I love naming things like achievements. But then you can get away with a pun or a cultural reference for those – they can be silly and throwaway, whereas I think a game name needs something more – it needs to be more robust.

The next thing I added was bombing and this played nicely too once I’d got the physics working OK, and with that I needed something to bomb, and this is when the idea to make the player a part of ongoing war came about.

The idea was to give both sides armories that would produce tanks and other vehicles which would automatically move toward their opponents airfields. They’d battle each other when they met, but the player and the AI could swing the odds by bombing the opposition tanks, in an attempt to allow them to capture the enemy airfield. A fair bit of work was done on this and I added things like spotter balloons and flak cannons, and had plans for zeppelins and bombers and additional ground vehicles.

dogfight003

But development was taking ages. Suddenly my simple dogfighting game now needed the best part of a full-blown cartoon war in it. Something had gone wrong – it was far too big. I called a halt and had a rethink.

A new plan was made – I shelved a lot of ideas, and decided to make it asymmetric. The player would be given an HQ to defend, and it was just them against the enemy army and air force. I’d make it level based with each level just requiring a certain number of tanks/planes and flak cannons to be destroyed. This was much more manageable and was still the plan when I stopped working on it (probably distracted by a new idea).

A couple of additional notes:

One feature I liked in this was the sortie score functionality. The idea being that after taking off any points scored were added to the sortie score, and kills and other feats would add to the sortie muliplier. The sortie score however would only get banked to the real score when the player landed to end the sortie – adding a real risk/reward mechanic to the combat – as the player started to take damage they’d be torn between banking the points and getting repaired, or staying out and risking the lot. Obviously without much in the way of threat currently it’s not really shown off to the full right now.

I’ve mentioned how the overall design spiralled out of control, but here’s a smaller example of feature creep. The spotter ballloons I added looked nice, and were fun to pop, but only brought a collision hazard to the game – nothing more. Yet, once in I felt it needed to be done properly. To that end if you burst the balloon the basket falls and the spotter parachutes down. The basket is shootable until it hits the ground if you’re quick. If you shoot the basket the spotter parachutes away, the balloon floats off, and is shootable until it gets too high. If you fly the plane through the cables in the gap between the basket and the balloon, you get a bonus, the balloon floats away, the basket falls and both are still shootable. If you shoot both you’d get a combo bonus. That’s a lot of work for something that is just an obstacle.

The thing that’s most noticeably missing is AI for the enemy planes. I was tempted to say I’m terrible at AI, but I’m not – I’m just really bad at sitting down and having a go at it. I want to do a really good job of it, and so I put it off to do a proper job of it later, and then never get back to it. The daft thing is much of the time you probably don’t know what’s going to work until you’ve tried something, and then it often becomes much clearer. I need to work on this going forward.

I would dearly like to return to Dogfight Thing, but I’m pretty sure it won’t pay my rent so I’m going to have to leave it for now.

Click here to download Dogfight Thing for PC

Click here for the XNA 4.0 runtimes