That darned mortgage keeps chipping away at my 7yrl time, but I still managed to eke a few hours here and there over the last couple of months.  The Skill and event/action rewrite mentioned in my last post was a big part of it, but there were also a bunch of other changes.

Tile Animations

I’ve added a simple Xml-based definition for animations which can be played when a player uses a skill (or other event, e.g. dies). It allows creation of short-term particle effects and tile animations to be combined.

Here’s the xml definition for the ‘immobilizeVisual’ which is played when the player uses the Poison Cloud skill – it spins up two particle generators and animates a poison pit tile fading in and out:


The net effect is this:


Hard to see in a picture, but it’s animated :).  This’ll allow me to create more interesting effects as I get more into fleshing out the details.

Ranged Skills

Before skills would also trigger around the player’s location; now a Skill can be defined as being centered at either a player-selected Cell or a player-selected Mob.  Here for example is the Poison Dart skill, for which the player must select a target mob:


Sound Effects

I’ve added sound effects for a wide variety of actions as well as a full set of different attack/miss/move/etc sounds for each the mobs, each of the different weapon attacks (e.g. sword vs mace) and for each of the Skills.  Most sounds also have a collection of effects which are randomly chosen from for variety.  I’ve also added Ambient sounds, although those aren’t fully generalized yet.  I’ve had to disable the sounds on iOS for now though, as the latency of AVAudioPlayer is unacceptable and I’ll need to move to OpenAL (oy).


I’ve added Doors.  Yeah, sounds simple enough, but man was there a lot of under-the-covers work necessary for Doors.  Open/Close actions, specifying which mobs can open/close doors and which can’t,  accounting for them in exploration, etc.  The one thing I just couldn’t get to work (given how my shadowing system works) is obscuring vision through closed doors.  You can see a door in the above image in its closed state.

Layout engine rewrite

I was finding myself adding more and more iOS-specific hacks to make layouts work correctly.  This was getting ridiculous so I stepped back and ripped out pretty much all of the layout code for everything.  This was a metric ton of work (especially ensuring that it worked correctly across all of Windows, Mac, iPhone, and iPad), but it now contains far fewer hacks, and does about 1/2 as many relayouts as it had to do before, so there are some perf benefits there as well.

Tons of little changes

And as always I’ve made a slew of smaller improvements, including:

  • Mob buffs appear in tooltips
  • Secondary item actions.  On iOS, you can press on the secondary cab slot and slide up to get quick access to other actions.  This is most useful when you’ve picked up an item you don’t want; rather than opening your inventory, just slide up and select drop.
  • Skill cooldowns; after using a skill you have to wait a set number of turns before using it again.  I’ve also added a 20-turn cooldown when activating a new skill.
  • Named vaults: I want vaults (prefab rooms) to be special events; so now when you enter one, it stops exploration and displays a modeless vault entrance popup to let you know.
  • Performance improvements throughout.  Especially on iOS.