Introducing: The Battle for Jotsway Canyon

Last September, I purchased the GameMaker: Studio Humble Bundle and since then I’ve been porting over my older project made with libGDX from the ground up. This new project finally has a name: The Battle for Jotsway Canyon!


Jotsway Canyon is a tactics game being developed for Widows, Linux, HTML5 and Android. The current test build is available for free on I’m always looking for constructive comments and so far, feedback has been generally positive.

For the initial release, I’d like an endless Arena mode with a choice of classes, varied enemies and unexpected mechanics with later updates including a story mode and additional classes and enemies.

Jotsway Canyon 0.0.33


In the current build (0.0.33), you take on the role of the first class: the Sorcerer. The player battles enemies and levels up which allows the player to select random bonuses drawn from unique Class Deck. In this mode I hope the challenge will come from adapting to the environment and enemies with unique abilities rather than relying on inflating stats.

Class Decks

For 1.0.0, they’ll be 3 classes: the Sorcerer, the Barbarian and the Cleric. The player will choose which one to be at the start of every Arena game and each one will have a unique Class Deck to draw from.

Decks are made up of Cards with varying rarities: Common, Uncommon, Rare and Legendary. When the player levels up, 3 Cards are drawn from the Deck. Common Cards appear more often and Legendary Cards appear very rarely.

The player can choose to spend Gold they gather from enemies to mulligan and redraw their hand.

Players can mulligan cards


Previously, I had a talent tree system but I decided to move towards a this new system for several reasons. Firstly, having the player draw a random set of upgrades feels more exciting and adds a new decision every level which increases variety and replayability.

Additionally, the new system has better scalability than the previous iteration as I can add and swap cards to Class Decks very easily and don’t have to worry about redesigning the UI to accommodate these changes. This is especially important during this early stage of development where there are many rapid changes.

This old class tree took me longer to implement

Stat Squish

Another change I’ve made is how damage and stats work. I’ve simplified the stats to become Health and Power rather than Physical Power/ Defence and Magical Power / Defence etc. This is to improve readability and put more emphasis on positioning, movement and mechanics rather than having numbers scale linearly and arbitrarily.

Enemies grow in power a lot slower stat-wise. Difficulty instead will come from more interesting and complex abilities that the player will have to react to.

I’ve also removed random damage from skills because I want the player to be able to predict what will happen and be rewarded for reacting properly. Random elements still exist; Burns happen randomly and enemies are spawned randomly and move randomly but for the combat, I want to keep the randomness manageable.

Lessons Learnt

Building the game from the ground up again has allowed me to learn plenty. I’ve continued to experiment with pixel art and I try to tackle systems with a bit more thought first.

Learning more about pixel art

I generally use Inkscape to lay out ideas first and I’ve found this particularly useful when designing the Class Decks. Although I don’t use it for illustratios, I’ve become very quick at making outlines for ideas and it’s essential for my workflow!

I find Inkscape useful for planning ideas out

Moving Forward

I’m aiming for a late 2017 release for all platforms. You can follow the development of Jotsway Canyon via Twitter or on my website. I release all of the patch notes there! If you have any comments feel free to let me know. Thank you for reading!

Battle for Jotsway Canyon Alpha 0.0.33


0.0.33 [10.01.2017]



  • The maximum number of units the player can have at one time is now 3 instead of 4.
  • The game will now cycle through 4 music tracks.
  • New Mechanics
    • A level up mechanic has been added.
    • When enough enemies have been defeated, the player draws 3 Cards from the Class Deck and chooses one to improve their character.
    • Each Card has a rarity (Common, Uncommon, Rare, Legendary) and a unique bonus. They can:
      • add New Skills
      • improve existing Skills
      • increase character damage and health
      • and more!
  • The Sorcerer class has been added! She comes with her own deck to draw from. The new Cards are listed below.
What to choose?


  • New Cards:
    • Common
      • Blizzard: Deal damage to an enemy and all units near it.
      • Teleport: Move up to 2 tiles away. Ignores obstacles.
    • Uncommon
      • Ignite: Your Fire Ball now has an 80% chance to Burn instead of 40%
      • Little Snowflakes: Allies now take half damage from Blizzard.
      • Unbound: Your summoned Elementals gain +1 Movement.
      • Focus: Gain +1 Power.
      • Underdog: Gain +3 Power while you have 5 or less Health.
      • Summon Elemental: Summon an Elemental to fight for your team.
    • Rare
      • Combust: Your Burns deal double damage.
      • Unstable Teleport: Your Teleport now deals damage to all units nearby the target.
      • Sorcerer’s Will: Gain +5 Maximum Health.
    • Legendary
      • Energize: Your maximum AP is now 3 instead of 2.
      • Large Chest: Gain +100 Gold. (Not fully implemented)


  • AI units no longer target Doodads (Torches, Barrels etc.)

