Skip to content

Conversation

@renanthera
Copy link
Member

@renanthera renanthera commented Oct 25, 2025

Derived from the concept found in #10597, but generalized to allow for custom implementation in class modules.

Significant outstanding issues:

  • Many relevant player methods are useless at current profileset_controller_t::evaluate_* calls, as they only return sensible values during iteration runtime. Checking whether or not a player has a sufficient amount of a secondary stat, etc, is impossible as a result.

TODO:

  • Implement error-based sim controller.
  • Cherrypick from TeWaWi to Midnight.

Developer interface issues:

  • Every derived profileset_controller_t requires a using data_t = <derived from profileset_controller_data_t>; type alias. Every controller probably should get and set a derived profileset_controller_data_t, just for the sake of reporting, as it is otherwise impossible to customize.
  • profileset_controller_t::get_data<T>() and profileset_controller_t::set_data<T>(...) require a template parameter which is always equal to the type-aliased data_t for the derived profileset_controller_t. This kind of sucks, but I'm not sure of a way to avoid this without introducing manual mutex management and gratuitous casting.

Notes:

  • Options are parsed from strings on construction/init of each profileset.
  • Implementing profileset_controller_t::create_options() is kind of awful if the option value type isn't well supported.

@renanthera renanthera changed the title Generalized Sim Control Generalized Profileset Control Dec 5, 2025
@renanthera renanthera marked this pull request as ready for review December 10, 2025 08:17
@renanthera
Copy link
Member Author

renanthera commented Dec 10, 2025

Still researching best practices for statistical methods required to implement profileset culling in the most optimal/correct way.

The rest of the implementation is otherwise functional.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant