Friday, 21 March 2014

Airship Dragoon BattleLog: Miracle Victory Unlocked

First up, let's get the blatant publicity out of the way.

Airship Dragoon is at 82% on Steam Greenlight and more votes are always appreciated, cheers!


Airship Dragoon Battle Log

With Airship Dragoon v1.4 released, I got back to playing my on-going campaign.

The Situation So Far:
Playing as the British Royalists (gor blimey guvnor, it's six bonger I say old chap, ilkley moor bar tat, ee-by-gum matey ...) I'd randomly started with a Dreadnaught Class Heavy Dirigible, which allows for a carry capacity of 15 troops (yay!) and a move range of 2 hexes (not yay ... ). I'd expanded territories quickly, before suffering a defeat in which I lost my top officer and a number of other veterans, and my dirigible had been kicked all the way back to my original fort. This rapid expansion had brought me into contact with the dastardly forces of the People's Collective (a mystery, wrapped in an enigma, placed in a box, thrown in a sack, burried in a churchyard under a new moon on Saint Crispins Day ...). They too had the advantage/disadvantage of a Dreadnaught class airship and had started to chip away at my more undefendable conquests near what I presumed was their main garrison. After swallowing up a number of my resource rich but population low arid hexes, they finally came into a temperate environment where I had the chance to deploy a few more troops against them.

Anti-pirate operations were about to be suspended as the distant enemy Dreadnaught came into view

Whilst my selection of veteran defenders wasn't anything to write home about, I did have one thing going for me and that was the weather. It was stormy, with low visibility and the majority of my available troops were of the close range class. This meant that they could return fire during the enemy's phase if a target of opportunity walked into their sights, and the poor weather would prevent them from being picked off at range.

 Not exactly the world's greatest elite shock troops :/

I equipped all Fusiliers with semi-auto light carbines, the lone Grenadier with a heavy semi-auto rifle, and the Recce and Militia Conscript with standard rifles. Every stocked up on grenades and health kits, and light armour was issued to all except for the Conscript. And with that, Sergeant-Major Kai Lancaster led his men out against an enemy force nearly 3 times larger.

Take the high ground and peer through the storm at the enemy objective

The enemy had established themselves on my territory, and so it was the job of the brave chaps of King George the Gouty to go forth into the raging storm and capture their flag. Moving quickly to take the high ground midway from the objective I could survey the terrain ahead and decide upon my tactical plan. It was pretty simple, move forward cautiously, Sergeant Archiblad Devon (Recce) on point to scan for enemy booby traps that the others may walk into unseen, keeping an arc of close range Fusiliers around the others for reactive fire protection and move down and use the hedges as cover.

Contact! Contact! Twitchy Bum Time!

No sooner had I started to move down the hill as there was incoming fire from a lone defender to the front. What appeared perfect time to blood my lone Conscript in his first ever battle proved otherwise as he emptied his entire magazine without scoring a hit. Sergeant Lesley Sheffield (Fusilier) records the mission's first kill. Moving slowly forwards in cautious mode Sheffield encounters and kills another defender without reply. Things going nicely.

Setting up an arc formation of close range troops ready for anything.

Moving down to the base of the hill I establish my defensive arc of Fusiliers and am about to set off for the cover of the hedgerows when all hell breaks loose. Sgt Major Kai Lancaster comes under heavy fire from from the centre with one round ricocheting off his armour and another lightly wounding him before green tracer of a heavy sniper rifle comes rushing down from the hill to the left flank. Sergeant Les Sheffield bears the main brunt of the attack from the right flank with scores of red tracer from light rounds landing nearby.

Lance Corporal Frederich Norfolk finds himself somewhat in the crossfire of all of these missing bullets, and though not actually hit panics, spraying bullets into the mist. Devon returns fire scoring a kill and Dick Scarborough finally gets into the action, winging an opponent who flees into cover. Les moves up only to come under small calibre automatic fire and responds by wounding his opponent. Conscript Weymouth continues to squeeze off shots with nothing to show for it. Sgt-Major Kai Lancaster, the expedition's imperious leader, fails to hit back and then fails to make it into cover. Everyone seems to be using a lot of ammunition up ...

... but it looks like it's working! The enemy to the centre flees and those to the flank panic enmass, pouring a huge amount of mostly innaccurate fire over the heads of my troops. Mostly inaccurate as both Les and Devon are struck by stray rounds. Deciding he's had enough of this, Les jumps to his feet and flees back up the hill to safety.

Break out the Aid Kit, it's where I keep my hipflask!

Wounded but still going, Devon moves up, wounds another defender who is in turn finished off by Scarborough. The enemy still seem to be in somewhat of a panic but large calibre rifle rounds keep coming down from the hill to the left flank. Norfolk has regained his composure enough to spray the hill with suppressing fire whilst Lancaster leads  a lone charge up the side of sniper hill. Conscript Weymouth tries to get into the firefight but continues to be unable to hit a bull in the butt with a bazooka, drawing automatic weapon fire his short lived advance turns into a route and he flees in panic.

 Cover! Get into cover!

Automatic light machine gun fire suddenly erupts from sniper hill. Norfolk returns fire with his large calibre semi-auto rifle, scoring a headshot on the fraction of the gunner that he can see. Nice shooting, Tex! However he is now worryingly down to just 15 rounds ...

Les patches himself up with a health kit before returning to the action, whilst Devon scores more hits on enemies to the right flank causing them to flee in panic. All the time Scarborough moves up unopposed and gets into the cover of the hedgerows, just short of the enemy flag.

Boom Headshot! End of the threat from Sniper Hill

Lancaster makes it to the top of sniper hill, ending the threat of the large calibre marksman with a nicely placed headshot. Everyone else presses forwards into the hedges where Scarborough waits, ready to launch the final assault. Which is just when an enemy walks around the corner and Scarborough shoots him dead at point blank range. Nice reactions there, sonny!

 Tip-toe ... through the hedges ...

Lancs moves along sniper hill and starts his descent to the flank of the flag before coming under fire, his armour stopping a bullet. Heavier incoming fire penetrates his armour though, and he turns and flees. Norfolk decides on a fast assault, but spotting four enemies camped near the base of the objective, he wounds one before withdrawing into cover. Sheffield moves up to support the attack and records his hat-trick, killing the defender who had wounded Lancs.

'Ave it!

As the enemy attempt to pursue the fleeing commander, they cross into the line of fire of Scarborough and Sheffield who pour down numerous volleys before Sheffield finally kills one. As Conscript Weymouth rejoins the battle after his soiling his briches in panic, Norfolk takes the opportunity to fire upon the now routed enemies. In utter disarray the enemy panics, fleeing, shooting wildly and at this point I decided it's about time Weymouth actual did something useful. Pulling a frag grenade, he pops the pin - hoping that no one is still lucid enough to shoot him before he has chance to throw it - and launches an assault on the enemy flag.

Weymouth always tried to look nonchelant immediately after murdering someone with a grenade ...

With the enemy truly routed, Weymouth takes the chance to record his first ever kill with the grenade before moving over to capture the flag. And the battle is mine! With no fatalities amongst my troops ... which ... was a surprise. Weymouth was promoted to Sapper class as a result and became one of my team's core veterans.

Achievement Unlocked!

A miracle victory! Which is also an unlockable achievement ... which was nice. :)