Bug Fixes

  • Heal text is no longer shown if the unit is not visible.
  • Unit’s can no longer be healed 0 health.
  • Doodads can no longer be Burnt. [12.01.2017]


  • UI tweaks.
  • Asset updates.
Updated Fireball


  • New Cards:
    • Rare
      • Fireborn: Burns now heal you instead of dealing damage.
      • Howling Winds: Units hit by Blizzard have -1 AP  next turn.
    • Legendary
      • Warp: Teleport now has 8 range instead of 2.


  • Gremlins and Hounds are now Fireborn and heal from Burns. [15.01.2017]


  • Added screenshake.
  • Tidied up a few assets.

New Mechanics

  • Gold: Enemies now drop Gold.
  • Mulligan: Players can spend Gold to redraw Cards from their deck.

Bug Fixes

  • Animations now sync with each other once again.
  • Dazed units now move the correct distance.


Jaggy Tactics Alpha 0.0.32


0.0.32 [05.01.2017]



  • Unit stats have been tweaked.
  • The Torch Doodad now has a death animation. 
  • Added a bounce animation to targets when damaged.
  • New Mechanics
    • Explosive Barrel: Deal damage to an Explosive Barrel to deal damage to all units nearby.

      Exploding Barrel
    • Revenge Buff: If a unit has Revenge, the next damage it would take is instead reflected to all enemies nearby.


  • Radiance: Now has a placeholder animation. 

  • New Skills
    • Revenge: Gain Revenge. The next damaging skill on this unit is prevented and the damage dealt to all nearby enemies instead.


  • AI units can now be flagged as Ranged.
  • Ranged units will move away if there are enemies nearby and will avoid moving next to enemies.


  • The unit UI has been revamped (see above).

Bug Fixes

  • Fixed a bug where all skills would become unusable.
  • The Knight is no longer flagged as Undead.
  • Descriptions of skills will now show even if they cannot be used.
  • Radiance no longer deals damage to Doodads. [06.01.2017]


  • The Arena is now bigger.

New Mechanics

  • Burn: If a unit has Burn, it will take damage at the end of its turn for 3 turns or until it is removed.


  • Fire Ball: Now has a 40% chance to Burn the target.
  • New Skills
    • Exorcise: Remove a random Debuff from an ally and give it to a random enemy nearby.
    • Death Coil: Deal damage to an enemy. Deals more damage if the target has unspent AP.

Bug Fixes

  • The skill description box now covers unit Health.
  • Fixed a hit-box issue for skills.
  • Fixed AI moving too quickly.
  • Damage text is no longer shown if a unit is hidden.

Jaggy Tactics Alpha 0.0.31


0.0.31 [23.12.2016]



  • Players are taken to an arena to face against The Lich boss who summons random Undead.
  • Teams may only have a maximum of 4 units at a time.
  • All unit animations are now synced together.
  • New Mechanics
    • The Fallen StateUndead units enter the Fallen state instead of dying. Deal damage to a Fallen unit to kill it for good!


  • Added new icons for several skills.
  • New Skills
    • Radiance. Heal a damaged ally and deal that as damage to enemies near it.
    • Lance. Deal damage and pass through target if able. Reset Lance if a unit is killed in this way.
    • Summon Ghoul: Spawn a Ghoul for your team.
    • Raise Fallen: Enable a Fallen unit to fight again.
    • Consume Fallen. Destroy a Fallen unit and heal yourself fully.


  • Enemy AP is no longer shown.

Bug Fixes

  • Fixed various skill description typos.
  • Heal no longer targets Doodads.
  • AI units should now use all available skills if they have a target.

New GameMaker: Studio Project

Birthday Treats

As a little treat for my birthday this past September, I bought GameMaker: Studio during the Humble Bundle sale. It has been great fun to learn! And getting a prototype up and running is super fast.

Having a more visual program to create games rather than hard coding everything took a little time to get used to but there is a lot of back-end tweaking that can be done through its own language called GML. I’ve not scratched the surface!

I’m creating a new game but it’s still going to be a turn-based tactics game on a hexagonal grid. For now, the name I’m using for it is Jaggy Tactics. This time I’d like to add story elements while keeping the same feel. So far, I have this playable in-browser demo.

Why the Switch?

