The making of a well-designed "Rest Until Healed" system:

Discussion in 'Suggestions' started by DragonRider, Jul 22, 2011.

  1. DragonRider

    DragonRider Member

    I was checking the development blog today and noticed an important entry in the 1.04 plan: "Look, seriously, at every request for an auto-rest button and then try to come up with some way to use it that isn’t awful." This tells me that the devs really want to eliminate the tedium of spamming spacebar to regenerate, but you're worried that it'll screw up other elements of the game design if you stick it in without making other changes. Having played a fair number of roguelikes in my day, I figured I'd talk a whole bunch about game design in general, the way this problem is handled in other roguelikes, and the way Dungeons of Dredmor works specifically in hopes of getting some ideas flowing.

    I can already tell that your main worry about adding automatic resting to the game as it is right now is that it would make food and drink largely obsolete and take a lot of the tension out of exploring. Playing carefully would mean that there's no reason to ever start a fight at less than full health and mana. You wanted to create a fast-paced game where the player kept moving and relied on scavenging cheese and booze to keep alive. That's a commendable goal, and you think that a rest-until-healed command would screw all of that up. Which it would. Except all those problems are already in the game as it currently exists!

    For one thing, you can already use natural regeneration to heal up as long as you do it manually. Since strong food and drink has some utility in combat, and there's no actual gameplay-related penalty to resting, it's always optimal to spam spacebar to heal between battles and save your consumables for when you desperately need them. The only downside is that it's unbelievably tedious. Having the advantages provided by food and drink serve as a safeguard against the hostility of the dungeon is all well and good, but having it serve only as a safeguard against your own thinning patience makes no sense from a design standpoint. Furthermore, having no limiting factor on the amount of time the player spends introduces some other issues. If you were trying to create a bot that could beat Dungeons of Dredmor with the highest possible success rate, the optimal strategy would be to grind on the first floor until hitting the max level, then steamrolling the rest of the game. That's pretty odd!

    And also, consumables are simply not powerful or plentiful enough to keep you going by themselves. Even the strongest of cheeses only heals like 17 health, which isn't terribly impressive when you have 40 hit points to regenerate. And your inventory is always so cluttered with bolts, emergency items, and crafting materials that you're forced to leave most of the food you find lying on the dungeon floor (or lutafisking it). There's just no room for eight separate stacks of cheeses in your backpack.

    Every character I've made so far has died on level 4. That isn't because the encounters on level 4 are super-dangerous. It's because that's the point where monsters are just barely tough enough to put a dent in your momentum. Virtually every fight leaves you with a non-trivial amount of health and mana to restore. There aren't enough diggle eggs in the world to handle all of that, so you're forced to rest manually. CONSTANTLY. Eventually I get so bored of this that I do something lazy and reckless and get killed by a monster which should have been no threat at all because I didn't bother resting to recover my health in the previous room.

    So you recognize that an automatic resting command is a necessary thing, but you want to make sure the game is set up so it adds something to the experience rather than taking things away. How to go about this? Well, basically every other roguelike ever to have existed uses a nutrition system to solve precisely these problems.

    In the original Rogue, every step you take costs you some nutrition. The only way to get more nutrition is to eat rations. The only way to get rations is to pick them up off the dungeon floor, and the only way to generate new rations is to descend through the dungeon (permanently; you can't backtrack) and generate new levels. It's an extremely punishing system. It's very, very easy to starve to death. You can't afford to regenerate by just sitting in a safe place very often, and the cost of backtracking through a level to explore one or two more rooms is so high that you're often forced to just leave them behind and dive deeper in search of more food.

    Nethack made the food clock more lenient by letting you eat the corpses of the monsters you kill, so as long as you're progressing and killing monsters at a good pace you won't starve. Nethack's food clock is actually SO lenient that being so stuffed that you can't eat a corpse for an important resistance is a more common problem than starvation.

    Dungeon Crawl's nutrition system is somewhere in between. You can eat monster corpses, but unless you have a special attribute or magic item, you can only do it if you're already fairly hungry. So most of the time you're sustained by your kills, but if you hit a particular rough patch where your nutrition expenditures on spellcasting and healing are way out of proportion with the number of things you're actually managing to kill, you're forced to start dipping into your limited supply of permanent rations. There's no constant, looming threat of starvation, but there's something encouraging you to keep your rate of progression up.

    The problem is that adding a traditional nutrition system to Dungeons of Dredmore would be pretty hard at this point because food already serves an entirely different purpose. It wouldn't make much sense to have it serve as a means of speedy regeneration AND a means of not starving to death; those mechanics would interfere with one another too often. Which makes me think of Spelunky.

    Spelunky is a neat little platformer/roguelike hybrid, where your little Indiana Jones look-alike descends through randomly generated caves filled with treasure, obstacles, traps, and enemies. There's no food or starvation in Spelunky. However, if you spend 2 minutes on one level, you get a warning message. Thirty seconds later, a giant, unkillable ghost spawns and starts moving towards you. You can try to outmaneuver it to an extent, but if it touches you it's instant death. Most levels are short enough that you never even have to think about the ghost. But sometimes you'll be forced to abandon a plan to get some of the most well-hidden treasures on a level because of the ghost, and that provides incentive to keep to a brisk pace as much as possible.

    (Continued in next post...)
  2. DragonRider

    DragonRider Member

    If I had a full suite of modding tools and the expertise to use them, my first attempt at solving the regeneration problem in Dungeons of Dredmor would probably go something like this:

    1) Create a hotkey that causes your character to repeatedly wait until your health and mana are at maximum, an enemy comes into view, or you manually cancel it by moving. (Make sure that it doesn't just go forever if you have a mana upkeep effect on you.)

    2) Increase the effects of food and drink across the board. It's kind of sadistic to have anything but joke items (like Aged Steaks) heal for less than 10. Even at level 1 Sewer Brew is scarcely worth the effort.

    3) Increase the size of the inventory so that you can carry more of the food that you find. Or have a separate inventory for food and drinks. No, wait, I've got it. A special side-inventory just for cheeses. It's accessed via a radial menu like the Secret-of-Mana-style system you used to have for spells. You can call it the Cheese Wheel.

    4) Make it so that the enemy spawn rate gradually increases the more turns you spend on a level. After a really long time, enemies from the next level down also start getting added to the spawn table. Progressing too slowly will eventually get you overrun and force you out of the level before it's completely explored. Eating to restore your stats rather than resting exclusively is necessary to get all the loot before this happens. Use occasional messages to warn the player that this is happening. (Maybe stuff like "You start to hear more commotion around you." or "You hear the thunder of footsteps down below.") You might need to also start reducing experience gains after a point to keep this from being easy to abuse for extra levels if your equipment is really good (not that infinite grinding isn't already possible anyway).

    5) Alternately, or additionally: spending way too long on a level results in Dredmor locking onto your position with his lichly scrying spells and summoning some horrible creature to hunt you down and kill you. The creature moves at 1/2 or 3/4 speed, so you can outrun it, but it becomes impossible to slow down or rest or it'll get you. If you get too far away it teleports near you again (but never directly adjacent to you). You can sense it through walls, so you don't run into it by accident. To escape it you have no choice but to descend to the next level.

    And there you have it. Fueling your exploration primarily with consumables is more feasible because food is stronger, resting to heal when you can't spare the food is doable without driving the player insane, and there's a meaningful pressure to use food rather than rest whenever possible because it's ultimately safer and more rewarding. And no instant death from starvation to stress out newcomers, either. Finding the right balance for the spawn timers would be tricky, but I think it would work.

    If anyone has any other suggestions for implementing the relationship between food, resting, and time in an intelligent, well-designed way, feel free to contribute.
  3. DuckAndCower

    DuckAndCower Member

    Alright, I never do this, but I'm posting without reading your entire treatise, just because a solution pops to mind immediately. Sorry if you mention it up there, but I didn't notice it when I skimmed down.

    Anyway, it's simple: your health and mana don't regenerate over time (unless, of course, you've used some food or booze). If necessary, increase consumable drops to compensate.

    Voila, no more mashing on the spacebar.
  4. geddoe

    geddoe Member

    *is vampire*
    *rests until healed*

  5. DragonRider

    DragonRider Member

    "Anyway, it's simple: your health and mana don't regenerate over time (unless, of course, you've used some food or booze). If necessary, increase consumable drops to compensate.

    Voila, no more mashing on the spacebar."

    That would indeed be a possible solution, but it would take a LOT of work to properly balance it. The damage dealt by every enemy and the mana cost of every spell would need to be completely rethought from scratch, and that's just for starters. Adjusting the early game to be not completely impossible would also take some doing.

    If the game had been designed that way from the ground up it probably would have worked, but retooling the system to work that way at this stage of development might not be feasible.
  6. DuckAndCower

    DuckAndCower Member

    Just read your whole post. I think I agree completely with your suggestions. I find that I'm starting to usually play a vampire just because food is such a pain in the ass to micromanage. If food were more powerful and resting had consequences, my spacebar would be a lot healthier.
  7. Pips

    Pips Member



  8. Bhauk

    Bhauk Member

    @DragonRider Have you played any vampire chars? How do you feel that your proposed changes would affect the gameplay of one (if at all)?
  9. I think just holding spacebar as long as you need would be enough. Simple and efficient.
  10. mm

    mm Member

    Is nr. of turns taken into account for final score calculation? Haven't finished the game yet, so this may already be the case... I think stone-soup does this.
    That way one could use the lazy "press R button before/after every battle" aproach, but score at the end would be abysimal.
    Another idea would be, since you have auto-generated quests already, add a quest that says e.g. "go down 2 levels and bring item to person x in less than 300 turns".
  11. DragonRider

    DragonRider Member

    "@DragonRider Have you played any vampire chars? How do you feel that your proposed changes would affect the gameplay of one (if at all)?"

    I have a Vampire character running right now (primarily because I just couldn't tolerate the current healing system for another second), and I don't think a proper regeneration system would change all that much about the skill. Partly because Vampirism has a lot of benefits in combat, and partly because any sensible Vampirism build should have a reliable means of healing between battles anyway, just to be safe. Fungal Arts is great at it at the moment, and Psionics works really well too (Healing Crystals is a good fallback to have, and Nerve Stapling--which is godlike in any battlemage build; I don't get why more people don't rave about it--is a pretty safe way to gain health in combat too). Fleshsmithing also has its signature heal, but unfortunately Fleshsmithing as a whole is a comparatively weak school at the moment (that's a discussion for another thread).

    I guess maybe they would be slightly stronger than they are now, since they should need to rest less often and that has tangible benefits in the proposed system, but stronger consumables and proper incentive to use them would mean everybody is resting less often than they are now, so the relative gap in turns wasted sitting around would be narrower than it currently is.
  12. Tacroy

    Tacroy Member

    The problem with increasing spawn rate is that Promethian + Blood Mage or counter-strike Vampire builds absolutely rock out on large groups of enemies. If you increase the spawn rate, you'll make things easier for those builds, not harder.

    Also, just FYI - Fungal Arts is strictly better than Vampirism, since you can just eat a Greedy Bunglecarp to get the vampirisim ability. It's a bit wasteful to have them both at the same time.
  13. DragonRider

    DragonRider Member

    Natural Vampirism and Greedy Bunglecarps stack, Vampirism scales and the mushroom doesn't, Fairywodgers are doubly useful to someone with no natural healing, the summonable slime is the perfect way to carry you through floor 1 while you're getting established, you can feed on the slime between battles...there are a lot of benefits to having them together. I find it works quite well.
  14. Tacroy

    Tacroy Member

    I'm pretty sure the mushroom scales - I have a character who gets back 12 HP per hit right now, and I don't think it returned that much HP on earlier levels.

    Yes, Fairywodgers are more useful to someone without natural healing, but wouldn't it be even better to just to turn your Vampirism on when it's useful, and have natural healing all the time?

    Yes, the summonable slime can carry you through floor 1, but wouldn't it be even better if you didn't <i>need</i> to be carried?

    It's not that Fungal and Vampirism work well together, it's that Fungal is strong enough to carry Vampirism.

    But anyway that's off-topic.

    Another idea is to provide diminishing returns in terms of XP based on how long you've spent on the level; that's the only reason why you'd want to keep the player from resting all the time, after all. The game becomes too easy if you go into every battle fully rested, so make every battle give you less XP if you try to do that too often. The game should provide text prompts like "the scenery is getting boring" and "haven't you seen this room like ten times?" to indicate that the player is getting less XP. Once the player leaves the level, the counter for that level slowly resets, and if they re-enter the level before it goes all the way back up they get messages like "you're sick of this place".
  15. Yippers

    Yippers Member

    @Bhauk As a mostly permanent vampire, I do not think a rest system will affect vampires. The strongest argument: the rest system already exists (for all intents and purposes), and it does not affect vampires. Vampirism, pretty much, equates to significant HP regeneration during combat at the cost of (potentially) a weakened state in the beginning of battles. Natural healing thus has the opposite relationship: weaker HP regen in battle, full HP starting battle. To break vampirism means boosting HP regen in battle for natural healing--which will break a lot more than just vampirism.

    @DragonRider For future reference, I advise two things. One, make use of headers. In academia, starting a paragraph with the subject matter is enough because readers are expected to read all of it. Writing for the interwebs doesn't grant that luxury. Which kinda also ties into two: Condense your points. :p

    But anywayssss...

    Absolutely. The current resting system is not fun. If time and tedium were off the table, it's obviously broken. I think everybody can agree with that.

    Regarding your solutions:

    1. No. This is the current system minus the tedium, right?
    2. Yes, given some some details. Crappy human food is why I became a permanent vampire.
    3. No. As you mentioned, "there aren't enough diggle eggs in the world to handle [regeneration on later levels]." An inventory plugin will do little in the long run, I think.
    4. Yes. :3
    5. Nope. You already suggested 4, which is better.
  16. DragonRider

    DragonRider Member

    @Tacroy - I think the fact that the dungeon has trouble creating scenarios that threaten a fully-healed player (at least early on; I haven't been below level 4 yet) is an issue with enemy design moreso than a problem that needs to be solved via regeneration. Dungeon Crawl generally assumes you'll be at or near full health and mana for every encounter and it has no problem wantonly slaughtering low- and mid-level adventurers. The first time you see a centaur, you have a panic attack and need to pick your next couple of moves very carefully or you're going to drop dead in no time. When you start seeing Octos in Dungeons of Dredmor you sigh and do the same thing you've been doing for the past two and a half hours.

    Purely orthagonal movement/attacking and base speed makes most melee enemies toothless and ranged enemies shoot rarely and do very little damage. That's an issue which I think needs to change regardless of what gets done with regeneration.

    @Yippers - I'd be a lot more likely to do headers if these forums let you do bolding or underlining or anything even remotely useful like that. And for the record, those were five steps towards solving the problem, not five separate solutions. #5 was mostly put on the table because, as someone mentioned earlier in the thread, some builds have less trouble with large volumes of enemies than others, and having a harder cap on time spent on a level to serve as a safeguard against that seemed like it might be useful to think about.
  17. Yippers

    Yippers Member

    @DragonRider, @DuckAndCower "Anyway, it's simple: your health and mana don't regenerate over time (unless, of course, you've used some food or booze). If necessary, increase consumable drops to compensate."

    If food drops (stacks of food) or more potent food drops (more total healing) scaled to deeper levels, then it won't take a lot of work to balance. At the moment, imho, the game isn't too balanced towards foods anyways.
  18. Yippers

    Yippers Member

    @Tacroy "Another idea is to provide diminishing returns in terms of XP based on how long you've spent on the level"

    This seems more of a punishment. DragonRider's suggestion to increase monster spawns, on the other hand, forces players to move through tension.
  19. ArchoX

    ArchoX Member

    I have a idea too..what about add thirsty and hungry bar? Who's with me?
  20. Yippers

    Yippers Member

    Please understand that I'm not bashing. Just mentioning things I learned from many years of lamenting why people keep saying "tldr" in response to my opening posts. Alternative measures might be CAPS or ======= (techniques that pure text GameFAQs guides use).

    Ahh, my misunderstanding. Implementing many of these measures may prove to be a tad excessive (and costly to a lone programmer). While a lot of your suggestions are definitely promising, I think one simple fix is all our game needs.