Name | dcss:brainstorm:combat: fleeing |
---|---|
Summary | Examination of monster fleeing behaviour caused by low HP, and suggested improvements. |
Added by | evilmike |
Added on | 2011-10-07 06:01 |
I think fleeing is problematic in crawl, and should be re-evaluated. In order to help, I've written a fairly thorough (though not complete) analysis from a gameplay-oriented perspective.
I've written quite a few words. If you want to skip to the part where I actually suggest something, start reading at the “possible solutions” section.
This page is only about crawl's monster fleeing behaviour caused by low HP. It is not about fleeing caused by other factors, such as cause fear.
The conditions required for fleeing to be triggered are defined in mon-behv.cc, with monster properties defined in mon-data.h. The conditions are as follows (as of Oct 7, 2011):
There are also conditions for breaking fleeing (such as when a monster is cornered) that I won't detail here.
I dislike the current way monsters flee. While I acknowledge that fleeing serves a purpose, I think it does more harm than good.
One thing to note is how common fleeing monsters are. This includes almost every enemy in the lair and the swamp, but also a number of very common enemies in the later part of the game (especially ugly things and slime creatures). Fleeing enemies also often appear in bands (ugly things, yaks, slime creatures, elephants…). I think it's fair to say that you will encounter large numbers of fleeing monsters on almost every level.
Fleeing is not too troublesome for ranged characters (mostly conjurers, and to a lesser extent bow/crossbow/throwing users), but it's a nuisance for melee specialists. Thus, I will focus on the sort of tactics fleeing encourages in melee characters.
Melee characters have a few tactics the game encourages them to use in order to deal with fleeing enemies, which I will list:
(a.) They can do enough damage that monsters die before they reach the 1/4 hp threshold. This is quite easy to achieve for low HP monsters, but difficult for stuff like dragons and elephants. Also, you generally won't be doing enough damage by the time you reach lair, so unless your character is very strong, yaks and other common enemies will flee more often than not.
(b.) They can carry around ranged weapons, soley for dealing with fleeing enemies. I would recommend all melee characters do this (junk wands can be good for low HP enemies). This solution isn't perfect, though. High HP monsters that are fleeing can be hard to kill with such weak attacks, and if you're fighting a group of enemies you'll probably want to devote your effort to the stuff that's fighting you, and not the stuff that's running away. Furthermore, stuff in corridors can be impossible to hit with ranged attacks, since it will retreat behind other enemies. While ranged attacks can be useful, usually you'll resort to tactic (d).
(c.) They can use poison branded attacks. This works well in lair, and I consider the venom brand to be highly valuable for the early game because it makes lair so much less annoying. Poison becomes less useful later on though, because some common fleeing enemies (slime creatures and dragons, particularly) are poison resistant.
(d.) They can chase the enemy into a corner. This is the most common tactic, the most effective, and the most annoying to use. Melee characters (even when augmented with ranged attacks) will tend to use melee to kill fleeing enemies. The best way to do this is to back it into a spot where the fleeing behaviour will be broken - generally a dead end or a corner. This tactic is effective, but rather boring. It's also very annoying in levels with open layouts - including all of Vaults, all of Swamp, and a couple of special dungeon layouts (particularly octagon levels).
(e.) They can simply outrun the monster and hit it while its fleeing. This works perfectly well for monsters less than speed 10, and sometimes works for monsters at 10. It does not work as well for ones with speed 11 or higher, unless you have swiftness, haste, berserk, or boots of running. Note that ugly things are speed 11.
(f.) Let the monster run away, and just ignore it (or try to kill it again if it comes back). This is usually a good option if you feel that killing the enemy would be too annoying. This isn't really a tactic for dealing with fleeing per se (we want to actually kill the monster, here), and I am only listing it because it exists as a sort of “default”. I won't discuss it any further.
(g.) Don't play a melee character. Perhaps you might decide that fleeing is so annoying/troublesome that you'll play a conjurer or hunter. This is also something I won't discuss further, since this is a strategic decision and not a tactical one.
I think these are all the main ways for melee characters to deal with fleeing. I might have missed a few minor ones. Of the tactics I've listed above, I believe (b) and (d) are the most common, and of these (d) is the only one that is universally available. It is, of course, quite common to use several of these tactics in conjunction with one another.
Now, here is the crucial question: of the tactics I've listed above, is the game justified in using fleeing to encourage them? I think the game is justified in doing so if the tactic is either fun or significant (gameplay-wise) to execute. Therefore, I will evaluate each tactic based on how (un)fun it is (when relevant), and on the gameplay contribution it makes.
(a.) Gameplay contribution: almost none. This “tactic” is mostly just a side effect of the normal melee playstyle. Fleeing behaviour might encourage you to favour attacks with higher base damage, but this is a minor contribution. In general you always want high base damage, regardless of whether your opponents flee. Therefore, while this tactic is important, it is fairly minor with regards to fleeing in particular.
Fun value: irrelevant.
(b.) Gameplay contribution: moderate-high. I think encouraging melee characters to use ranged attacks is one of the largest contributions fleeing gives to the melee playstyle. Unfortunately, as a melee specialist it can be hard to kill high HP enemies that are fleeing with ranged attacks, unless you resort to big guns like wands of fire/cold (which are usually better saved for uniques). Therefore, this tactic is fairly viable, but not always applicable.
Fun value: it can make combat feel more dynamic when your ranged attacks can actually kill the fleeing enemy. It can also greatly add tedium though, when you're tring (and failing) to kill something like a fleeing dire elephant. Tedium also arises when you have to conserve ammo or wand charges… you probably won't be able to use ranged attacks on every fleeing enemy.
(c.) Gameplay contribution: low in the early game, almost none after Lair. Also highly dependent on whether you find a poison branded weapon. For the most part, venom is desirable whether or not enemies flee. The main contribution fleeing gives is that it encourages you to use venom on enemies like yaks and elephants, which are common in the Lair. Characters generally pick up venom because it does a lot of damage, not because it is good for dealing with fleeing enemies.
Fun value: irrelevant.
(d.) Gameplay contribution: high. The way fleeing encourages you to position yourself in a way that the monster is cornered is very significant. Chasing an enemy (and cornering it) can encourage you to move into unexplored areas. It can also force you to move into already explored areas that you normally wouldn't walk towards otherwise. It's worth noting that chasing an enemy into an already-explored area tends to be rather boring, and doesn't expose the player to any danger. It is only significant in that it has a large effect on player behaviour.
Fun value: extremely annoying in open levels (which includes entire branches), and even moreso on octagon levels where there is often nowhere to corner an enemy (unless you dig a corridor yourself). Less annoying when it's easy to corner an enemy, but still tedious. The only time I would call this tactic fun is if you chase an enemy into an unexplored region… but it is often needlessly reckless to do so. In most cases, you will be using this tactic in safer, but ultimately boring ways.
(e.) Gameplay contribution: a bit lower than (d) but still significant. Overall this tactic is fairly similar to (d) in the effect it has, so I don't need to say much.
Fun value: it's more fun than (d) when it works. It's rather annoying when the monster is the same speed as you, though. Overall it's rather annoying.
Of the five fleeing-based tactics I've listed, the game is most justified in using fleeing to encourage (b), (d) and (e), when evaluated based on the gameplay effect.
However, I believe these tend to make the game less fun overall (particularly (d) and (e)). Hypothetically, I think that if monsters were to not flee, more would be gained than lost: the game would become more fun (and less tedious), but it would only lose a small of tactical depth. This is an extreme solution, and it may not be desired.
Overall, fleeing, as it is currently imlemented, makes the game less fun. It also makes the game more tactical, but this contribution is offset by the tedium it adds.
The goal: to reduce tedium associated with fleeing behaviour (and the tactics it encourages), without making crawl's gameplay significantly less dynamic.
I have tried a few things offline. The first thing I did was change it so monsters start to flee at 1/8 HP rather than 1/4. This didn't help very much: the main nuisances (yaks, slime creatures, etc) would still flee from you fairly regularly. It did make them a bit easier to pick off with ranged attacks, but overall this solution is unideal and rather crude (see the next section for a more advanced version of it).
Another (quick and dirty) solution I tried was just disabling fleeing for any monster of animal intelligence or higher. This simply doesn't work, though: slime creatures are one of the main nuisances, and they are I_PLANT.
The third thing I tried was disabling fleeing from low HP alltogether. I like this, but this solution is probably too radical, so I will not argue for it.
I think the following would be worth considering:
Make it so monsters will not flee if their HP is above a certain absolute number. Right now a monster is considered “hurt” if its hp is less than 25%. Perhaps an extra condition could be added: a monster is “hurt” iff (1) its hp is less than x% of its max hp, and (2) its hp is less than y.
x is currently at 25%. This might be a good value.
y should be a sufficiently low number… I would say somewhere around 10 would be a good start. Perhaps it could be the monster's HD (thus, for a yak y would == 7).
Note that under this proposal, the second number would be the only one that matters for most monsters. Generally a monster's HD is less than 25% of it's max HP. There are some exceptions though.
This would make fleeing less common, although it would still happen. I think it would be a good start though, and would fairly painless to implement.
The next thing to do would be to look at the conditions for breaking fleeing. One condition is this: if a monster is considered “healthy”, it stops fleeing. A monster is “healthy” if its hp is greater than 50% of its max HP. If this number were lowered (say to 33%), monsters would spend less time fleeing, and would also be easier to kill when they stop fleeing. Note that this number isn't only used for fleeing, though (unlike “hurt”).
Something else (more radical, and also less trivial than changing a few numbers) would be to break fleeing when a monster takes damage. Thus, if a yak is running away from you and you damage it, it can turn hostile again. This could happen 100% of the time it takes damage while fleeing, but it might also be worth considering a lower chance, like 50%, or perhaps basing it on the amount of damage dealt (say, the monster has a damage_dealt/current_hp chance of breaking fleeing).
I believe this would make fleeing significantly less annoying, but still preserve most of the tactical value it has.
This suggestion is somewhat separate from the other two and more complicated. due seems to like it.
Make it so if you are adjacent to a monster, it will not flee.
Or, to put it more elaborately, make it so if a monster enters the “fleeing” state and you are still next to it, combat proceeds as usual. If you decide to step away from it though, the monster runs away. To let the player know when this triggers, the monster should still get the “fleeing” brand under usual circumstances. The difference would be in the behaviour itself: a “fleeing” monster will attack you if it is able to, and run away if it is unable to attack you.
If you have any comments feel free to write them here or message me on IRC. There is also a forum thread where you can discuss this: https://crawl.develz.org/tavern/viewtopic.php?f=8&t=2777