The victory really came about from a variety of random factors. The weather was one of them, with the view distance reduced my troops were safe from long range fire meaning that I could move towards the objective unhindered. Randomization of previously promoted conscripts had given me a glut of Fusiliers, making my choice of veterans unnaturally balanced to the short range class which was perfect for the reduced visibility. Armour repeatedly saved the lives of the troops and the final factor would be luck - there was an enormous amount of incoming fire which struck the ground at the feet of my troops, or flew just over their heads.

Promotions for everyone! - except the boss who gets shrapnel picked out of his arse ...

Sunday, 16 March 2014

The 7 Day RogueLike Challenge 2014 - Post Mortem - Post Hangover

I sit here with a mug (Royal Denby no less!)  of green tea and citrus, the only chocolate biscuit I can find in the house (jaffa cake no less!) and a hangover ... reflecting on my entry for the 7DRL Challenge and ProceduralDeathJam

I wanted a 3D isometric open world roaming brawler.
It might be quicker for me to list the things which went right over what went wrong ...

The isometric camera system was easy enough, mount it on the player and then set the player as the control object.

The control system was much more of a pain. My first attempt was somewhat of a broken mess and I eventually settled for a simpler and somewhat hacky script based solution - the sort of thing which I would avoid like the plague in a real game.

The stealth system is a bit of a broken mess. It was working fine but it looks like the last minute changes I made before uploading might have broken it. Fortunately I made sure that the player can outrun the Ai.

