AI for a mixed Turn Based + Real Time battle system - Something "Gambit like" the right approach?
- by Jason L.
This is maybe a question that's been asked 100 times 1,000 different ways. I apologize for that :)
I'm in the process of building the AI for a game I'm working on. The game is a turn based one, in the vein of Final Fantasy but also has a set of things that happen in real time (reactions). I've experimented with FSM, HFSMs, and Behavior Trees. None of them felt "right" to me and all felt either too limiting or too generic / big.
The idea I'm toying with now is something like a "Rules engine" that could be likened to the Gambit system from Final Fantasy 12. I would have a set of predefined personalities. Each of these personalities would have a set of conditions it would check on each event (Turn start, time to react, etc). These conditions would be priority ordered, and the first one that returns true would be the action I take. These conditions can also point to a "choice" action, which is just an action that will make a choice based on some Utility function. Sort of a mix of FSM/HFSM and a Utility Function approach.
So, a "gambit" with the personality of "Healer" may look something like this:
(ON) Ally HP = 0% - Choose "Relife" spell
(ON) Ally HP < 50% - Choose Heal spell
(ON) Self HP < 65% - Choose Heal spell
(ON) Ally Debuff - Choose Debuff Removal spell
(ON) Ally Lost Buff - Choose Buff spell
Likewise, a "gambit" with the personality of "Agressor" may look like this:
(ON) Foe HP < 10% - Choose Attack skill
(ON) Foe any - Choose target - Choose Attack skill
(ON) Self Lost Buff - Choose Buff spell
(ON) Foe HP = 0% - Taunt the player
What I like about this approach is it makes sense in my head. It also would be extremely easy to build an "AI Editor" with an approach like this. What I'm worried about is.. would it be too limiting? Would it maybe get too complicated?
Does anyone have any experience with AIs in Turn Based games that could maybe provide me some insight into this approach.. or suggest a different approach?
Many thanks in advance!!!