Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: A "mobilization level" setting  (Read 1650 times)

Athmos

  • Bay Watcher
    • View Profile
A "mobilization level" setting
« on: April 13, 2010, 08:45:51 am »

Hello everyone !

I do not post much here (even if I've been lurking here and playing DF for years), but the current issues of dwarf working themselves to death gave me an idea about how to solve it, and I actually think it's a good idea...

So here I submit it to the forum wisdom and possible consideration by The Great Toad who watches over us all through any standard internet connection.

Warning : English is not my first language, and I'm very aware my grammar could possibly hurt many an innocent reader. Please don't hesitate to point at corrections I should make to this post to bring it up to an acceptable quality of English.

In 40d and previous versions, our beloved dwarfs had a sometime irritating tendency to stick to their own agenda, and went for a drink, a nap or a party in the middle of whatever they where doing, which sometime had dire consequences when all your military were busy escorting the squad leader to the booze stockpile where he was drinking himself silly while the goblins despoiled your fortress.

Now we have the opposite issue, where our soldiery risk death of thirst, hunger or exhaustion more than combat, and some of our citizens may quite literally work themselves to the brinks of death.
Of course, this is quite annoying too.

I think that the best way to avoid both type of issues would be to have a "threshold" setting available, possibly in the Z menu, that could be set to indicate how industrious or lazy your dwarfs should behave, from "perpetual holiday" (or something equivalent), where your dwarf only work if they positively want to, that you could use to celebrate "foundation day" by throwing huge parties, to "dictatorial", where your dwarfs are expected to work themselves to death.

I will try to illustrate this idea with an hypothetical representation of dwarfs needs/desire on a 0-10 scale. Let's imagine a thirst scale on that guide.

- 0 : your dwarfs just drank a second ago, and isn't thirsty at all.
- 2 : the dwarf could appreciate a good ale but really does not need it. Would only get more booze if partying.
- 4 : let's say he think about drinking, and would go fetch some booze in a 40d setting.
- 6 : the thirsty tag appears, your dwarf get a bad thought if it get there.
- 8 : the dehydrated tag appears, and your dwarf gets a second unhappy thought.
- 9 : the dwarf will disobey and drink to save is life unless his personality traits makes him really very obedient.
- 10 : Death by dehydration

A similar scale could be devised for hunger, tiredness, and whatever dwarven desire could exist now or later (throwing parties, seeing friends/family, getting a drug fix, slaughtering some kittens, etc).

Then, you could set a mobilization setting that would go (for illustration purpose) on a similar scale, from 0 where your dwarfs party all day and do whatever their personality make them inclined to do, to 10 where every dwarf is expected to work or fight to death. If your mobilization level is set to 5, dwarf reaching the 5th level of thirst, exhaustion or hunger would drop their work, go for a drink, a nap or a snack, and then return to work.
Of course, there could be some happy thoughts associated with living in a lax fortress, and unhappy thoughts associated with living in a very strict and dictatorial environment.
Personality trait could adjust those values : Maybe a very industrious dwarf would continue working until he reaches level 6 while only 5 was required, but maybe he shouldn't get an unhappy thought for it. Or maybe he should still get one, for ranting about all those who don't work as much as him, as he would maybe assume the other (comparative) laziness are what is making him work until he become really thirsty.
For very strict settings, maybe the guards (and sheriff, hammerer) could enforce the order and punish lazy dwarf with prison sentence.

One can think of many additional game mechanisms that could be implemented around such a feature. For example, in a prolonged lax environment (level 3 or below), your dwarf could get regular happy thoughts from it, until they become accustomed to it and get a unhappy thought from time to time if you suddenly up the mobilization level, even to a reasonable threshold. Dwarfs who lived in harsh political setting for prolonged time (say, threshold at 7 or more) would get regular unhappy thought from it, etc.

Maybe nobles, guild masters or other entities could want the mobilization level to be set at some value or others, which would add some additional importance to it.
Another possibility could be to have separate threshold for global population, military (independently of the settings for duty), maybe guild members if and when guilds come back.

Anyway, I think the core mechanism (having a single global threshold setting that would determine how lax or obedient the population is) is probably not very hard to implement. After all, there are already thresholds in the game to manage such things, that make a dwarf decide when he should go to sleep, or have a drink, or throw a party.
Even just a minimalistic implementation would certainly help with the current issues, without giving the player an unrealistic complete control over the little buggers or something similar.

Then it shouldn't be too hard to add some of the additional features (interaction with the law, interaction with dwarf personality, habituation to lax setting, etc) if people likes them later. I would be nice to be able to let your dwarfs live more or less comfortably, but mobilize the population when required, for example during a siege, because you need to complete the new farming district before the winter when the duke absolutely want to have his royal tomb completed before anyone dare take a sip from the booze stockpile.


What would you think of such a mechanism ? What would you think could make it more interesting, and would you like to see such a feature implemented ?

I have made an entry for this suggestion in the eternal suggestion list, here.
« Last Edit: April 14, 2010, 04:03:46 am by Athmos »
Logged

Rowanas

  • Bay Watcher
  • I must be going senile.
    • View Profile
Re: A "mobilization level" threshold setting
« Reply #1 on: April 13, 2010, 09:03:24 am »

I fully support this. Your idea is simple but effective and has a future depth to it that would truly enrich the game.

P.S. You made a few mistakes, but I won't point them out, I don't do it for everyone else's posts.
Logged
I agree with Urist. Steampunk is like Darth Vader winning Holland's Next Top Model. It would be awesome but not something I'd like in this game.
Unfortunately dying involves the amputation of the entire body from the dwarf.

Pilsu

  • Bay Watcher
    • View Profile
Re: A "mobilization level" threshold setting
« Reply #2 on: April 13, 2010, 09:13:29 am »

I think self-preservation should be prioritized over players' desires.
Logged

Athmos

  • Bay Watcher
    • View Profile
Re: A "mobilization level" threshold setting
« Reply #3 on: April 13, 2010, 09:31:28 am »

I think self-preservation should be prioritized over players' desires.

Actually, I agree with you but I don't think this feature would have such an effect at all.

With the feature I propose, the player would set a level of mobilization, but your dwarf could either comply and possibly get unhappy thoughts if you are demanding too much of them, or disobey (or possibly revolt, revoke the mayor, provoke a mutiny, etc...) if forced to work too much for too long or if their personality inclines them to. Possibly getting unhappy thought too.

About self-preservation specifically, I think most dwarf should try to disobey if their life is in danger, unless their personality is specially fanatical or if the law enforcer are very convincing (e.g : numerous guards) or something.

A lazy dwarf could decide to go to sleep before the mobilization level would normally allow it, a drunkard (I mean even more drunkard than average) would go for a drink before others, etc. If you set a high mobilization level, maybe those could constitute crimes and be associated with punishment...

Anyway, this is not supposed to be an absolute setting at all : the basic idea is only to give to the player the control of the thresholds that are already in place.

It wouldn't force dwarfs to do anything more than it already does, wouldn't give absolute control over anything, and would still generate unhappy thought from over work abuse.

I really don't see how it would be prioritizing the player desires over the dwarf self preservation instinct. It's just the current way it's working, you would just be able to set the threshold, but would still have to face the consequences. You can choose to be in a dictatorial absolute monarchy, but your dwarf could still disobey, by any mechanisms The Great Toad wishes to implement.
The basic is just going stop working to go have a drink, a nap or a snack if they need it.

There are many possible extensions on that aspect, but it would make for an entire different topic, about dwarfs reaction to what they perceive as poor political management, from dwarfs scared of the government fleeing the fortress (emigration !) to mutiny, elected leader revoking, guild strikes, riot, etc, but I don't think this is the place to develop it.
« Last Edit: April 13, 2010, 09:56:03 am by Athmos »
Logged

Athmos

  • Bay Watcher
    • View Profile
Re: A "mobilization level" setting
« Reply #4 on: April 14, 2010, 04:03:00 am »

I have entered this in the eternal suggestion list, here.
Logged

zwei

  • Bay Watcher
  • [ECHO][MENDING]
    • View Profile
    • Fate of Heroes
Re: A "mobilization level" threshold setting
« Reply #5 on: April 14, 2010, 09:25:37 am »

I think self-preservation should be prioritized over players' desires.

Indeed.

But often, dwarves have no idea that there is a danger. AI just can not recognize overall 'strategic' situation.

For example, Pulling lever can be extremelly important because it seals fortress.

Also, take this example of possible feedback situation:

Brewer gets thirsty and cancels brewing job when fortress has no water or booze. If dwarf values self-preservation and refuses to work when thirsty player could end up with fortress dying of thirst.

Game should detect overall "desperation" of situation and adjust their priorities accordingly.

Brewer, for example, should sleep well and take breaks to eat snack if fotress has large supply of booze, but he should ignore his bodily needs if fortress hovers near zero barrels of booze.

Similary, carpenter should detect that queued bucket task is important because there are zero buckets avaiable and patient is thirsty.

Basically, game should undertand better when task is emergency and when it is just busywork/training. Ideally, player should see dwarves working extra when it makes sense. Not when producing rock mugs on repeat.

Athmos

  • Bay Watcher
    • View Profile
Re: A "mobilization level" setting
« Reply #6 on: April 15, 2010, 03:41:04 am »

Don't you think this would be much harder to implement ?

Detecting the "emergency" of a given job is quite hard for an AI, specially as it might get quite complicated. If for example you are on a shortage of booze, it might be because no barrels are available, not because no one is trying to make booze, and barrels might not be available because they are stored near a combat zone, which would make the military task the one actually urgent to solve the issue.

The simple global threshold setting I'm proposing would do the trick, and I think it fits quite well with the kind of global orders the player is already able to give (no going outside, no refuse gathering, etc). The dwarfs personalities would still influence the way they act.

Simply the player would be able to choose between unhappy thoughts from overworked dwarfs (the current default state of things) and happy lazy dwarfs doing as they please.

Also, what I think is the best aspect of such a feature is that while it's simple to implement, many features could easily plug on it, for example with the way the nobles or internal faction* could interact with it later.

(I have guilds in mind, but why not a religious cult or an assembly gathering to revoke the mayor or riot against the nobility ?)
Logged

zwei

  • Bay Watcher
  • [ECHO][MENDING]
    • View Profile
    • Fate of Heroes
Re: A "mobilization level" setting
« Reply #7 on: April 15, 2010, 07:16:03 am »

Don't you think this would be much harder to implement ?

It really depends on how it is implemented.

For example, simple heuristic of:

(untasked items of same class as workshop order = 0 && recent failure to task one)
Work hard and ignore bodily needs untill you are near death
(untasked items of same class as workshop order < 10)
Work hard and ignore bodily needs untill you are unconfortable
(untasked items of same class as workshop order < 100)
Work in relaxed manner and dont ingore bodily needs
(untasked items of same class as workshop order >= 100)
Take your time mate, have one more ale ...

basicaly, alert level per task = 10-log(number of items) or so.

Gets fairly desirable results for pretty much anything. If you have nothing, first task gets done promptly and followups gets derecasingly less priority.

Of course, this does not work with everything, but it could take into account other things (mandates for example).

I do not like global setting because it sets everything to one level of priority which can be undesirable - for example, if i want wall built fast, i do not require my tailor work in sweatshop style. If i want crafter dwarves to work leisurely, i do not want food production suffer.

---

What I suggest that if your setting is implented, let player choose between same base mobilization for everyone and having ai determine itself what its mobilization is based on current task and enviroment.

Ilmoran

  • Bay Watcher
    • View Profile
Re: A "mobilization level" setting
« Reply #8 on: April 15, 2010, 08:41:58 am »

Don't you think this would be much harder to implement ?

It really depends on how it is implemented.

For example, simple heuristic of:

(untasked items of same class as workshop order = 0 && recent failure to task one)
Work hard and ignore bodily needs untill you are near death
(untasked items of same class as workshop order < 10)
Work hard and ignore bodily needs untill you are unconfortable
(untasked items of same class as workshop order < 100)
Work in relaxed manner and dont ingore bodily needs
(untasked items of same class as workshop order >= 100)
Take your time mate, have one more ale ...

basicaly, alert level per task = 10-log(number of items) or so.

Gets fairly desirable results for pretty much anything. If you have nothing, first task gets done promptly and followups gets derecasingly less priority.

Of course, this does not work with everything, but it could take into account other things (mandates for example).

I do not like global setting because it sets everything to one level of priority which can be undesirable - for example, if i want wall built fast, i do not require my tailor work in sweatshop style. If i want crafter dwarves to work leisurely, i do not want food production suffer.

---

What I suggest that if your setting is implented, let player choose between same base mobilization for everyone and having ai determine itself what its mobilization is based on current task and enviroment.
I don't like the idea of an AI that can override what I tell it to do.  Maybe I have a really good reason for trying to tell my workers to do something faster.  For example, right now in my current fortress pretty much everyone is a hauler or a builder [mason].  Why?  Because I'm 2/3 of the way through winter, have dug out the underside of my brook to get usable ice, and am building an ice-skating rink above my "surface" farms, but I know that come Spring the ice will evaporate so I need to finish soon.  Under any reasonable AI/heuristic, half my dwarves would be telling me to sod off, because unless you specifically programmed AI to include, say, seasonal importance of tasks (which is going into the overly complicated/detailed end), my workers have no reason to hurry.

Self-preservation should be implemented, but only to a reasonable extent.  After all, what self-preservation-minded dwarf is going to pull the magma doomsday lever?

While I can see how a global setting might be somewhat limiting, I think its a good choice.  Alternatively, the ability to set, at the task level, a priority would work well (and maybe the ability to set a default importance level).  Basically, after creating a task (either a workshop order or a building construction order), you have the option to increase its priority from 1 to 3 (1: Only do it if you have nothing else to do; 2: Do it if your not hungry/thirsty/tired yet; 3: Do it now!  Now now now!!).  This would be done from whatever screen you normally use to cancthe task.
Logged

zwei

  • Bay Watcher
  • [ECHO][MENDING]
    • View Profile
    • Fate of Heroes
Re: A "mobilization level" setting
« Reply #9 on: April 15, 2010, 09:55:19 am »

I don't like the idea of an AI that can override what I tell it to do...

Aehm:

Quote
What I suggest that if your setting is implented, let player choose between same base mobilization for everyone and having ai determine itself what its mobilization is based on current task and enviroment.

Ilmoran

  • Bay Watcher
    • View Profile
Re: A "mobilization level" setting
« Reply #10 on: April 15, 2010, 10:41:41 am »



Sorry, the way I read it at first was "[let the player choose between same base moilization for everyone] and [have ai determine itself what its mobilization is]", rather than "let the player choose between [same base mobilization level for everyone] and [have the ai determinte]".  Regardless, I think any blanket approach (all dwarves have the same priority level, AI determines priority for everyone, etc) is a bad idea, hence the suggestion for workshop/task level prioritization.
« Last Edit: April 15, 2010, 10:45:05 am by Ilmoran »
Logged

CaptApollo12

  • Bay Watcher
    • View Profile
Re: A "mobilization level" setting
« Reply #11 on: April 15, 2010, 11:36:52 pm »

Search "Mobilization level setting" on the suggestion screen
Logged
"MONTARON!  You are so AGGRAVATING!   'Tis disturbing to my demeanor..."

LordDemon

  • Bay Watcher
    • View Profile
Re: A "mobilization level" setting
« Reply #12 on: April 16, 2010, 03:25:56 am »

I posted this to another discussion thread about the subject, but I though I copy my idea here too. Any thoughs of the following:

I'd like the current system, with addition that when the dwarf doing the work gets hungry/thirsty/sleepy, the system will start to look for another dwarf to do that job. If one is found, this dwarf will head over to the location of the task (likely workshop, but maybe even mining) while the first dwarf is still working. When he gets there, they swap, either in mid task, or after that single task is done. The thirsty/hungry/sleepy dwarf can go, and the newcomer will keep working. There won't be breaks, and the single worker won't stress himself to death before leaving. This way you could have workshops work better around the clock.
Logged
If you are a goblin, you know you joined the wrong siege when the grates come down and bridge raises behind you, trapping you inside.