I had wanted the rooms to be made up of individual tiles and each tile to have a random shade which would then correspond to the stealth rating. This turned out to be horrific for performance, mainly due to the number of meshes (1600) being subdivided into 9 or more objects ( over 9000!) and I hadn't LODed anything to save time. This idea got cut and the new radius based function was created using the lights to give the player a visual reference.

I had wanted different coloured meshes to portray different environments ... but there was never the time to do this.

Combat works nicely, though I didn't have the time to add in impact effects and audio so player feedback on whether an hit has been landed on an enemy is missing. Light and heavy attacks work fine, with heavy attack doing x3 damage but taking much longer to execute than light attacks.

Animation was a bit of a pain and took way longer than I had expected, eating up a full day for what I had originally though would be a couple of hours.

Procedurally generating the world also proved to be more of a pain than expected but eventually I came up with an algorythm which minimized the chances of orphaned areas. It generated the 2D map and the 3D world at the same time.

Objects where then randomly placed which was easy enough. It's completely possible for a world to generate with no objects and no enemies - just very very very unlikely. The bonus system for objects works nicely, increasing damage for kungfu and staff weapon, giving the player a reason to seek out objects and switch between weapon types. There's also plenty of heals.

Enemy Ai works well enough -  a little too well when it comes to spotting the player as stealth isn't working correctly. The one thing I didn't have time for was decent pathfinding and so there is no real wandering about on their own. As a last minute change I made them slower than the player so the player can escape. I was going to use many more enemy models but cut them back to just the the 3 classes to save time. The randomized uniform textures work nicely though.

The 3 classes give the player some choice of play style, though stealth class is reduced to speed class as the stealth mechanic isn't working as accurately as it should.

The additional randomized quest mechanic was dropped as there was never enough time to do it ... which is a bit of a shame as it was going to measure player progress. Instead I used the items, rooms and kills mechanic to create high scores.

All in all it works as a game, which is at least something. And I am relieved that I managed to ship a game in my first ever game jam.

Play it here:

Stuff Used:
  • Engine: Open Source Torque 3D (off github)
  • 3D: Blender
  • 2D: Gimp
  • Character Models are being reused from my existing indie game “Airship Dragoon”.
  • Animations are to be taken from existing libraries I have licensed.
  • Some audio will be taken from existing libraries I have licensed, the rest will probably be badly created in Audacity.

Monday, 10 March 2014

Progress 7DRL Challenge 2014 Update 1

Progress! There has been progress! ...
.. or alternatively I've gone mad and am halucinating it ...
... which could be possible, there was a reason that I'd never done a gamejam thingymajig before and that was for the exact reasons I've encountered.

Too much to do in too little time and everything going wrong ... so ... just like normal indie dev then! ;)

First up I created a new control system ... and it promptly died on me. This put me way back on my schedule - and that's without annoying IRL to also contend with. Creating an isometric camera system with zoom in/out went easier though, as did knocking up 3 classes of player for stealth, fighter and tank.

Having just pushed the v1.4 release of Airship Dragoon out of the door, I hadn't had any prep time for #7DRL and #proceduralDeathJam so it was very much going in from scratch. Procedurally generating a world/labryinth turned out to be a right old pain le derrière. This was mostly due to getting orphaned sections. Eventually it all came good.

Then there was a few minor problems with my models. Performance was terrible so I LODed it right back ... maybe I just should have LODed it at the start ... and then it's not like they'll all be visible anyhow but hey ... 

