Smarter handling of manually prioritized repetitive actions

Started by tukkek, June 21, 2017, 12:50:59 PM

Previous topic - Next topic

tukkek

I'll just leave a link to this very short Steam forums thread that explains it all but I'll quote my post here too:

QuoteIt can be a bit tedious when you need to haul a ton of rice to your freezer but it's not like you're super busy doing other stuff when in normal speed, the game is pretty chill that way.

What I do think would fix this though is for, when you prioritize an action, your colonist to repeat that action for as long as relevant. For example: prioritize hauling rice = do that until all rice is picked. Prioritize building power grid = do that until the whole path is set.

http://steamcommunity.com/app/294100/discussions/0/1369506834138087188/

Basically, I think it would be easy to fix it so that when you prioritize some fast, repetitive action (hauling, cleaning, building floors, building a power grid, etc) that the unit remembers that priority after the action is done and just keeps doing it instead of you having to re-prioritize manually every time until the whole workset is finished it.

Sounds pretty easy to code too, something like: when action is done if action can still be done in a short distance radius, do not cancel current priority (resulting in a loop until the task is actually over). There would probably have to be edge cases for sleep and food so a unit doesn't work itself to death or utter misery but I think this is already handled when you prioritize long-term actions like crafting and making art.

Also, this is my first post here. Is this the official feature request/bug report forums for RimWorld? Do the devs also look on Steam and such? Is there a bug tracker? Can we please have this informations added to stickies on the Steam forum and subreddit too so it's clear where to post feature requests and bugs instead of there being 3 different communities where no one knows which one is actually taken officially by Ludeon, please? I've read the sticky guideline for this subforum and it doesn't seem to say anything about this, even though it's huge. Thanks  :)

Limdood

this already exists for cleaning.

A pawn assigned to clean will continue to clean (in that room only) until the room is clean or their job ticks again.  This means the pawn will usually clean about 7-8 dirt/blood spots before checking his work priority...a grand total of maybe 10 seconds at most in normal speed?

In contrast, hauling jobs and constructing jobs (when the resources have NOT been delivered) will easily take that long to do ONCE.  Having a pawn haul all rice could easily take the better part of a day, and you're talking about having them do that to the exclusion of other tasks (eating and sleeping are prioritized work tasks too, just invisible to the player) which is not only a possible mood/health issue, but a probable one.  Furthermore, what if I only wanted the pawn to go and grab one load?  There are loads of reasons I'd be willing to manually have them grab one load instead of all (in fact, i can think of MANY more reasons to grab a single load than i can to manually assign to grab all) - maybe the weather is dangerous and multiple loads could be dangerous or deadly, maybe the pawn is tired and passing by but i want him to grab an armload on his way to bed, maybe I'm trying to get some key items safely behind walls ahead of an advancing raid. 

Automatically making the pawn repeat the action would cause pawn death in 2 out of 3 of those above situations, and horrible mood in the other one.

I think restricting the "look around for similar jobs" effect that you're asking for should just be restricted to jobs the pawn can finish ON SITE and the game should recheck for job priorities after a few seconds have passed...like cleaning.  The ONLY task i can think within these parameters that isn't already coded like this is constructing, and i suspect that is because of the possibility for a construction pawn to run into a need to deliver resources.  You get the "long job" problem if the pawn constructs 9 sections of conduit, but the 10th section doesn't have a steel piece hauled yet, so the pawn has to trek half a map away and back

As always, when you try to make AI "smarter," you inevitably end up making it do things the player can't anticipate based on assigned priorities (because you're saying those priorities aren't good enough and the AI knows better).  This causes players to not be aware of WHY their pawn is or isn't doing certain actions (right now it's generally crystal clear WHY pawns do stuff, even if we don't approve).  It also causes the potential for dozens or hundreds of potential problems, because there is no VISIBLE reason for the pawn to do those things, and if I as a player don't want the pawn to....then what?  his priorities already say he shouldn't do that action...what can I as a player do to have the pawn NOT do something there is no controls for or reason to do?

tukkek

No, my friend, you have completely missed my point. I am not talking of changing the game AI, I am talking about how the behavior of right clicking and selecting "prioritize this work" should function. it's obvious that when you click and prioritize building a power grid that you don't want a single square to be built so this is why I propose this change.

Peril of starvation or lack of sleep needs to be handled just like it's already done when you manually prioritize working on a workbench: currently, the units are smart enough to stop the manual priority to eat or sleep, which is fine and should be continue to be the same even for repetitive actions.

As for prioritized actions taking too long, that's just the responsibility of the player to manage, after all it's a management game. Right now you can manually prioritize hunting, which can also take a long time (especially for a slow colonist and if the animal is far away) - it's your job to cancel it if you need too. The same way, I propose that if you manually prioritize hauling or building a certain type of item (like the aforementioned power grid) then the colonist should keep doing that action until you tell it to stop - or it gets hungry, tired, etc as discussed.

EDIT changed thread title to make my point clearer (manual prioritizing).