Sunday, February 20, 2011

Building the fighting system

I've started to try out a few approaches to this combat system. I've quickly dismissed a real-time engine, where skills would come from proper timing (e.g. what you see in console fighting games). Browsers are not guaranteed to be fast, and it does not really accomodate with lag.

I'm now considering something closer to what is done in MMOs. I like the timer with cooldowns approach; it gives a good impression of real-time, while still leaving a few seconds for each player to decide on the next move.

However, the issue you often see in MMOs is that fighting consists of repeating the same couple of moves as much as you can, without needing to analyze what your opponent is doing. In my game, I would like to incorporate a strategic perspective. I'd like the skill to come from "fighting intelligently".

So I need the player to be able to choose her next best move based on:
  • The player's current status (has she just been hit? What was the last move? Is she moving forward, retreating?)
  • The opponent's status
  • Any knowledge the player would have gained from the first moves exchanged in the fight.
Given the last point, I need my system to be rather slow (at least for the beginner period), and for the fight to last enough for players to decipher patterns in their opponent's behaviour (does my opponent vary her moves? Is she more the counter type?). For the first two, I need for a move to fire differently based on what the player has done before. For instance, it should be easier to dire a combo hit after a first one has successfully landed rather than if the player has just been hit. Similarly, it should be easier to hit someone who is off-balance or has her whole intent on hitting you rather than when she is trying to guard or evade your blows. I want first to build a working system with a few basic moves (limiting to a couple of different hits and defenses), and add complexity once this is more polished. I am now considering a few elements:
  • Basic notions like time needed to fire a move, cooldown, damage / defense / evade stats for each move
  • Each move has an ideal starting position, and a finishing position. At every moment, the player is in a given "position" (for now very basic, like "balanced", "balanced forward", "unbalanced"). When a move is fired, the player's position will change (e.g. after a hit, the player will be "balanced forward", to mirror the momentum she has gained when dealing the blow). And if the move is fired from their "preferred" position, it gets a bonus.

I will now build a few basic moves, and try and see how they work.

No comments:

Post a Comment