Archive for the ‘Game Development’ Category

Shadowhand Dev Diary #22: Story, item drops and loose ends

Friday, September 1st, 2017

Click here to wishlist Shadowhand on Steam!

It’s been a busy week. Helen and I have been finalising more design decisions and editing more text, and I’ve been coding a bunch of small loose ends in between our meetings. I’ve also been balancing the chapter goals and game economy but more on that in another blog post.

Training Level Dialogs

The image above is from a pre-duel dialog from Chapter 5 in which you get to do a spot of fencing with an expert. Some enemies also have a post-duel dialog if they need to say something important when you defeat them. We spent a while writing the text for dialogs and making them all trigger at the correct point in the game.

(Click image to enlarge)

Story Editing

We also went over the story for Chapters 1-6 to make sure that the conversations flowed naturally and the plot was clear. This was a surprising amount of work but the end result is much better.

(Click image to enlarge)

Item Drops

I also added in item drops for chapters 6,7,8. There are several types of item drops:
- Story item drops that occur as a result of talking to another main character. The image above is a story item drop from a robbery!
- Enemy item drops that occur after you beat an enemy.
- Shop item drops that occur after you complete a chapter. These are items you can purchase if you have enough gold.
- You can also pick up items from bomb/potion crates on some levels.

Loose Ends

I’ve been ploughing through lots of loose end tasks and have reached the end for now which means I can get back to main features in the coming weeks. These aren’t polish items, just small things that I made a note of before to finish later, or things that cropped up as a result of testing and design meetings.

- Some code refactoring (always fun! I’m not being sarcastic, honest.)
- Finalised some design decisions about the game economy and earning gold.
- More design questions answered.
- Showed 2 star goal on level end screen if you don’t reach it, and showed 3 star goal if you manage to get 2 stars.
- Players can no longer keep earned gold if the fail to meet a chapter’s goals in Normal mode.
- Fixed simultaneuous defeat issue with killing training dummy on final turn.
- Level end screen: Enemy loot now shows as 0 if you don’t win the fight.
- Made sure gold shown on loot cards is same as enemy’s gold.
- Gold card image is now dynamically set based on enemy’s gold value.
- Fixed automated AI test run gold output ready for balancing the game economy.
- Made Chapter 6 card with coachman image.
- Made sure enemies with no throw anim don’t try to use bombs.
- The “new item” icon won’t be shown for each additional consumable if the player has already seen it before. I had to save this information in in the player profile to make sure it persists between game sessions.
- Fixed possible exploit with undoing a card that has instantly charged/poisoned a weapon.
- If you have two counter attacking weapons now either can counter attack instead of just the first one found by the code.
- Added a restart hand button to the in-game menu after doing a Twitter poll and discussing it with devs. 75% wanted a restart button!

I’ll make another blog post soon about the balancing I’ve been doing and the metrics system I use for beta testing.

Shadowhand Dev Diary #21: Puns, editing and testing.

Thursday, August 24th, 2017

Since the last post I’ve made a bunch of small changes and have worked with Helen to add new text to the game and edit existing text.


I’m a dad so naturally I like dad jokes and puns, and I like to get a few puns into my games. Also Helen is great at wordplay due to being a writer and editor for 20 years, and she came up with some classics for Shadowhand.

Above you can see the Gravedigger in the game, now named “Doug Hole”. We also have a drunkard called “Earnest Swigger”, which makes me chuckle in an easily-amused manner.

Haste Icon

We needed a decent icon for when the player is hasted and I had a list of standard ideas such as 2x, fast forward chevrons, clocks/hourglasses, lightning bolts etc. but then Helen suggested we use a Triskelion/Triskele, which is kind of cool, and so we used that instead.

Brutes Brew

Several potions in Shadowhand are alcoholic and although they give you an initial boost they also have a detrimental effect after a few turns by slowing down your weapon charging.

The image above is of Brutes’ Brew which boosts your chance to stun (with an appropriate weapon) to 100% for 3 turns. It was 50% for 5 turns but after some testing we changed it to 100% because it gives the player a guarantee of getting a stun, providing they can hit the enemy.

Combat Stars

