I'd suggest a change to how tasks are assigned, as follows:
Currently tasks are assigned based primarily on whether a colonist has a task already, with distance to the taks being assigned used as a tie-break. With colonists only able to remember one task at a time there's not much more that can be done, but what if colonists were able to plan ahead and store a `to-do' list of tasks? (This could be as simple as a FIFO queue, though of course a priority queue would allow for more sophisticated systems.)
With a list of tasks for each colonist available, tasks could be assigned based on a function of both distance and the number of tasks on the colonist's to-do list. (Note: In this case it makes sense for `distance' to mean distance to the location of the last task on the colonist's to-do list, rather than distance to current location.) The function could be determined heursitically according to what works and also be exposed to modding so that players can change behaviour to suit their own playstyles.
For example, let's say the function is (total time of tasks on colonist's to-do list) + distance/(colonist speed) and suppose there are 15 idle colonists around the map, and 10 metal tiles we want to build. The first tile gets assigned to the closest colonist. The second gets assigned either to the same guy if there is no-one who can get there before he completes the first, and to the closest free colonist otherwise, etc. If there were 3 nearby colonists and many far-away ones, then those three would complete 3-4 tiles each and the rest would sit tight.
Currently tasks are assigned based primarily on whether a colonist has a task already, with distance to the taks being assigned used as a tie-break. With colonists only able to remember one task at a time there's not much more that can be done, but what if colonists were able to plan ahead and store a `to-do' list of tasks? (This could be as simple as a FIFO queue, though of course a priority queue would allow for more sophisticated systems.)
With a list of tasks for each colonist available, tasks could be assigned based on a function of both distance and the number of tasks on the colonist's to-do list. (Note: In this case it makes sense for `distance' to mean distance to the location of the last task on the colonist's to-do list, rather than distance to current location.) The function could be determined heursitically according to what works and also be exposed to modding so that players can change behaviour to suit their own playstyles.
For example, let's say the function is (total time of tasks on colonist's to-do list) + distance/(colonist speed) and suppose there are 15 idle colonists around the map, and 10 metal tiles we want to build. The first tile gets assigned to the closest colonist. The second gets assigned either to the same guy if there is no-one who can get there before he completes the first, and to the closest free colonist otherwise, etc. If there were 3 nearby colonists and many far-away ones, then those three would complete 3-4 tiles each and the rest would sit tight.