Settlements Rising

Settlements Rising

View Stats:
Dev: A thought on consistency of laborers
Someone cuts a tree down. Walks away to work on road construction and leaves the lumber where it is, which sits there until someone else goes to pick it up.

Someone cuts down a tree. Goes to get food, leaves the lumber where it is, which sits there until someone goes to pick it up.

Someone digs some rocks. Walks away to... well, you get the picture.

Pretty soon I've got resources all over the ground, just sitting there and waiting to be collected. Wouldn't it make more sense to have a citizen complete a task? Go to cut a tree. Cut the tree. Take the lumber to storage or a pending building instead of walking away and leaving it where it is.

Or maybe have a "specialized" laborer, like "collector"? They could just go around and gather all the resources that everyone else leaves sitting around.
< >
Showing 1-3 of 3 comments
CanerTonbul  [developer] 13 Nov @ 12:02am 
Originally posted by bicZoid:
Someone cuts a tree down. Walks away to work on road construction and leaves the lumber where it is, which sits there until someone else goes to pick it up.

Someone cuts down a tree. Goes to get food, leaves the lumber where it is, which sits there until someone goes to pick it up.

Someone digs some rocks. Walks away to... well, you get the picture.

Pretty soon I've got resources all over the ground, just sitting there and waiting to be collected. Wouldn't it make more sense to have a citizen complete a task? Go to cut a tree. Cut the tree. Take the lumber to storage or a pending building instead of walking away and leaving it where it is.

Or maybe have a "specialized" laborer, like "collector"? They could just go around and gather all the resources that everyone else leaves sitting around.

I understand what you mean. When the demo was first released, it worked in a way similar to what you've described. However, as more complex tasks and prioritizations were added to the game, I noticed that queuing tasks back-to-back caused some bugs. To resolve these issues and ensure each villager completes their tasks without bugs, I had to implement a different approach. This new method treats each task as an independent request, and each villager selects only the tasks that suit them from a pool of tasks.

Having each task pooled independently and chosen by the villagers ensures that every task eventually gets done, but it doesn’t allow tasks to be chained seamlessly (e.g., chop the tree -> pick up the chopped wood -> take it to the construction site).

In this system, a worker cuts down a tree, completing that task, which is then removed from the task pool. For the fallen wood, a new task to collect it is added to the pool, and whichever villager selects it first will go to collect it. In the past, the villager who chopped the tree could automatically be assigned the next task, but if there was a higher-priority task in the villager’s task pool (or their home’s task pool), bypassing it could lead to issues, even putting their life at risk.

Consider this scenario: A laborer chops down a tree, then immediately picks up the fallen wood. Meanwhile, a task to take food remains in the pool because the laborer’s food supply is low, and skipping it would cause them to lose health due to hunger. Or, imagine a nearby building has caught fire, and a firefighting task has been added to the villagers pool. If the laborer automatically chose to transport the wood without checking their pool first, the building might burn if no one else goes to extinguish the fire.

Situations like the one above were common, and players often became frustrated as a result. The solution was to make villagers select the most important task after completing each one. This selection process includes a 0.2-second delay to optimize performance. During that delay, the nearby resource collection task could be picked up by another villager.

While explaining it takes some time, I hope this conveys how having tasks selected independently (rather than chained) ensures that critical tasks are always completed on time, even if it slightly lowers efficiency for laborers.

A separate improvement could be made specifically for laborers in the future.
Last edited by CanerTonbul; 13 Nov @ 12:03am
bicZoid 13 Nov @ 8:41am 
Originally posted by CanerTonbul:
While explaining it takes some time, I hope this conveys how having tasks selected independently (rather than chained) ensures that critical tasks are always completed on time, even if it slightly lowers efficiency for laborers.

That does make it much more understandable. Thank you for the time and informative response :steamthumbsup:
CanerTonbul  [developer] 13 Nov @ 10:17am 
Originally posted by bicZoid:
Originally posted by CanerTonbul:
While explaining it takes some time, I hope this conveys how having tasks selected independently (rather than chained) ensures that critical tasks are always completed on time, even if it slightly lowers efficiency for laborers.

That does make it much more understandable. Thank you for the time and informative response :steamthumbsup:
Your welcome, also thank you very much for the nice review :)
< >
Showing 1-3 of 3 comments
Per page: 1530 50

Date Posted: 12 Nov @ 8:57pm
Posts: 3