SimulationCraft
SimulationCraft is a tool to explore combat mechanics in the popular MMO RPG World of Warcraft (tm).
|
Simulation engine. More...
#include <sim.hpp>
Classes | |
struct | auras_t |
struct | bfa_opt_t |
struct | legion_opt_t |
struct | overrides_t |
struct | shadowlands_opt_t |
Public Member Functions | |
sim_t (sim_t *parent, int thread_index=0) | |
sim_t (sim_t *parent, int thread_index, sim_control_t *control) | |
void | run () override |
int | main (const std::vector< std::string > &args) |
double | iteration_time_adjust () |
double | expected_max_time () const |
bool | is_canceled () const |
void | cancel_iteration () |
void | cancel () |
Cancel simulation. | |
void | interrupt () |
void | add_relative (sim_t *cousin) |
void | remove_relative (sim_t *cousin) |
sim_progress_t | progress (std::string *detailed=nullptr, int index=-1) |
double | progress (std::string &phase, std::string *detailed=nullptr, int index=-1) |
void | detailed_progress (std::string *, int current_iterations, int total_iterations) |
void | datacollection_begin () |
void | datacollection_end () |
void | reset () |
Reset simulation. | |
void | check_actors () |
check for active player More... | |
void | init_fight_style () |
configure fight style More... | |
void | init_parties () |
configure parties More... | |
void | init_actors () |
Initialize actors. | |
void | init_actor (player_t *) |
void | init_actor_pets () |
void | init () |
void | analyze () |
void | merge (sim_t &other_sim) |
merge sims | |
void | merge () |
merge all sims together | |
bool | iterate () |
void | partition () |
bool | execute () |
void | analyze_error () |
void | analyze_iteration_data () |
Build a N-highest/lowest iteration table for deterministic so they can be replayed. | |
void | print_options () |
void | add_option (std::unique_ptr< option_t > opt) |
void | create_options () |
bool | parse_option (const std::string &name, const std::string &value) |
void | setup (sim_control_t *) |
bool | time_to_think (timespan_t proc_time) |
player_t * | find_player (util::string_view name) const |
find player in sim by name | |
player_t * | find_player (int index) const |
find player in sim by actor index | |
cooldown_t * | get_cooldown (util::string_view name) |
void | use_optimal_buffs_and_debuffs (int value) |
std::unique_ptr< expr_t > | create_expression (util::string_view name) |
template<typename... Args> | |
void | errorf (util::string_view format, Args &&... args) |
Create error with printf formatting. | |
template<typename... Args> | |
void | error (fmt::format_string< Args... > format, Args &&... args) |
Create error using fmt libraries python-like formatting syntax. | |
void | abort () |
void | combat () |
void | combat_begin () |
Start combat. | |
void | combat_end () |
void | add_chart_data (const highchart::chart_t &chart) |
add chart to sim for end of report processing | |
bool | has_raid_event (util::string_view type) const |
void | activate_actors () |
timespan_t | current_time () const |
void | register_target_data_initializer (std::function< void(actor_target_data_t *)> cb) |
const rng::rng_t & | rng () const |
rng::rng_t & | rng () |
double | averaged_range (double min, double max) |
std::thread::id | thread_id () const |
template<typename... Args> | |
void | print_debug (fmt::format_string< Args... > format, Args &&... args) |
Convenient stdout print function using python-like formatting. More... | |
template<typename... Args> | |
void | print_log (fmt::format_string< Args... > format, Args &&... args) |
Convenient log function using python-like formatting. More... | |
Static Public Member Functions | |
static double | distribution_mean_error (const sim_t &s, const extended_sample_data_t &sd) |
Public Attributes | |
event_manager_t | event_mgr |
sim_ostream_t | out_log |
sim_ostream_t | out_debug |
bool | debug |
bool | strict_parsing |
Error on unknown options (default=false) More... | |
bool | canceled |
bool | cleanup_threads |
bool | initialized |
bool | fixed_time |
bool | save_profiles |
bool | save_profile_with_actions |
bool | default_actions |
timespan_t | max_time |
timespan_t | expected_iteration_time |
double | vary_combat_length |
int | current_iteration |
int | iterations |
double | target_error |
role_e | target_error_role |
double | current_error |
double | current_mean |
int | analyze_error_interval |
int | analyze_number |
sim_control_t * | control |
sim_t * | parent |
player_t * | target |
player_t * | heal_target |
vector_with_callback< player_t * > | target_list |
vector_with_callback< player_t * > | target_non_sleeping_list |
vector_with_callback< player_t * > | player_list |
vector_with_callback< player_t * > | player_no_pet_list |
vector_with_callback< player_t * > | player_non_sleeping_list |
vector_with_callback< player_t * > | healing_no_pet_list |
vector_with_callback< player_t * > | healing_pet_list |
player_t * | active_player |
size_t | current_index |
int | num_players |
int | num_enemies |
int | num_tanks |
int | enemy_targets |
int | healing |
int | global_spawn_index |
int | max_player_level |
timespan_t | queue_lag |
timespan_t | queue_lag_stddev |
timespan_t | gcd_lag |
timespan_t | gcd_lag_stddev |
timespan_t | channel_lag |
timespan_t | channel_lag_stddev |
timespan_t | queue_gcd_reduction |
timespan_t | default_cooldown_tolerance |
bool | strict_gcd_queue |
double | confidence |
double | confidence_estimator |
timespan_t | world_lag |
timespan_t | world_lag_stddev |
double | travel_variance |
double | default_skill |
timespan_t | reaction_time |
timespan_t | regen_periodicity |
timespan_t | ignite_sampling_delta |
int | optimize_expressions |
int | optimize_expressions_rounds |
int | current_slot |
int | optimal_raid |
int | log |
int | debug_each |
std::vector< uint64_t > | debug_seed |
stat_e | normalized_stat |
std::string | current_name |
std::string | default_region_str |
std::string | default_server_str |
std::string | save_prefix_str |
std::string | save_suffix_str |
bool | save_talent_str |
talent_format | talent_input_format |
auto_dispose< std::vector< player_t * > > | actor_list |
std::string | main_target_str |
int | stat_cache |
int | max_aoe_enemies |
double | tmi_window_global |
double | tmi_bin_size |
bool | show_etmi |
bool | requires_regen_event |
bool | single_actor_batch |
bool | allow_experimental_specializations |
int | progressbar_type |
int | armory_retries |
double | enemy_death_pct |
int | rel_target_level |
int | target_level |
std::string | target_race |
int | target_adds |
std::string | sim_progress_base_str |
std::string | sim_progress_phase_str |
int | desired_targets |
std::unique_ptr< dbc_t > | dbc |
std::unique_ptr< dbc_override_t > | dbc_override |
gear_stats_t | enchant |
int | timewalk |
int | scale_to_itemlevel |
int | keystone_level |
int | keystone_pct_hp |
std::string | keystone_bounty |
bool | challenge_mode |
bool | scale_itemlevel_down_only |
bool | disable_set_bonuses |
bool | enable_taunts |
bool | use_item_verification |
unsigned int | disable_2_set |
unsigned int | disable_4_set |
unsigned int | enable_2_set |
unsigned int | enable_4_set |
const spell_data_t * | pvp_rules |
bool | pvp_mode |
bool | feast_as_dps = true |
bool | auto_attacks_always_land |
bool | log_spell_id |
Allow Auto Attacks (white attacks) to always hit the enemy. | |
int | active_enemies |
int | active_allies |
std::vector< std::unique_ptr< option_t > > | options |
std::vector< std::string > | party_encoding |
std::vector< std::string > | item_db_sources |
rng::rng_t | _rng |
uint64_t | seed |
int | deterministic |
int | strict_work_queue |
int | average_range |
int | average_gauss |
std::vector< std::unique_ptr< raid_event_t > > | raid_events |
std::string | raid_events_str |
fight_style_e | fight_style |
size_t | add_waves |
struct sim_t::overrides_t | overrides |
struct sim_t::auras_t | auras |
struct sim_t::legion_opt_t | legion_opts |
struct sim_t::bfa_opt_t | bfa_opts |
struct sim_t::shadowlands_opt_t | shadowlands_opts |
auto_dispose< std::vector< buff_t * > > | buff_list |
timespan_t | default_aura_delay |
timespan_t | default_aura_delay_stddev |
auto_dispose< std::vector< cooldown_t * > > | cooldown_list |
azerite_control | azerite_status |
Status of azerite-related effects. | |
progress_bar_t | progress_bar |
std::unique_ptr< scale_factor_control_t > | scaling |
std::unique_ptr< plot_t > | plot |
std::unique_ptr< reforge_plot_t > | reforge_plot |
chrono::cpu_clock::duration | elapsed_cpu |
chrono::wall_clock::duration | elapsed_time |
std::vector< size_t > | work_per_thread |
size_t | work_done |
double | iteration_dmg |
double | priority_iteration_dmg |
double | iteration_heal |
double | iteration_absorb |
simple_sample_data_t | raid_dps |
simple_sample_data_t | total_dmg |
simple_sample_data_t | raid_hps |
simple_sample_data_t | total_heal |
simple_sample_data_t | total_absorb |
simple_sample_data_t | raid_aps |
extended_sample_data_t | simulation_length |
chrono::wall_clock::duration | merge_time |
chrono::wall_clock::duration | init_time |
chrono::wall_clock::duration | analyze_time |
std::vector< iteration_data_entry_t > | iteration_data |
std::vector< iteration_data_entry_t > | low_iteration_data |
std::vector< iteration_data_entry_t > | high_iteration_data |
double | report_iteration_data |
int | min_report_iteration_data |
int | report_progress |
int | bloodlust_percent |
timespan_t | bloodlust_time |
std::string | reference_player_str |
std::vector< player_t * > | players_by_dps |
std::vector< player_t * > | players_by_priority_dps |
std::vector< player_t * > | players_by_hps |
std::vector< player_t * > | players_by_hps_plus_aps |
std::vector< player_t * > | players_by_dtps |
std::vector< player_t * > | players_by_tmi |
std::vector< player_t * > | players_by_name |
std::vector< player_t * > | players_by_apm |
std::vector< player_t * > | players_by_variance |
std::vector< player_t * > | targets_by_name |
std::vector< std::string > | id_dictionary |
std::map< double, std::vector< double > > | divisor_timeline_cache |
std::vector< report::json::report_configuration_t > | json_reports |
std::string | output_file_str |
std::string | html_file_str |
std::string | json_file_str |
std::string | reforge_plot_output_file_str |
std::vector< std::string > | error_list |
int | report_precision |
int | report_pets_separately |
int | report_targets |
int | report_details |
int | report_raw_abilities |
int | report_rng |
int | hosted_html |
int | save_raid_summary |
int | save_gear_comments |
int | statistics_level |
int | separate_stats_by_actions |
int | report_raid_summary |
int | buff_uptime_timeline |
int | buff_stack_uptime_timeline |
bool | json_full_states |
int | decorated_tooltips |
int | allow_potions |
int | allow_food |
bool | allow_flasks |
int | allow_augmentations |
int | solo_raid |
bool | maximize_reporting |
std::string | apikey |
std::string | user_apitoken |
bool | distance_targeting_enabled |
bool | ignore_invulnerable_targets |
bool | enable_dps_healing |
bool | count_overheal_as_heal |
double | scaling_normalized |
bool | merge_enemy_priority_dmg |
mutex_t | merge_mutex |
int | threads |
std::vector< sim_t * > | children |
int | thread_index |
computer_process::priority_e | process_priority |
std::shared_ptr< work_queue_t > | work_queue |
mutex_t | relatives_mutex |
std::vector< sim_t * > | relatives |
std::unique_ptr< spell_data_expr_t > | spell_query |
unsigned | spell_query_level |
std::string | spell_query_xml_output_file_str |
std::unique_ptr< mutex_t > | pause_mutex |
bool | paused |
std::vector< std::string > | on_ready_chart_data |
std::map< std::string, std::vector< std::string > > | chart_data |
bool | chart_show_relative_difference |
bool | relative_difference_from_max |
std::string | relative_difference_base |
double | chart_boxplot_percentile |
std::vector< std::function< void(actor_target_data_t *)> > | target_data_initializer |
bool | display_hotfixes |
bool | disable_hotfixes |
bool | display_bonus_ids |
opts::map_list_t | profileset_map |
std::vector< scale_metric_e > | profileset_metric |
std::vector< std::string > | profileset_output_data |
bool | profileset_enabled |
int | profileset_work_threads |
int | profileset_init_threads |
std::unique_ptr< profileset::profilesets_t > | profilesets |
Simulation engine.
void sim_t::check_actors | ( | ) |
check for active player
This function just checks that the sim has at least 1 active player, and sets fixed_time automatically if the only role present is a ROLE_HEAL. Called in sim_t::init_actors()
void sim_t::init_fight_style | ( | ) |
configure fight style
Parses fight style information into specific simulator defines. Performed as a separate initialization step (early) in the simulator init process to avoid positional dependencies between options (first and foremost, the max_time option).
Note that there are side-effects of this, namely that where fight styles define other options (e.g., Ultraxion), those can no longer be overwritten on the command line.
void sim_t::init_parties | ( | ) |
configure parties
This function... builds parties? I guess it assigns each player in player_list to a party based on party_encoding. Called in sim_t::init_actors()
|
inline |
Convenient stdout print function using python-like formatting.
Print to stdout Print using fmt libraries python-like formatting syntax. Convenient debug function using python-like formatting.
Checks if sim debug is enabled. Print using fmt libraries python-like formatting syntax.
|
inline |
Convenient log function using python-like formatting.
Checks if sim logging is enabled. Print using fmt libraries python-like formatting syntax.
bool sim_t::strict_parsing |
Error on unknown options (default=false)
By default Simulationcraft will ignore unknown sim, player, item, or action-scope options. Enable this to hard-fail the simulator option parsing if an unknown option name is used for a given scope.