I don't know about any such blogs, but since a tactical turn-based RPGs is my second favorite genre right after roguelikes, I'll write you a blog post. From my experience, it was not a difficulty of tactical AI in a RPG or RTS which often put me off, but its opposite: AI's complete short-sightedness and absence of team decisions. Human will never play like this.
Back then, when I still viewed JRPGs as a pinnacle of game design, I once tried to make a "typical japanese TRPG" with heavy focus on tactical turn-based combat like Final Fantasy Tactics. As always, it became just a tech demo for pathfinding and AI, so I'll share my thoughts on the subject.
Most of these TRPGs don't bother with AI much. Player's fun out there comes not from a complex tactical or strategical challenge, but from general farming and abusing AI in a funny way. So it doesn't matter much that their AIs do things no human would ever do. Usually it's sufficient to have a stupid AI and balance it out with game design in way that it never needs to see more than one move in advance and only use best short-term moves. Of course it never feels real, but who cares? This just feels wrong, I want to believe it is possible to create fun based on a battling complex AI actions instead of farming and steamrolling. Unnecessary maybe, and time-consuming as well, but possible.
Remembering original Final Fantasy Tactics and its hardcore mod FFT 1.3, I set the following goals for human-like and fun to play AI:
- AI must create a challenge, but a fun challenge and not a "human full search" challenge. This fun challenge should be often expected by player via overall context of a current mission. Usually thats where scripts come into play creating a one trick pony AI.
- AI should be clever, but not deep Minimax clever. Different types of AI should have different flaws, just like different human personalities would. It's a rare thing to encounter in games, Advance Wars had scripted personalities for generals, for example, but units can have them too.
- AI must avoid looking dumb when it is not intended. Obscene stupidity completely ruins any illusion of intelligence, always winning strategies do so as well. And loopholes created by careless scripting, those are the worst.
I thought that I will tackle #1 with emergent behaviours, #2 with different personalities and human-like "semi-random" strategy choice, #3 with keeping hard-coding to a minimum and a careful testing.
So what are these behaviours I'm what talking about, is it a scripted sequence of abilities to use? A top ability from a weighted list? Nope, what I had in mind was a combination of a desired intelligence, personality type and a role derived from currently available abilities and weapons. You can describe this combination as a "stupid berserking damage dealer" or "smart defensive healer". So AI specializations, like classes or professions, e.g. an Archer AI which uses bow to shoot arrows with some set of predefined generic archer ability combos like Take Aim or Arrow Shower, become logically emergent instead of hard-coded.
Basically, it is important to detect and operate on these roles: damage dealer, damage soaker, disabler, skirmisher, healer, buffer/debuffer, area of effect'er; usually, one character will perform at least two of these roles.
To make a tactical fun out of this we want for behaviours to handle several cases solidly:
Simplest case. A lot of weak goblins ambush our heroes. Perceived threat is obvious, goblins will try to overwhelm player with each goblin having a stupid berserk personality with some primitive melee abilities, perceived weakness is also obvious, like baiting goblins to a single armored and fire-resistant character, then casting a series of fire-based AoE spells in that general direction. Find a damage soaker, find an AoE'er, specialize the damage soaker for AoE'er damage type, send the damage soaker to the goblin mass, cast a damaging AoE spell when goblins group around.
Usual case to test out simple team interactions. Player encounters a knight, an archer, a mage and a cleric. Perceived threat is now more complex, various interactions become available. YOu can already see possible roles and its combinations. Cleric will buff and heal, mage will dish out complex but high-damaging magic things, knight will either charge someone or defend a mage, archer will help knight by sniping those who try to run away from him or making his defence strategy more comple, this will depend on knight's choice. Personalities for enemies may be decided randomly turning the same encounter into unique experience. Player will have to decide what is the best strategy with units he currently has, and if AI would try to do the same on the other side of the screen, it would be interesting.
Complex case to test out team interactions and strategic planning. There is a battle where you confront a gang of four assasins (clever careful damage dealer+skirmisher). Few in numbers, with menacing appearance, their perceived threat lies in skillful and deadly attack, and perceived weakness is that it's easy to reduce overall strength with just a single assasin killed. So naturally they're clever, they use abilities that work well with each other and can focus fire player's most dangerous characters; seriously injured ones retreat, heal and buff themselves to rejoin the battle. Obviously, player will try to nuke one of them first, and assasins will have to soft-counter this easy strategy, so it will be a less dominant.
Hard case for lots of strategy. There are several squads of enemies with each squad leader deciding best local tactical moves, and then a best global strategic decision is selected to benefit all squads.
Impossible case. Add a general to decide a strategy, and have squad leaders implement it to the best of the squads abilities.
It's a lot of letters already, so long story short, implementation was a mess and I never got past a "hard case", but even then this approach to a fun tactics felt doable. I started with FSMs but had to abandon that approach quickly, it became an entangled mess of states and transitions impossible to debug. After a while I settled with semi-autonomous ability perception based characters as in "sense-think-act" paradigm with behaviour trees for possible individual actions, a global strategy affecting possible team actions based on possible individual actions, also a bastardized version of something like N-Gram statistical prediction was tossed in.
How has this worked out? Surprisingly well, AI even read my mind several times, but I grew tired and abandoned it since there were more than enough convincing flaws:
- The biggest flaw was that sometimes the entire AI operation was just weird and chaotic, even though I punished quick change of strategies. Probably either strategy logic or wrong personalities were a culprit, but I never found out. Yep, code architecture was horrible.
- Fine-tuning desired scenario by a careful selection of available abilities and personalities is tedious.
- Ability tagging for roles should be done very careful, or some wacky combos would appear.
- Same for personality tagging, but instead of wacky combos you would see careful casters buffing for frontal assault.
- It was hard to decide on a "cleverness" level for a given ability.
- Some seemingly stupid decions which were required for a level-design like "hold this castle wall no matter what" had to be implemented in a hackish way.
- Planning for units to perform a time-based attack was also a hack.
I guess my approach was mediocre at best, if not outright bad, and AI was buggy and pain in the ass to develop further, but even then I had some really fun time playing against it, almost as if playing with a distracted kid, which is still better than Tactics Ogre :)