Difficulty Settings

So I’m trying to think of ways to scale up the difficulty without relying on traits/starting conditions, mostly options that could be set during world generation to set an overall difficulty to the world. There could be a set of difficulty settings that set a canned value for each of these settings, then a custom setting that lets you set your own. Some of these are already implemented, some would just apply some scaling factor to values read in from the json, and some might require a significant amount of work to implement.

World Settings

Item spawn rate

  • Separate rates for specific categories of items (100% fewer guns, for example)
    Monster spawn rate
  • Separate rates for specific monsters (0% zombears, 200% hulks)
    Map special spawn rate (corpse clusters)
    Ratio of special to normal monsters
    Monster toughness scaling (HP, armor)
    Monster damage scaling (melee ability, melee damage, power of specials, rate of specials)
    Movement penalty scaling (lower movement rate penalties for monsters)
    “Hive” world generation rates (triffids, fungals, ants, bees)
    “Hostility” scale (increase sensory distance, increase chance for non-hostile monsters to turn hostile (ants?))
    Increase monster difficulty over time
    Decrease item spawn rate over time
    Item durability decay rate

Player Settings

Movement scaling (all moves cost +10% turns, etc)
Movement penalty scaling (bushes now cost +10% turns, etc)
Skill learn rate scaling
Damage scaling
HP scaling
Success rates for bionic installation/mutations

Here’s a nice little breakdown!

[spoiler][quote=“vache, post:1, topic:5856”]Item spawn rate
Monster spawn rate[/quote]
Definitely to both of these (as you may have noticed already)

- Separate rates for specific categories of items (100% fewer guns, for example) - Separate rates for specific monsters (0% zombears, 200% hulks)
But for these it is going to be just about as easy for you to just download a good text editor (I suggest Notepad++ for windows) and crack open the JSON files yourself (they are fairly self-explanatory). Thus it's highly unlikely they will ever be an option.
Map special spawn rate (corpse clusters)
Definitely.
Ratio of special to normal monsters
This ones another JSON thing I think. What you want to do is change how much the various specials are "worth" or something like that.
Monster toughness scaling (HP, armor) Monster damage scaling (melee ability, melee damage, power of specials, rate of specials) Movement penalty scaling (lower movement rate penalties for monsters)
Definitely.
"Hive" world generation rates (triffids, fungals, ants, bees)
This ones tied up with mapgen, so it's a bit more tricky IIRC. It's theoretically possible, but I'm not quite sure how to pull it off.
"Hostility" scale (increase sensory distance, increase chance for non-hostile monsters to turn hostile (ants?))
This one should probably wait until we get a better attitude system (because trust me,the one we have right now is really, really kludgy).
Increase monster difficulty over time Decrease item spawn rate over time
Monster difficulty, probably not. We do have some plans for maybe working on making there be more specials over time, but I'm not sure what's going on with it. Reducing item spawn rate over time is probably going to be part of the mainline, to represent other scavengers scavenging and various things rotting/breaking.
Movement scaling (all moves cost +10% turns, etc) Movement penalty scaling (bushes now cost +10% turns, etc)
These would be interesting. I don't think they would be that hard to implement either.
Skill learn rate scaling Damage scaling HP scaling
These are all pretty much included in the traits system already.
Success rates for bionic installation/mutations
Ideally I'd like for bionic difficulty to be moved out to the JSON files eventually, at which point you could edit it there. Mutations are probably a trait thing (and we need a "Bad genetics" trait that increases your chance of a bad mutation).[/spoiler]

I imagine the player ones as being separate from the trait system, so that if you wanted, you could start a game with a 50% HP handicap and then stack flimsy on top of that. For the special/individual spawns as I understand it, they all have a relative frequency option, and it would just scale that frequency. Not sure how it would affect the cost multiplier though. Probably have to scale that as well.

The monster difficulty over time and item spawn reduction over time could both be controlling the rate at which that happens.

The idea is to create objective difficulty settings so that we can have things like an easy world/normal world/hard world/custom world, and the players that want a more difficult experience can get it by adjusting a handful of values, rather than modifying a large set of json files

The thing is that editing the JSON files is literally just “adjusting a handful of values”. If I wanted to make there be double the amount of rattlesnake spawns, for example, then I would open up monstergroups.json, do a search for “mon_rattlesnake”, and then adjust the two frequency numbers (one, if you read that the last group isn’t actually a spawn group) right next to it to be double their previous values. It’s just not really worth it to spend a chunk of development time to implement a flexible enough system (that can support any type of modding by players) that literally shows and does exactly what any text editor does when you open up the JSON files.

People get scared of the JSON files, but they were actually designed to be easy for non-coders to mod, and are very self explanatory. Simple changes like that are really just as easy as opening up the right file, doing a search for the monster/item id, and then changing a few values (all of which have titles next to them telling you what they do). For en-masse changes (such as adjusting all monster speed/melee skill) this is obviously impractical, and may warrant an option, but for altering the stats of an individual monster it’s just not worth the time IMO.

But if you want to change “mon_zombie_dog” that’s 21 entries. “mon_zombie_smoker” is 8. Editing every single entry for special zombies just to take the number in there and multiply it by 2 or 3 or whatever have you is still a colossally tedious task, regardless of how easy it is.

More importantly, changing the json files will make the change for every single world. The ideas put forth in this thread are for setting the properties of a single world at creation.

Maybe so. IMO it’s still not worth the time to try to implement something like that. I’m not against anyone else doing it, but I know that I certainly won’t be working on it with other thing to work on instead.

If mods could be given categories, then it would be possible to make “difficulty” mods. If you could add a setting to say that a mod was incompatible with other mods with the same category and… getting off-topic… Some of this sounds like something that could be done with mods, make a package of data modifications for more high-end zombies, or fewer zombies amongst the wildlife. It could end up filling your list with too many mods, but having 0%, 10%, 40%, 80%, 120%… mods for specific aspects of the sawn rates would probably provide enough control over them and having mods that affected the spawns of multiple things at once in this way(such as the spawn rates of all guns) might actually provide some small advantage over editing the files. But there is no real chance of anyone making all these mods, so you may as well set up some sort of repository of…
Forget the mods, just make a thread for people to share their difficulty adjusted files. If you want a world with no guns, then chances are someone else does too, and maybe they have a copy of the files edited for that purpose that they are willing to share.

I think moving these options into a mod or relying on individual json modifications to achieve them is unnecessary and over the top. What I’m proposing is these set of parameters to be set during world generation and used to determine world difficulty. Default selections may be used to create a set of difficulty values, such as “very easy”, “easy”, “normal”, “hard”, “very hard”. Under this, for example, normal might have all scaling set to 1, this would be exactly the same as the game we have now, while hard might have scales relating to monster strength set at 1.5 and scales relating to item abundance set at 0.5, etc. The end result is a fairly comprehensive, yet simple method of scaling difficulty up and down on a world by world basis.

If you are new to the game, you might play on very easy for a while, just to get the hang of things. After a few successful games, you can make a new world on normal and fare better now that you’ve gotten to understand the mechanics better. Then, once you become a master of survival, you can set it to very hard for a real challenge. Or you can set a combination of custom settings and then share your settings with others and see how they do.

Actually cib added a system where you can script this kind of thing with Lua files. There’s an example “fast zombies” and “slow zombies” script packaged with the experimentals. It’s pretty straightforward, you can write a little script that adjusts the stats of every monster of a certain kind, so if you wanted fast, frail zombies, you could do it, or slow, tough ones, or any combination.