Giter VIP home page Giter VIP logo

bloodystats's Introduction

Bloodystats

This tool is deprecated with the launch of the Battle for Azeroth Prepatch. See bloodytools for an improved and continued tool.

Automatation tool to calculate best secondary stat rating distribution for dps for a given profile of a World of Warcraft character using SimulationCraft. It's designed in a way that should make it easy to add different approaches to solve this problem.

Requirements

You need a working SimulationCraft version, Python 3.5 or newer and to install the requirements.txt.

Download

Download or clone this repository into your SimulationCraft directory. simulationcraft\bloodytrinkets

Setup

Start your python environement. Install dependencies.

$ <env_name>\Scripts\active
(<env_name>)$ pip install -U -r .\requirements.txt

pip freeze should return something like this:

numpy==1.14.0
scipy==1.0.0
-e git+https://github.com/Bloodmallet/simc_support.git@0e619764a0ccd919386ea50839460eb2f5c16e53#egg=simc_support

Getting started

Edit settings.py to your liking using any text editor. Start your python environement. Start bloodystats.

$ <env_name>\Scripts\active
(<env_name>)$ python .\bloodystats.py

Examples

python bloodystats.py uses all data from settings.py to calculate one data set. Change your wanted values in that file first, if you want to repeat these later on again or just change one entry at a time. python bloodystats.py --class shaman will use settings.py but will overwrite the class setting to be "shaman" instead. Pay attention to the class and spec combination. If your settings.py does have beast_master set as spec, bloodystats will put out an error, when you try the previously mentioned input. There is no beast_master shaman.

If no custom_characzer_stats are provided bloodystats attempts to use the standard profiles of SimulationCraft.

For further params please read settings.py or python bloodystats.py -h or python bloodystats.py --help.

Take special note about possible different talent combinations. Bloodystats allows several short hands and different input to allow a quick setup. You have two different ways of using these. Please note that the standard talent combination from the basic profiles from SimulationCraft wont be used.

Using custom_talent_combinations.simc and settings.py:

  • enter your wanted talent combinations into "custom_talent_combinations.simc" as new lines
  • change talents = "WHATEVER" in settings.py to talents = ""
  • start bloodystats.py as always (probably python bloodystats.py)

Using custom_talent_combinations.simc but no settings.py:

  • enter your wanted talent combinations into "custom_talent_combinations.simc" as new lines
  • start bloodystats.py using python bloodystats.py --talents ""

Example for "custom_talent_combinations.simc":

2112332
2112331
3231323

Using built in talent combination generation:

  • two digit input will generate all dps talent combinations for the spec, where the last two dps rows are set to the value you input (1 left, 2 middle, 3 right) example: --talents 21 (python bloodystats.py --talents 21)
  • seven character input will generate all dps talent combinations for the spec, where all x'ed positions are filled with dps talents

Due to the seven character input one beeing slightly tricky at first let me explain that further. Example: --talents 211xx23 This input will generate 9 talent combinations IF both x are in rows with dps talents. It'll generate 3 talent combinations, if one x is a non dps row and it will generate only one talent combination, if both x are non dps rows. Example: --talents 2113323 This input will make bloodystats run exactly one talent combination.

Result

A successful run creates a txt file in the results/ directory. Here you can find the best performing secondary combinations. Best performing in this case means "within 1% of the best found value". Your result file might look like this:

1001331 2244768 12371 8371  12371 3871
        2244768 12371 8371  12371 3871
        2244246 10371 10371 12371 3871

Lines starting with a number instead of spaces indicate the start of a new calculation group. The initial number represents the talent combination. Followed by DPS, crit, haste, mastery, and finally versatility. Lines starting with empty spaces are saved calculated values that performed within 1% of the best secondary rating combination. These should help to get an impression of how important or unimportant it really is to perfectly match the best distribution.

The values of the example above are explained again in this table.

talent combination dps crit haste mastery versatility
1001331 2244768 12371 8371 12371 3871
2244768 12371 8371 12371 3871
2244246 10371 10371 12371 3871

Development

You can start right away. The strongest need right now would probably be the implementation of tests. But as I want to merge my different projects into one with the coming Battle for Azeroth expansion, be prepared, that those are probably going to see heavy changes. Anyway, I'd love to help if someone is interested in improving or adding something.

Contact

General support can be found at https://discord.gg/tFR2uvK in the channel #bloodytools. In addition to this you can easily open issues in the repo.

bloodystats's People

Contributors

aethys256 avatar bloodmallet avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

bloodystats's Issues

add minimum secondary values

one should be able to set a fixed minimum amount of secondary values.

minimum_crit = "1500"
minimum_haste = "2300"
minimum_mastery = "2400"
minimum_versatility = "1100"

re-add saving results quicker

have results saved when they are generated not after every talent combination is finished. maybe as a log. so fancy output can still be generated later once everything is done calculating

rework the readme.txt

more examples, clarifications, what libs are used, what is needed to run it sucessfully, disclaimer about simc profiles

Restructuring

Get rid of global variables
better structure functions
better collect data
better collect output
increase modularity to add other functions to generate secondary distributions

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.