Other games such as WOW and POE have DPS simulators, but they are all from games games that focus on individual DPS.
However, the main concept of FFXIV’s combat is to align my cooldowns to my raid’s buffs to maximize our DPS output, meaning that FFXIV’s DPS can never be simulated in an individual manner.
This means that FFXIV Simulation Bot needs to be 8 times faster than other game’s simulation tools, since we’re putting in that much more players inside a single simulation, making the performance optimization very challenging. To address this challenge, the simulation part is programmed in Rust, which is an optimizable memory-unmanaged language like C++. As a result, FFXIV Simulation Bot has a faster simulation speed than other simulation tools despite it calculating more players per simulation.
To meet the game’s needs, FFXIV Simhelper calculates various DPS metrics inside its simulation, and record high-end values as well as median DPS performance:
WOW doesn’t have a long oGCD delay, making the oGCD selection an isolated, individual problem - we simply check each skill and use them if they are available since there is no limit in the number of skills they can weave in.
However, FFXIV has a significant delay to every oGCD, making it a more challenging problem programming-wise: 1) You need to calculate how many oGCD is going to fit after every GCD. It can be 1 or 2 depending on the skill’s delay and cast time(also can be 3 now, thanks to PCT and VPR) 2) In the usual case of two oGCDs between GCDs, you have to choose the best pair of oGCD skills out of all the possible options.
There’s more calculation needed for FFXIV’s skill selection problem, making the performance optimization even more challenging. Machine Learning is a popular way of solving these kinds of problems, but huge volumes of FFXIV Machine Learning datasets must be collected before making ML possible. For now, we use an optimized tuned priority system for our skill choices.
WOW’s simulation tools can quickly configure character’s equipments by using the simulationcraft addon:
FFXIV Simulation Bot doesn’t have this kind of addon, and also even needs to get party member’s inputs to make the simulation possible.
To solve these inconveniences, many UI/UX features have been added to the Application:
Save features help the user go back to their favorite/recently simulated Item configurations:
Save Most Recent Simulation Input: FFXIV Simulation Bot saves the most recently requested itemset for later use.
Loadouts: Every simulation has a loadout where important/frequently used Items Sets can be bookmarked:
It’s hard to configure your own itemsets. It’s almost impossible to ask the user to configure 8 members! FFXIV Simulation Bot only requests for the party member’s jobs and their ilvl For better usability,
The tool uses special algorithms to give each party members an appropriate item set of that item level and starts the simulation.
There are internal gearsets for each job in different ilvls(all of the gearsets have same GCD). For the highest ilvl, the gearset is one of the known BIS for the job.
“Gear Compare” compares two different item sets, doubling the number of configuration. To make it easier, there are buttons that copy one item set to the other item set so that the common parts get configured only once.
As explained above, Multiple-criteria Decision Making problems are better solved using Machine Learning. However, there are two challenges that makes this difficult:
1) Dataset Pipeline: There is no FFXIV combat related dataset as of now. We need to create one, which I’m planning to do for my next project. 2) Short Re-train Periods: FFXIV rebalances their classes every patch, making the skill priority of jobs change. This means we have to re-train all our Machine Learning model, and there is going to be one model for every 23 job in the game.
ex) Simulate a 6min encounter with downtimes in (4m, 4m30s), (5m7s, 5m 15s)
ex) Simuate a 6min encounter with burst times at (0m, 2m30s, 5m)