Open Xenega opened 6 years ago
Love this idea. Then it is obvious what the CPU cycles are used for.
Good idea! This would also visualize the jobs progress, which is invisible at the moment. And it would be possible to throttle the spendings according to current capabilities. While at it: the slider for jobs is redundant, as overflow cpu is allocated to jobs anyway.
IMHO, barring you either:
a) not having enough CPU to go around even for basic maintenance, or b) having explicit user override
CPU (and for that matter) needed for maintenance of bases and whatnot should be spent on that first before it's made available for projects or research or construction.
also I'd like to suggest also that for cases of contention between two construction projects that combined exhaust the available CPU or money, prioritize whichever one is closest to completion, that way you get your bases up the fastest one at a time instead of waiting for them to slow-march in unison towards the finish line.
Plus it's not a good idea to let the list of in-progress bases to play random number roulette to decide which one gets their resources satisfied first. They should always be deterministically sorted somehow that doesn't depend on alphabetical order.
I agree that it can feel very opaque to determine how bases are prioritized. Based on the code, here is the order:
Base order
Bases are always ordered as follows:
Item construction
cpu
, reactor
, network
and security
in that order. For older versions of python, you get a unique order per base, which is unhelpful.Looks indeed like it could use some work. I'd put maintenance first in all cases, and before research.
I'm sure that an advanced AI trying to achieve godhood would know better than to undermine its own self-sustaining plowback.
Even organic meatbags dump their calories into basal metabolism first.
@shentino Indeed. Patches are more than welcome. If you want to improve this bit then you need to look at def give_time(self, time_sec, midnight_stop=True):
in singularity/code/player.py
, which handles the priority of resources.
For base and item order, we would need something entirely different if you want explicit control; that probably requires a rewrite of the task list to a prioritized list plus adding tasks for maintenance.
Instead of using a CPU pool for building project, add building project as a new task.