This open-source tool simulates the damage of given gearsets and rotations, producing the full distributions over damage values and various statistics, like the expected max damage over N runs (useful for parsers). Currently, all lvl 90 standard combat classes are supported, as well as the skills for all lvl 100 standard combat classes, including Viper and Pictomancer! This tool is a Python notebook- see CoreSimulator.ipynb for the simulator and usage instructions. For issues/feature requests and news, join the Discord server. The simulator's source code is open-source and pip installable (see the source code repo).
Unlike other simulators/spreadsheets, this gives more than just expected damage with an approximation of damage variance- this is an accurate Monte Carlo simulation that gives the full range and distribution over all possible damage values. This tool is currently written as a Python notebook (runnable through Google Colab) and runs fairly fast (a typical ~30s opener with 1M samples takes about 1-2 seconds on a single CPU). The tool has four advantages over existing simulators/spreadsheets:
1) handles the simulation of all FF14 job classes in a single place- no need to maintain multiple spreadsheets, etc.,
2) incorporates all damage rolls and crit/dh procs on a per-damage-instance basis, and rolls them every time the sim is run (currently you can do 1M simulation runs in a couple seconds),
3) enables the building of several useful community tools that either don't exist, or can be streamlined, using this sim as a backend (or just a loaded Python notebook as a hack), and
4) allows for the incorporation of procs in the simulation process itself.
We can build several useful tools on top of this simulator:
1) general gear and rotation planning, optimizing for average damage, parsing (high-variance sets), and minimizing the chance of hitting enrage due to bad luck, 2) fight-specific gear and rotation planning, 3) speed kill planning, 4) normalizing DPS from FFlogs to factor out "lucky" crit/dh farming, 5) resimming a a fight with a new gearset (assuming same gcd) or different shorter kill time to provide a more gear/kill time independent measure of performance, and 6) bis/rotation solver.
If you have feedback on the sim or want to see some example results/rotations, please see this spreadsheet.
Here is an example of the simulator's output of the WAR opener (with raid buffs- see below for actual raid buffs and timings):
The sim will also show you the estimated time when damage lands on the target, and damage/variance of each hit:
And finally, the sim will output the estimated damage ranges for each hit under various conditions (crit, dh, etc.), and will show you the buffs/debuffs that affected it.
The way this rotation is specified is below:
Note that here, we assume each button is pressed as soon as possible, and the sim calculates cast times, animation locks, haste buffs (e.g., from Presence of Mind), etc. to figure out when each cast/skill will be performed, when the damage calculation will snapshot, and when the damage is applied.
You can also simulate a specific timeline (like from a log) like this (Etro + FFlogs integration TBD. See Roadmap below.):
The sim can also estimate kill times, given boss hp and rotations of your entire party. Here is an example output of the predictions:
And the inputs to generate this prediction looks like:
Note that you can specify LB damage, and can use/re-use and save rotations for later use and tweaking. The sim doesn't currently sim proc RNG (eg, does not sim the different cards you may get on AST, or DNC and BRD procs) for now, but that is planned in a future release.
Sept 13, 2024 update: THIS ROADMAP IS OUTDATED. I WILL UPDATE IT SOON (SIM IS UNDER ACTIVE DEVELOPMENT STILL, BUT SOME OF THE CHANGES ARE LARGER AND NEED FURTHER TESTING BEFORE BEING DEPLOYED TO THE PUBLIC).
This sim is currently under active development under three workflows: improving usability, improving sim accuracy, and building tools on top of this sim. Here is the work planned: 1) Improve accuracy of sim- bug fixes, resource tracking for jobs (QOL improvement). (~Mid February, 2024). Status: DONE. 2) Etro + FFlogs integration to re-sim fights to i) factor out damage variance, ii) re-sim fights with different gearsets (with the same GCD), and iii) re-sim fights with a different (shorter) kill time (~Early March, 2024). Status: DONE. 3) Proc sim'ing + facilities for users to specify rotation logic (~Early April, 2024). Status: re-prioritized. 4) A public website with a graphical UI for rotation planning and logs loading + a public simulator backend for people to build on top of (~End of April, 2024). Status: UI planning in the works and will be put up on www.xivraider.com when it's done. 5) QOL improvements for rotation planning on the website (save a rotation, plan-with-your-static) and logs analysis (compare vs. another log, factoring out gear and crit variance). (~Mid May). Status: partially done. The logs analysis is available at www.xivraider.com. 6) Rotation/BiS solvers using ML (~Early July 2024). Status: re-prioritized. 7) Incorporation of newest theorycrafted damage formulas and Dawntrail changes when they come out (continuous)
I'm an ex-Google software engineer/research scientist. I led a machine learning team doing applied ML research and some ML infra for many years before deciding to do something different. Prior to Google, I did a PhD in machine learning/AI at an ivy league university. I'm super into making tools to help people acquire new skills and play video games better. This simulator is one such tool! I also make tools for other video games; if you're interested to know more, drop me a line!
I'd like to thank the following people/groups for their help! Without them, this sim would not be at all possible:
Io Whitespirit
Hint and Hint's damage calc repo
Fürst
Apollo Van-waddleburg
IAmPythagoras and IAmPythagoras's FFXIV-Combat-Simulator and Discord
Cless
Kaiser08259
Mahdi (from the Allagan Studies Discord server)