After a bit of tweaking and realigning pathways I had a 3D representation of the procedurally generated 2D map. It had taken the whole day when I was hoping for MUCH less, but at least it's now done.

If you really squint you can see the tiny player front and centre.

So, next up ... I might go back and spend more time trying to fix or just recode the isometric control system ... or I might just wade on with objects, items and Ai, next. Unfortunately I'm busy tomorrow so aren't expecting to get much done.

Friday, 7 March 2014

7DRL Challenge 2014 - Airship Dragoon Rogue

 I'll be taking part in the 7 day RogueLike Challenge over at

3D isometric procedurally generated open world roaming brawler with permadeath ... there probably should have been some commas in there ...

I'm Steve_Yorkshire an indie dev who has spent the last 2.5+ years making Airship Dragoon [blatant_self_publicity]Greenlight Votes Appreciated[/blatant_self-publicity] which is an X-Com/UFO/Julian_Gollop style steampunk turn-based tactics game featuring procedurally generated campaign worlds with tons of randomization and emergent gameplay.

I've never entered a game jam before, but having just shipped the v1.4 update of Airship Dragoon this week, I figure that "a change is as good as a rest". I've had an idea for an open world, procedurally generated, roaming brawler for a while, and so intend to use #7DRL as the impetus to knock out a tech demo of the idea. I'm going to reuse my character models from Airship Dragoon, and hence came up with the rather obvious title of Airship Dragoon Rogue.
Key Mechanics:
  1. Procedurally generated world made from modular meshes.
  2. World fully resets on player permadeath.
  3. Enemy Ai.
  4. 3 classes of player/Ai: stealth, fighter, tank.
  5. Randomized placement of items, weapons and enemies.
  6. Light and heavy attacks. Heavy attacks force the player to stop, light attacks can be used whilst moving. KungFu does more damage than weapons, but weapons have greater reach.
  7. Stealth mechanic with randomized "shadow" areas, why put yourself in danger when you can sneak by?
  8. Additional randomized mission based objectives given by friendly Ai (steal itemX, assassinate enemyY, got to placeZ)  which fill up a percentage bar to complete the game.
  • Engine: Open Source Torque 3D (off github)
  • 3D: Blender
  • 2D: Gimp
  • Character Models are being reused from my existing indie game "Airship Dragoon".
  • Animations are to be taken from existing libraries I have licensed.
  • Some audio will be taken from existing libraries I have licensed, the rest will probably be badly created in Audacity.
I will probably also submit the result to the #proceduralDeathJam - I'm more interested in using the time to create a techdemo than prizes/glory.

Anyhow ... that's the concept ... and we'll see how it goes over 168 hours.

Thursday, 6 March 2014

Airship Dragoon v1.4 Released!

Airship Dragoon has been updated to version 1.4! 

The hardcore, oldskool, GollopLike has had a massive update. The changelog is here!

Airship Dragoon is on Steam Greenlight! Votes very much appreciated!

The much requested map is now a thing! This displays spotted enemies and trooper information by mouseover and clicking on a trooper icon makes them the controlled character. No more scrolling through all the troops to select the guy you can see out in front.

And now there's motion captured animations including 26 death animations for a nice variety of having troops throw themselves to the ground in various spectacular and painful looking ways.

Here is a quick video of me explaining some of the fine points of the update. Apologies for the audio quality of my microphone, it's terrible and I think I need a new one.

It's a huge update which removes much of the hardcoding of objects to enable Airship Dragoon to be full modded. Everything can now be changed or tweaked from the damage weapons do, to the actual character models, to the names of the factions and their flags and icons. Full documentation on how to mod Airship Dragoon will be released shortly, and will include video tutorials. A map editor for creating your own levels will also be released.

And here's all 26 of those death animations!

The update is HUGE so there is no patch file this time. Simply redownload and install over the current version which you are using. Your saved game files will be safe! Which is nice ... :)

Note: The Desura version can take a few days to update as it goes through their system, but everywhere else  is live now.

Class based textures


And as said at the top, Airship Dragoon is on Steam Greenlight, and if you use Steam, voting for Airship Dragoon would be very much appreciated!

Here's how it currently stands.