Let me just preface by saying I'm not going to be implementing this anytime soon -- it's solidly in variant territory and Pyrel needs to hew to Angband's base mechanics pretty closely if it's to be accepted as the successor. But if it the misty future I happen to have the time and inclination, one of the things I'd like to do is overhaul how time and combat interact with each other.
Long story short, I'd lift wholesale the combat mechanics from the Grandia series of RPGs. In those games, there's an "action bar", and each actor in the fight is positioned somewhere along the bar. The bar has a "Wait" section and a "Charge" section. When an actor gets to the end of the Wait section, they get to choose what action they want to take. They then must pass through the Charge section, and when they get to the end of that section, they actually act. Then they're sent back to the middle of the Wait section to start their "turn" over again.
So far so simple. Functionally this is very similar to practically any other turn-based game. But you can do a lot with this framework:
* Different actions take different amounts of time in the Charge phase. Moving or attacking take no time to charge; using items is moderately quick; casting spells or using special combat techniques can take much longer. Charge time can be reduced by training the appropriate skill.
* You can see what different actors are planning on doing, once they get to the Charge phase. Whoops, looks like that ogre's planning to use his smash attack on me; I'd better defend. That dragon wants to breathe fire on me; I don't have time to cast Resist Fire but I can quaff this potion I have.
* Different actions also require different amounts of recovery time after taking place (by putting you closer or further back along the Wait bar). If you decide to defend, then your next option to take an action will come up quickly because you didn't actually do much of anything (just change your stance for a bit).
* Different creatures pass through the Wait bar at different rates. Bosses tend to get turns very quickly...but their more powerful techniques still require significant charge time, giving you the possibility of being able to do something about them.
* Perhaps most importantly, you can manipulate your opponents' positions on the action bar. Some attacks have a "Cancel" effect, which moves the target back along the bar -- and the degree of cancellation increases as the target is closer to actually taking their action. The effect during the Wait phase is pretty minimal, but an actor in the Charge phase will lose almost their entire turn (getting sent back to near the end of the Wait bar).
You get some neat things out of this. For example, casting an area-of-effect spell on a single target, because you think that by the time it goes off, it will hit more enemies. Or there's an enemy moving towards you to hit you as you get your turn -- do you have enough charge time available to use a special cancellation tech, or should you just defend? Your ally is about half a second away from getting hit and won't get their turn in time; use an attack item and hope it goes off in time or try to run over to physically hit the enemy? A dragon's getting set to breathe fire on you; do you have time to get out of the way, or even to chug this potion of Resist Fire?
Applying this to Angband is actually not too difficult. You'd need to introduce the charging time (currently all actions are instantaneous on getting your turn), and you'd need for different actions to cost different amounts of energy (which we already have but we don't message it well). Most importantly though, you'd need the action bar; the system is no good if you can't see what your enemies are planning and adjust accordingly. Representing this in ASCII is tricky but by no means impossible...so long as the number of actors is reasonable.
Of course, a system like this would not work well when there can be dozens or even over a hundred enemies involved in a given fight. It works much better when there's 1-5 player characters and a similar number of enemies. I think the most chaotic fights I've played in the Grandia series had at most 8 enemies (and 4 PCs). This system would probably also be well-served by shortening the range across which combat can occur in -- there's not much you can do about dragonbreath if the dragon in question is 20 squares away.
Long story short, I'd lift wholesale the combat mechanics from the Grandia series of RPGs. In those games, there's an "action bar", and each actor in the fight is positioned somewhere along the bar. The bar has a "Wait" section and a "Charge" section. When an actor gets to the end of the Wait section, they get to choose what action they want to take. They then must pass through the Charge section, and when they get to the end of that section, they actually act. Then they're sent back to the middle of the Wait section to start their "turn" over again.
So far so simple. Functionally this is very similar to practically any other turn-based game. But you can do a lot with this framework:
* Different actions take different amounts of time in the Charge phase. Moving or attacking take no time to charge; using items is moderately quick; casting spells or using special combat techniques can take much longer. Charge time can be reduced by training the appropriate skill.
* You can see what different actors are planning on doing, once they get to the Charge phase. Whoops, looks like that ogre's planning to use his smash attack on me; I'd better defend. That dragon wants to breathe fire on me; I don't have time to cast Resist Fire but I can quaff this potion I have.
* Different actions also require different amounts of recovery time after taking place (by putting you closer or further back along the Wait bar). If you decide to defend, then your next option to take an action will come up quickly because you didn't actually do much of anything (just change your stance for a bit).
* Different creatures pass through the Wait bar at different rates. Bosses tend to get turns very quickly...but their more powerful techniques still require significant charge time, giving you the possibility of being able to do something about them.
* Perhaps most importantly, you can manipulate your opponents' positions on the action bar. Some attacks have a "Cancel" effect, which moves the target back along the bar -- and the degree of cancellation increases as the target is closer to actually taking their action. The effect during the Wait phase is pretty minimal, but an actor in the Charge phase will lose almost their entire turn (getting sent back to near the end of the Wait bar).
You get some neat things out of this. For example, casting an area-of-effect spell on a single target, because you think that by the time it goes off, it will hit more enemies. Or there's an enemy moving towards you to hit you as you get your turn -- do you have enough charge time available to use a special cancellation tech, or should you just defend? Your ally is about half a second away from getting hit and won't get their turn in time; use an attack item and hope it goes off in time or try to run over to physically hit the enemy? A dragon's getting set to breathe fire on you; do you have time to get out of the way, or even to chug this potion of Resist Fire?
Applying this to Angband is actually not too difficult. You'd need to introduce the charging time (currently all actions are instantaneous on getting your turn), and you'd need for different actions to cost different amounts of energy (which we already have but we don't message it well). Most importantly though, you'd need the action bar; the system is no good if you can't see what your enemies are planning and adjust accordingly. Representing this in ASCII is tricky but by no means impossible...so long as the number of actors is reasonable.
Of course, a system like this would not work well when there can be dozens or even over a hundred enemies involved in a given fight. It works much better when there's 1-5 player characters and a similar number of enemies. I think the most chaotic fights I've played in the Grandia series had at most 8 enemies (and 4 PCs). This system would probably also be well-served by shortening the range across which combat can occur in -- there's not much you can do about dragonbreath if the dragon in question is 20 squares away.
Comment