I love libGDX but I became increasingly frustrated with getting the HTML5 build to work. This is important for gathering feedback from players quickly because it’s much easier to direct them to a site rather than having them download a file. GameMaker seems slightly less painful in this regard and distributing is quick and easy.

libGDX still has a special place in my heart and I may go back to it in the future but for the time being, I’m happy learning something new.

I’ll be adding more updates and patch notes to Jaggy Tactics as development continues.

Jaggy Battles Beta Build 8

0.8 [15.07.2016]


  • Dropped items are now thrown to the nearest free tile and can be picked up again.
  • Items are no longer purchasable through the Shop and have been replaced with Blessings.
  • Blessings give persistent bonuses to the player when purchased with Gold.

The current Blessings in the game are:

  • Underdog
    • While you have less than 50% health, deal 30% more damage.
  • Contagious
    • When you are debuffed (Burn, Slow, Stun), apply that debuff to your attacker.
  • Defiler
    • Whenever you apply a Debuff to a unit, gain 10% health.
  • Thrill Seeker
    • While you are below 30% health, gain double Gold.
  • Hoarder
    • Your maximum Shard count is 10 instead of 5.
  • Transmute Item: Gold
    • Whenever you drop an item, destroy it and gain Gold.
  • Transmute Item: Shard
    • Whenever you drop an item, destroy it and gain a Shard.
  • Transmute Item: Detonation
    • Whenever you drop an item, destroy it and deal heavy damage to nearby units.
  • Overcharge – Dexterity
    • If you have maximum Shards, begin your turn with 3AP.
  • Overcharge – Quickness
    • If you have 2AP or more, gain +1 to Movement.
  • Overcharge: Vicious
    • If you have 2 AP or more, you have a 100% chance to critical hit.
  • Leader
    • If you have a full team, deal 30% more damage.
  • Commander
    • Your maximum team count is 4 instead of 3.
  • Sadist
    • Whenever an Ally dies, heal 30% life.
  • Coordinator
    • Other friendly units gain +1 Movement.
  • Time Walker
    • Your movement Skill can be used as many times as you want but it still costs AP.
  • Bloodlusty
    • Whenever an enemy dies you have a 15% chance to reset your Skills and gain full AP.


  • New Knight Skill: Vengeful Spirit. If you destroy an enemy by passing through them, gain +1 AP and reset Lance.


  • Monsters are now able to drop random items for the player to pick up.
  • Spider
    • Web Wrap changed to 1 range instead of 2.


  • Small Health Potion now heals 60% of maximum health instead of 50%.

Bug Fixes

  • Dropped items should now be cleared up when a new Stage begins.
  • Experimental Potion now costs 50 Gems instead of 0.

0.8.1 [30.07.2016]


  • File size has been reduced by about 15mb.
  • The maximum Shards is now 3 instead of 5.
  • The player starts with 1 Shard instead of 2.
  • Custom assets have been added to the classes.
  • Shop assets have been updated slightly.
  • Chests have a 30% chance to spawn an item when looted.
  • Bosses now always drop a chest.


  • Cornered
    • Deal 10% more damage for each enemy next to you.


  • New Passive: Pyromania
    • Gain +3% chance to critical every time you Burn a target. This is reset when a critical strike occurs.


  • Several purchasable items have been removed.
  • Cost to purchase items has increased.
  • Portals can no longer be dropped from enemies.
  • Item Recycler: Now costs 1 Shard instead of 3 and doesn’t destroy itself.


  • Hoarder upgrades maximum Shard count to 5 instead of 10.
  • Underdog: Deal 30% more damage when below 30% health instead of 50% health.

Bug Fixes

  • Spiders and Bees now throw their items correctly.
  • Tome of Retraining now resets the hero’s stats correctly.
  • Tome of Retraining now resets Knight Skills.
  • Bosses and summoned units no longer drop items.
  • Overcharge: Vicious now correctly triggers a critical hit at 2 AP.

0.8.2 [18.08.2016]


  • Updated item and class select screen.
  • Players now start with 50 Gems.


  • Tweaked item Gem costs and item order.
  • Portals are no longer unlocked by default.
  • Matter Switcher now costs 75 Gems.
  • Experimental Potion now costs 75 Gems.
  • Unstable Portal now costs 75 Gems.
  • Cursed Amulet now costs 50 Gems.
  • Shiny Mirror now coasts 75 Gems.
  • Shiny Mirror no longer requires a Shard.
  • Experimental Potion no longer requires a Shard.

Bug Fixes

  • Vengeful Spirit now properly refunds AP at maximum AP.