CJPoll / exorcist

0 stars 0 forks source link

Combat Engine Milestone Discussion #9

Open CJPoll opened 8 years ago

CJPoll commented 8 years ago

Backend for running a combat encounter.

Acceptance criteria:

  1. Each actor performs it's action in turn.
  2. Turn order is determined by an algorithm over stats
  3. Each actor can perform a single action on its turn.
  4. An "action" can consist of an attack on a single actor, supporting a single actor (i.e. Healing), or a non-action.
  5. An actor belongs to exactly one of two groups - "allies" or "enemies"
  6. A player cannot control the actions of an enemy
  7. A player controls all allied actors
  8. A player has no time limit on deciding a controlled actor's action
  9. An enemy randomly chooses an action (may or may not be weighted)
  10. An enemy's attack action always targets a player-controlled actor
  11. An enemy's support action never targets a player-controlled character
  12. Positioning has no mechanical effect on actions
  13. Damage to an actor is calculated from the stats (BMS) and equipment of the attacker and the defender
  14. When an actor's life resource is depleted, it is removed from combat
thebriz24 commented 8 years ago

I can comment.

CJPoll commented 8 years ago

Indeed you can. Because this is the issue, not the milestone 😂

thebriz24 commented 8 years ago

Oh terminology.

CJPoll commented 8 years ago

@Rybec Had the following to say about the milestone:

Suggestion for combat engine:

Allow for ranged and melee combat, by allowing counterattacks in melee combat but not ranged. For example, if it is one side's turn, and that side picks a melee attack on an enemy unit, both units will deal damage for that one attack. If the circumstances are the same, but a ranged attack is chosen, only the attacking unit deals damage for that attack.

This is a really simple way to implement both ranged and melee combat, where ranged attacks have an advantage.

thebriz24 commented 8 years ago

Would melee be more powerful to compensate for the increased risk?

Rybec commented 8 years ago

That is certainly an option. Here is what I am thinking (this is related to UI and game engine simplicity):

Every unit has a default basic attack. This is always melee attack. This default needs to exist to allow attacking when the unit is out of resources for the special attack. This attack depends purely on the unit's body stat. It can be performed even when unarmed. Someone also suggested that this basic attack could work like D3 signature moves, allowing the unit to regain some resources. When a unit is attacked with a melee attack, the unit automatically counterattacks with this basic melee attack.

Every unit with a weapon equipped has a special attack. This attack depends on the weapon the unit is wielding. The special attack always consumed resources (the resource would probably be called "energy" to make it sufficiently generic; it would automatically be restored at the end of each battle; it might be calculated using the base stat of the special attack, for example a weapon with a melee special will cause a unit's energy to be calculated from the body stat). The special attack can be ranged or melee (question here: do we have melee->body, ranged->mind, and heal->soul, or does each special have melee or ranged and body, mind, or soul? I vote for the first for simplicity). When a melee special is executed, the defending unit gets a counterattack, using its basic melee attack.

The other combat options are defend (do nothing) and maybe flee (does individual unit flee or the entire party?).

So, given this system, basic melee attacks will be comparable for units of the same level. Special attack power will depend on how much energy the attack costs, however ranged specials should probably cost more for the same damage than melee specials. This does mean that if you have two specials that cost the same, the melee special should do more damage.

Long way around to say it, but I think the details are important.