Folks! We’re now a mere two months before the end of the year. Early in 2014, I decided that I would try to have the main campaign for Telepath Tactics finished by December 31, 2014. Is that still plausible? Yes! Is it going to happen? Maybe! All I can say is that I’m encouraged by the progress I made this past month (even if said progress did depend upon me ignoring most of my friends, seeing my girlfriend no more than 1-2 nights a week, and getting far less than the physician-recommended amount of sleep most nights).
So what did we accomplish? Read on and find out!
—new animations! Specifically, we’ve animated all of the attacks for 6 of the game’s promoted classes: Fencer, Mantis Knight, Pikeman, Bowmaster, Cryokurios, and Photokurios. Kevin James handled the Fencer and Pikeman, and I took care of the remainder myself. A sampling of the animations we completed:
Mind you, this was not how I wanted to spend my time–but for budget reasons, this was more or less unavoidable, and I think the results are pretty good. I will most likely be animating the attacks for at least 3 or 4 more promoted classes myself over the coming month, and hiring out for some of the others.
—new battles! This was the thing that I really wanted to focus on the most this month, and focus on it I did. I ended up creating 8 new battles with great emphasis on elevation effects, environmental obstacles, and scripted events:
- a procedurally generated forest battle to gather provisions to bolster the party’s waning food supplies.
- a battle at the entrance to a pass, littered with environmental obstacles and featuring a quintet of mini-bosses.
- a battle on jagged cliffs rising over the water, connected only by bridges.
- a battle atop a long, wide bridge overlooking the water; this one has a cool scripted sequence midway through in which the enemy lays explosives in an attempt to destroy the bridge.
- a battle in a tavern that doubles as the secret headquarters of a gang of thieves.
- a battle in the basement theater of that tavern.
- a battle in the streets of the port city of Coria.
- a nighttime battle in which a small group of lissit slip into a bandit camp to assassinate the leader under cover of darkness.
I made a short video of me playing part of the third of these battles. I think it does a pretty good job showing off the game’s use of elevation, environmental hazards, destructible scenery, and movement effects:
—new destructible objects! I’ve created a new Snare Trap object; a fruit tree that drops apples when it’s chopped down (apples are items that can be used to heal you); and variants on the Stone Bridge object that can be arranged to make bridges with not-perfectly-square chunks missing (see: battle #4 above).
—new character dialog and cut scenes! I was originally planning to avoid making any of this so I could focus solely on creating battles; however, when I ignored this stuff, I found that I ended up being really dissatisfied with the battles I made. It seems that I simply don’t enjoy the game’s battles nearly as much without the context provided by plot, cut scene dialog, and character interactions. (And by god, if I’m going to playtest and balance these things over and over, then I’m going to make sure I enjoy them!) Anyway, it’s not a bad thing that I worked on this stuff–it needed to be done sooner or later anyway, and I still produced the vast majority of the battles that I intended to produce regardless.
–related to the above: new characters! Naila Hashmal the assassin and Oliver Spenks the mentalist are new recruitable characters. And on the non-recruitable side, we have Ebon Raban, Umber Gnawbone, Vitalia Spring, Galatius Rime, Brigid Firebrand, Iris Starlight, and Connacht Dreamstalker. (I’ve created quite a few new generic enemies as well for the sake of the game’s new battles.)
–finished giving all of the game’s current roster of recruitable characters their own death monologues. Also, character death monologues no longer appear in casual mode.
—trap-laying! Due to some tweaks I made beneath the hood of the game, it is now possible to have skills that create objects with pre-assigned triggers; which is basically a long-winded way of saying that the game now supports trap-laying skills.
—new attack! I’d been meaning to give Sabrina a new skill, something to match Emma’s Motivate ability, and I decided that she should be able to lay snare traps for enemies to wander into. This gives her some limited zoning ability, as well as the ability to protect herself from being backstabbed. You can see how it works right here:
—new items! Steam Crossbow, Fangiss Ka, Wing Armor, Wine, Art Materials, Blood Orb, Energy Orb, Power Orb, and Swift Orb. The Steam Crossbow is an honest-to-goodness steampunk weapon useable by promoted Crossbowen. Fangiss Ka is a legendary mace wielded by the fearsome lissit warrior Silithis Predat. Wing Armor offers spriggats some protection from the piercing attacks to which their wings are so vulnerable. Wine gets characters drunk, rendering them both more resistant to physical damage and less capable of dodging or landing their attacks. And as for the others…well, I have to leave some surprises!
–on the important-though-not-necessarily-sexy front, the game now automatically detects when it’s out-of-date and prompts you to download an update. No more having to check Twitter or the forums to figure out if it’s time to update; and even better, no more emailing me because you lost the download link. The game takes you where you need to go auto-magically!
–also really helpful: the game now produces error logs whenever it has an uncaught error! (More details about this here.) If you encounter a bug, you can (and should) send the appropriate log to me with your report so I can figure out what happened. This is a big deal, because it will make fixing bugs in the game post-release approximately one billion times faster and easier.
—new tiles! As I continued making new battles, I noticed certain tiles that I wished were in the existing tilesets, but weren’t. I took it upon myself to fill those gaps. Among them:
–made some balance changes. Split Shot now has +1 range in the main campaign; Gavrielle Hashmal has had her strength reduced slightly to make her a little less overpowered; and the psy fighter classes now each get +1 max range to their elemental blast attacks upon reaching level 5.
–cut scenes now have backgrounds! Major props to David Hammond for producing these:
–cut scene backgrounds and character portraits can now be lit, allowing for them to be convincingly used for scenes at different times of day.
—new script actions! FadePortrait lets you fade out character portraits smoothly as a character leaves the scene. IfPathClearRun checks to see if a character has a clear movement path to a particular space; if so, the game runs a script. ItemDrop drops a single item sack onto a randomly chosen space on the battlefield. WhoCanUse gets the name of every character who can use a given item and sticks it in a string variable for use in dialog. Also, there’s LightBackground and LightPortrait, which do what you see right above.
–the merchant will now tell you exactly which characters can use any given item.
—new dialog trigger parameters for OnCharDeath and OnCharAttacked: killer/attacker name (if you want the conversation to only trigger if a certain character killed or attacked the target); and non-killer/attacker names delimited by colons (the names of characters who will ensure this dialog won’t trigger if they are the ones to kill/attack the target). You can also now use -ANY– for the target parameter, if you want the conversation to trigger based on who does the killing/attacking rather than the character who’s attacked.
—new dialog trigger parameter for OnGrab: item name. This makes it so that the dialog is triggered only if the item sack grabbed contained the item named. In addition, there’s a new special character meant to be used in concert with this: -GRABBEDNUM-. This is a stand-in for the number of items that you grabbed matching the item name parameter. (Thus, if you want the player to collect a certain number of a certain type of item off the battlefield, you can use -GRABBEDNUM- to keep track of how many of that item they’ve grabbed.)
–new character tag: Trigger. This lets you associate a trigger with a destructible object right in ObjClasses.xml. (I’m using this for trap behavior now, since any given trap type will always trigger the same script from PersistentDialog.xml no matter what scene it appears in or how it’s added.)
–made a slew of fixes and improvements to the map editor interface. It’s still not quite perfect, but it’s much better than it was last month.
—AI improvements! The AI now weights opportunities to shove characters into water much more heavily than before.
–the game now displays an attack’s ModDmgForAttack value as (+X) next to its Base Damage when you mouse over it in the Actions Menu.
–the ranged damage falloff penalty now caps out at 75%; it is no longer possible to have attacks with a range so long that they heal the target.
–characters now gain experience points for using abilities that neither heal nor damage, but which create objects or move characters or objects around the battlefield.
–experience points now get a boost based on the cost of the attack used to garner the experience. An attack costing 4 energy will get a +4 to experience points gained; attack costing 12 energy will get a +12 to experience points gained; an attack costing 0 will get +0; and so on. This should help characters with very energy-intensive attacks (e.g. psy users) to keep up in the leveling with non-psy-user characters.
—optimizations! The game now handles the character sprite loading process more efficiently; hopefully this should reduce memory leakage and lead to better performance over long play sessions. Also , I further optimized the game’s rain particles to reduce slowdown during rainy battles.
–game now automatically detects characters who must be protected during a battle and auto-deploys them, even if the character is really far back in your roster. The game also no longer lets you swap such characters off the battlefield during deployment. (In the past, if you did this, you would just automatically lose the battle the moment it started.)
–the random level generator now accepts a CorridorWidth setting of 0, in case you don’t want it to generate connecting corridors on your level. (Note: if you do this, you need to set the RoomsDensity high enough to ensure that all rooms connect, or else you’re likely to end up with unreachable rooms!)
–updated the game manual.
–fixed a lot of bugs, despite myself.
Ultimately, this leaves the main campaign just shy of 2/3rds finished going into November. I am going to do my level best to have the whole campaign wrapped up by December 31st, which will give me a good few months to balance tweak, polish existing content, add more optional character dialog, throw more optional objectives into existing battles, and just generally ensure that Telepath Tactics is as awesome as possible upon release.
Until next month!