dwarfcorp
dwarfcorp copied to clipboard
Design: Enable players to re-assign priority tasks easily
Right now I can assign a very large dig task, and dwarves behave as if it's one large task. If I then assign a very small dig task, dwarves will not get to it for a good while because of the task order. Generally the reason to do these small tasks is just to get one or two specific resources that are needed for a current craft task or something.
For me it tends to be my non-main digging site, so places on the surface, but occasionally places underground as well where a resource deposit is. Maybe the easiest design would be if we can give higher priority based off of the size of the dig area, say 1 to 30 voxels.
There's only one size of dig task. Do this and users will just wonder why their big task didn't get priority.
The idea would be that if there's a very small dig task the player doesn't have to wait for possibly more than an hour to dig a small area. Maybe we could just do 1 to 10 voxels and assign one dwarf to these side digs.
A "dig task" is just a single voxel. There's no notion whatsoever of them being connected. Dwarves just greedily go to the nearest dig task, so if you want a dwarf to start digging in another location, you'd select him, and right click near where he's supposed to be digging.
Oh! Okay. Then that's just a matter of teaching that correctly. I'll note it in the GDD.
Closing.
So. Testing this out. The location priority is only true when the tasks are made at the exact same time. However, if I make a far away task first, then a very close task moments later, the dwarves will prioritize the further task. If I select those dwarves and command them to the closer task, they'll go to the spot, not perform the task, and then return to executing the further task.
In order to enable the player to use the location based task execution effectively, is there a way to get the task manager to disregard the order in which the tasks were originally designated or is that game breaking?
The reason right clicking doesn't work in this case is because the task has already been assigned to the dwarf.
Right. But could we enable players to re-assign task by location by sending dwarves to those locations?
Perhaps right clicking should cancel the current task and reassign it to another dwarf.
Hmmm. Yeah. I think that should work. Should be pretty smooth once we visualize the whole universal selector thing, so the action would be something like select dwarf(ves), hover over task area, selector shows image of nearby tasks, then player right clicks to assign.
I've just learned Rimworld works on a pretty similar design, and it works really well. Their design is technically, click on colonist, right click on relevant entity. Options display. Select option to set relevant task as priority.
To this end, I would suggest/argue that you should be able to assign default priorities for tasks of a type so you don't need to switch each task individually.
Example: I found a area containing gold and would like to assign a mining task as high priority. I would like to be able to open a task priority menu and bump mining tasks up to high and then do my mining selections.
Closing for regression.
Wait. Never mind. This is still pretty relevant. I would say we should just add a button to the context tool that says "priority" that links to our current menu that turns off or on certain tasks for dwarves.
#627 This should still be done. Most players have no clue where our priority menu is.
We have a priority menu?
Also it isn't possible to click voxels with the context menu anyway.
Okay, I have added two new features to the context menu. You can now tell dwarves which tasks they're not allowed to do using the context menu. You can also set the priority of entity tasks (though not voxel tasks like digging yet)
Priority menu I was referencing was the "Allowed Tasks" menu. Now that it's hooked to the universal selector, it's much more friendly.
Just add dig and other mainstream tasks to it, and it should be done and polished as far as I'm concerned.
Okay the problem with "dig" is that it's a voxel task, which at the moment can't be selected by the universal selector. @Blecki was thinking about ways to make that possible, but it's tricky.