For puzzle levels players earn stars based on how many cards are left on the tableau at the end of the hand – the same as in Regency Solitaire.

However, for duel levels player earn stars based on how quickly they defeat an enemy. Hovering over the enemy will show a pop up with the star goals. The image above is a tutorial explaining this early on in the game.

Optimising Automated AI testing

Having recently done a ton of duel testing in order to balance the bombs and potions in the game I was getting annoyed at how long 500 automated tests took to run – sometimes they took 5 minutes depending on the complexity

So I spent a bit of time optimising the test runs and managed to speed them up by at least four times! This means that the AI can now do about 20 fights per second which will greatly speed up my future weapon/outfit tests for balancing.

The main optimisiation was simply not drawing anything during the tests. This meant the game could skip Vsyncs which were holding up the simlulation by up to 17 milliseconds every time the player or enemy performed an attack.

Other optimisations included further reducing the length of some animations to the bare minimum time where they still correctly trigger vital code when they finish. Also I preloaded in some dynamic images for items that keep getting destroyed and recreated. The preloading won’t happen in the release version as I need to be careful with VRAM use.

Other thangs

We did a bunch of other bits ‘n’ bobs too:
- Edited character stat panel text to make it clearer what it means (hopefully).
- Edited some card text for clarity.
- Tweaked AI so it uses attack potions more intelligently then retested all relevant potions.
- Tested using Undo after a card drop offs the tableau due to the player’s “Lucky” stat, and made sure that lucky cards don’t mess up the tutorial.
- Made new post-duel dialogs for several enemies (image + text)
- Renamed some story characters for political reasons! The world has changed since we originally named them.
- Added support for enemies to have the same graphics but different names and stats.
- Charged Tartan Kerchief to give percent-based boost to health potions instead of a fixed number.

And that’s it for now. Back soon!

Shadowhand Dev Diary #20: buff tooltips, weapon updates and more

Friday, August 18th, 2017

We’ve have a busy few days sorting a bunch of loose ends and also answering some design questions that had piled up. Basically I’m trying to clean off a bunch of quick tasks that are cluttering up my todo list. Here are a few examples:

Buff and Debuff tooltips

The game already had tooltips for separate stun, bleed, poison and haste icons, but there were no tooltips for general buffs or debuffs, just a green or red arrow icon.

So I finally coded proper tooltips that list all the current buffs or debuffs (see image above). There are up to 6 possible debuffs and 9 possible buffs, though it’s highly unlikely you’d get them all at once. However, I did need to code a tooltip that can change size depending on how many lines it needs to display.

Firebomb Blunderbuss

This weapon is based on a real naval weapon that Helen researched. In the game we finally decided to make it 100% unblockable fire damage instead of part normal damage and part fire damage as that was overly complex. It’s a late game item and is pretty cool.

Smoke Bomb

Originally we had a cool idea about using the smoke bomb to cover up some of the enemy’s cards in smoke. However, this was going to take too long to code and because it should only last one turn so that the cards aren’t covered up on the player’s turn, it meant that it wasn’t going to be much of a hindrance.

So we repurposed the item to increase the number of cards the enemy requires to get a combo. This was pretty easy to code as we already have a potion called Clarity which reduces the number of cards required to get a combo. Also I made sure Clarity cancels out the effect of Smoke Bomb and vice versa.

Bits and bobs

I also did a few other things such as:
- Made floating text that says “Resist Alcohol” for when an alcoholic potion takes effect but your character manages to resist due to having the Sailor’s Trousers outfit item.
- Tweaked the enemy AI to use attack buff potions when their weapon is charged or nearly charged and not to waste them when they have uncharged weapons.
- Made soap always disarm the other weapon if the first one is already disarmed.
- Improved inventory management so that when you drop an item on the inventory it doesn’t pointlessly scroll if the item is auto-sorted onto an on-screen slot.

Polish List

I also moved a bunch of tasks to the “Polish” list, which I may do after release. These aren’t bugs, just things that, as a perfectionist, I’d rather see improved.

I do this because I found out years ago that the only way to maintain sanity when coming up with cool little polish ideas during development is to put them on a separate list that is not part of the main To Do list. This way they don’t distract me from actually finishing the main game.

OK that’s it for now, back soon with more!