Here I talk about the basic combat mechanics of Beastmancer.

Posted by Autarca on Jun 4th, 2016

Hi

This is my first turn based game so there's a lot that can change and many problems that are yet to appear during the development. By making this article I'm trying to get some opinions and ideas that I may be missing at the moment and also share what makes the combat different from other turn based games.





What's my plan for the combat:

The general idea is that you will have a limited number of monsters that you can field, this number will start small (probably only 2 at the beginning) but it will increase when your character starts gaining levels (yes, your character and your monsters can level up).

Queue: When a battle starts all the monsters and beastmancers are put in the same queue ordered by an Initiative stat. The player and enemy beastmancers are also included because while they can't receive direct damage, they can intervene in a fight by attacking, healing, casting spells or summoning/recalling monsters.

Perma-death for creatures: my idea is that if one of your creatures is killed during combat, its lost forever. This should increase tension during a fight and force the player to capture a good number of monsters and level them equally instead of just focusing in a few elite creatures. I know this feature can be divisive so I'm entertaining the idea of having costly revival spells (for combat only) or even a shrine where you can resurrect your fallen creatures for a price (be special items and/or money).

Melee creatures: some of your creatures will be stronger and therefore will be used as "tanks" by dealing and receiving direct damage. While making them attack directly is more dangerous, they can do more damage and also have a small chance of making critical attacks.In these cases the camera gets closer and executes a cinematic animation.

Ranged creatures: other creatures will have a default ranged attack (shooting arrows, spitting fire, etc), these attacks are a good way to weaken an enemy before engaging it but they'll only work if your monster is not engaged by itself, that is if one of its neighbor tiles is occupied by an enemy, the ranged creature will be forced to used a melee strike as defense.

Special attacks: some creatures will be able to cast spells with a cooldown from the beginning while others will acquire these special attacks and spells after leveling up. There will be also status effects like poisoned, stunned, etc. that will last a few turns.

Objectives: if you lose all your monsters in the field you will leave your beastmancer undefended and therefore lose the battle. In the same way, killing all the enemy monsters makes you win and be able to loot the enemy corpses (or have a "chat" with the enemy Beastmancer, I'll explain more of this in a future article). But a secondary objective is to capture new monsters, to do so you will have to use a turn of your beastmancer and use a magical crystal to try to bind the soul of a wild monster. These crystals can be of different quality, some of them get destroyed after failing to catch a monster while others can be reused, some of them are rare and can be used to capture stronger monsters, I think you get the point... you can't bind the souls of monsters already binded by another beastmancer.

What's ready at the moment:

Right now I have a pretty simple pathfinding system but that is enough for what I need, the arenas won't be too complex: a flat grid with some obstacles and each faction on one side. In that case I'm playing safe by following the inspiration I have from Heroes of Might & Magic.

I also have the mechanics for basic melee, critical and ranged attacks as you can see in the videos included in this article.

I also have the basic transition between exploring a map in real time and a turn based battle (gotta make it look better though).

What I need to do:

I need to start working in the UI, I only have a mockup of it at the moment. This is tedious work but I better get it ready soon before I lose momentum.

I also need to find a way to deal with bigger monsters: so far my monsters all occupy a single cell of the grid at a time but some monsters will be bigger and therefore will occupy 4 cells. I need to figure out how to do it without breaking my current grid and pathfinding system. I have some ideas of how to do it though and I'll start testing them during this week.

The big challenge is gonna be the AI. This project is way different to Nomad Fleet, in that game every ship had the same real time AI based on a finite state machine, steering behaviours for movement and physics for projectiles. This game has none of that, all movement and projectiles are moved exactly by code (physics just wouldn't be precise enough for a grid based game) and all the monsters are "brainless", they have no decision logic, they just move or execute animations based on orders. I need an AI that is able to execute the same orders than the player and has the same limitations. I think that a finite state machine or any other traditional AI won't cut it, maybe a sequential logical process (like an expert system) would fare better: basically the AI should start working when its the turn of one of its monsters then evaluate the function of that monster (tank, ranged, healer, etc), check for enemies and allies in range and execute an action based on a simple database of what a normal player would do (attack weakest enemy, heal weakest ally, etc).

What could be nice to have:

Flanking: I'm still not sure about this but it could be nice that attacks make more damage or have an increased critical chance if they are made from a flank or the rear. Now in realistic combat, flanking an enemy is not easy so I should explore the posibility that an engaged enemy pays a cost when trying to flank (for example in Age of Wonders 3, the enemy can have a free attack if you try to disengage them).

Faster combat: this was suggested to me by some people, more than increasing the speed of movement and animations (which can be easily made and controlled by a slider) I think what people really want is combat that feels more impactful and dynamic. This is not something specific to fix but is something that I'll have to keep in mind during my iterations and polishing of the game.





That's it for now, in a future article I will tak about the non combat aspects of the game: story, dialogue, inventory, etc. For the moment I would like to ask you for feedback about my ideas if you have the time.





Regards,

Jorge