Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CrewSpecs / crew assignement / workforce management #6

Open
gotmachine opened this issue Nov 14, 2020 · 1 comment
Open

CrewSpecs / crew assignement / workforce management #6

gotmachine opened this issue Nov 14, 2020 · 1 comment
Labels
code enhancement New feature or request

Comments

@gotmachine
Copy link
Contributor

The CrewSpecs system could use the stock ExperienceEffect system and could be improved in a few areas :

  • The config format isn't MM friendly.
  • Currently tourists count as valid for crew requirements (both for crew specs and in the separate experiment implementation)
  • There is no implementation of the amount of crew members required. Experiments currently use a separate system for that at the requirements level, which is inefficient and lead to the impossibility to define an experiment that require several Kerbals with a specific trait/level.
  • ExperienceEffect is a decent stock system for defining bonuses, it make sense to implement it.
  • Regardless of an eventual ExperienceEffect implementation, bonuses should be implemented in the config definition and base CrewSpecs code (instead of requiring a separate implementation for each module)

Also, zero plan for that currently, but just an idea :
Currently, kerbals are "passive providers" : if you have several modules requiring a single scientist, you only need a single scientist for all of them. Implementing a passive/active distinction, and keeping track of which kerbals are assigned to what task would be interesting, as it would encourage bringing more crew. This said, the implementation would be quite a bit of work and would likely require some way for the player to interact with the kerbals assignments.

@gotmachine gotmachine changed the title Use stock ExperienceEffect instead of crewSpecs CrewSpecs / crew assignement / workforce management Jan 21, 2021
@gotmachine
Copy link
Contributor Author

Follow up on that subject.

I'm currently in the middle of the rules rework (#694), specifically in the implementation the "fitness" rule. The idea of that rule is to account for long term health degradation due to the lack of gravity. In the context of how that new rule will work, the "exercise" modifier feels a bit silly :

  • You only need one module that has it, no matter the crew count
  • The simple binary yes/no system is a bit simplistic and doesn't make much sense.

So I was thinking : instead of having that modifier, what about having the possibility to assign the crew to "exercise tasks", as a percentage of their available time ? More exercise : less fitness degradation, but less available time for other tasks. Which led me to think about how we could introduce the above idea.

We certainly want to abstract things as much as possible and keep it mostly a passive system. In particular, we likely want to avoid any manual assignment of the workforce to specific tasks, but instead work on some "availability" abstraction :

  • general workforce points : provided by any kerbal, would make sense to be consumed by reliability to model "maintenance tasks" or by the basic ECLSS processes.
  • scientific workforce points : provided by scientists, consumed by running experiments
  • engineer workforce points : provided by engineers, consumed by reliability, converters and drills

Those points/virtual resources would be consumed by various modules : experiments, reliability, processes, converters, drills, etc, to scale their output or impact their behavior.

Each Kerbal would provide "workforce points" according to :

  • The Kerbal experience level and badass status
  • How much time is allocated to "self-preservation" :
    • Free time : affect stress gain/loss rate
    • Exercise time : affect fitness gain/loss rate
    • Rest time : affect health gain/loss rate

The only "tweakable" available to the player would be balancing those allocations.

Technically, this feels doable without introducing too much code complexity by implementing the workforce points as virtual resources. We would have an early loop over all Kerbals for generating the points so they are available when the various modules/processes need to consume them. Any remaining time after the resource sim synchronization would be allocated for extra "self-preservation" when the rules are evaluated (which, BTW, should probably be moved after the resource sim evaluation).

The potential issues are :

  • There would be no way to prioritize some tasks over others (but to some extent the "resource sim sections" idea could help ?)
  • Not sure how to have that work while not putting too much restrictions on what you can do with unmanned vessels.

@gotmachine gotmachine transferred this issue from Kerbalism/Kerbalism Jul 29, 2021
@gotmachine gotmachine added enhancement New feature or request code labels Jul 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
code enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant