I've considered including some degree of terrain in this--or at least walls and props; on the one hand, it opens up some opportunities, especially for more variety in enemies and encounters (one might have, for example, a foe that every so often runs to a table of alchemical vials and throws random substances at the player).
This is a good start, but a simpler effective system would be to allow the player to walk backwards and move around the enemy.
If the player can move around thy can backup into a doorway and limit the amount of opponents and swinging space.
If you add things like water or walls, the player could manoeuvre a opponent into it for effect. Adding weapons on a wall can allow the player to switch to a needed weapon in battle but force there backs against the wall.
Something else you could do is allow a player a kick or shove mechanic, this will open a whole list of new possibilities. Dark messiah used kicking very well, it was the best thing about the whole game.
Stuff like this mean the combat will never get old or boring, you will have players returning to your game when the graphics no longer have any appeal.
Its why I still from time to time play Pirates of the Caribbean, the old non movie one, and your combat is already better than there's ever was.
On the other hand, I'm not sure that asking players to be aware of their surroundings won't prove a little overwhelming on top of this combat system.
Yes it will be overwhelming, that is why you ease player into it.
Remember that the original purpose of a games is to teach, many games use learning skills as a micro economy.
Mario is a good example, first you learn to run then to jump and then you combined them. Now add a fire pickup and you can jump and shoot, run and shoot, stand and shoot and even run and jump while shooting.
This keeps players hooked and returning for more.
Regarding refinement, are there any elements that you feel call for refinement and that you haven't yet mentioned here?
I feel you should make the combat a bit more cinematic, you have a clear shot of both players use this to make the battle feel alive.
Remember real movements are boring, it's why we invented acting. Even motion capture animations is refined and exaggerated by an artist before use.
Hmm... There should have been some effect from the different weapons--the axe and mace should be both a bit slower than the sword, and the mace should eat up more of the opponent's stamina in attacking, as I recall--are there other effects that you're inclined to suggest?
(I do hope to have some variation in the actual attacks, and in how often they're used, but that might be implemented in the enemy, rather than being associated with the weapons.)
Changing values are subtle changes, these are the changes you make as a developer to guide players often with out them knowing.
A player won't notes that the mace costs the enemy more stamina, thy will however wait for the mace wielder to wear out and brutally attack the swords man. Never reallising the difference in there behavior.
This varies combat with out feeling like it does, only the most hardcore players will know you did this.
Because players experiences the game from the opposite end, often not realising that things like gravity and walking need programming, thy will need some clear indication of what is happening.
If you want the axe to feel draining and slow you need to show it.
(Not real animation time, just a example.)
Sword attack: Anticipation 1-7 Flow 8-15 Recover 16-24
Axe attack : Anticipation 1-4 Flow 5-10 Recover 15-24
Sword:
PullBack ->2->3->4->5->6->7->Swing ->9->10->11->12->13->14->Hit ->16->17->Pullback ->19->20->21->22->23->24
Axe:
PullBack ->2->3->4->Swing ->6->7->8->9->10->Hit ->12->Pullback ->14->15 ->16->17->18->19->20->21->22->23->24
Here we have the same timing but he axe feels blunter and like it is heavy, in the players mind heavy means slow and harder to use.
If you add a grunting sound the player will think that the opponent is at a disposition and use it.
Visual and sound is how you inform the player, code is how you make it happen.
Hmm... That's not a bad idea--although I would imagine that including this would result in players simply fleeing when they get low on health (presuming that they don't miss the danger).
It also leaves me with an uncertainty in terms of AI: the player would presumably have encountered the foe in question while exploring a level, and running would presumably drop the player back into the level where they left off--with the enemy still in position. I can make the foe pause and prevent an immediate resumption of the combat encounter, I suppose... My main concern here is that I want to keep the in-level enemy AI fairly simple for the most part.
One way or another, it's worth thinking about further, I do feel.
Fleeing when low on health is kind of the point, it prevents the player from dying and gives them a chance to explore other options.
Using guards that stay in one place means that the player will need to find a way past them no matter how much thy run.
Fleeing also allows for the player to ambush enemies, Assassin's creed and Shadow of mordor does this well. If you are overwhelmed by enemies you run around a corner, climb and wait for the first enemy to make the turn and jump him.
I don't think thy made the games to work like that, its more of a "art imitates life" kind of thing. In real life chasing after someone means thy can lead you into traps and ambushes.
For your game engaging in battle should be as simple as locking on to a target and fleeing, locking off.
Remember that fleeing isn't always a good thing for a player, it gives a opponent a chance to stab them in the back, the player can run into other kinds of danger and most players would rather fight than flee.