|
|
Gear Sets Text
| Gearsets By Job (BG Wiki links) |
|
|
|
|
| Introduction |
Over a year ago, I created a Python-based command line weapon skill damage simulator for Ninja (see the original thread), which I used to automatically find "best in slot" gear sets for Ninja and share them with the community. However, since the logic behind damage calculations is the same for all jobs, I've spent some of my "free time" over the last few months updating my program to include support for all jobs. In early 2023 I finished a working version of the all jobs version of the program, including support for magic, ranged, and TP sets and a functioning GUI for ease of use.
The code estimates damage dealt and tp returned using the conditions and equations derived by the FFXI players through extensive community testing. With an exception for the ninjutsu damage coefficients, I did not perform any major testing to determine the equations or values used in my code. Most of the conditions and equations are available for review throughout BG-Wiki, FFXIclopedia, the JP wiki, and various FFXIAH discussions. However, the less-frequently accessed information is occasionally incorrect or out of date. For the ambiguous or out of date information, I performed small tests in game and/or asked other players for information if they played the job related to my questions.
Here I present the program itself and a brief description on how it works in the General forums of FFXIAH, away from the Ninja-specific subforums that the original post was placed in. This should make it more accessible to players who may be interested in damage simulations but are not interested in Ninja.
|
| The program |
The program was originally written in Python3 using PySimpleGUI, but I've rewritten it using tkinter. However, a suspiciously-large executable version of the code is available for users who are unfamiliar with Python. The executable version of the program contains all necessary Python libraries to run the code (which is why it is so large), so using it will allow the user to run the program without having Python installed. The GUI interface could use a lot of improvements, but it at least mostly functions in a somewhat intuitive way. The GUI is best viewed with a Windows(10?) operating system and a display height of at least 850 pixels. The GUI will not scale for lower resolution displays.
The code itself is available for download and review on my GitHub page.
If (when) you encounter an issue with the code, then you can post in this thread, open an issue on the GitHub issues page, or message me in game if I happen to be online (Kastra on Asura). This also applies if you have any suggestions for additions or modifications you'd like to see. Please try to include as many details as you can for the issues you report so that I can pinpoint the issue quickly.
If you would like to use the executable version of the code, but don't trust a stranger with a 75MB executable, then you can visit the Repository's "Actions" page and view the most recent "action artifacts". The artifacts on this page are built directly on GitHub's machines using the commands in the "workflow file" (see the left part of the page after clicking on an action). Therefore, you may view the exact commands used to generate the executable provided on the actions page and to verify that it is "safe" to use. Windows10 does occasionally claim the file is a trojan since it's a third-party executable from a downloaded zip file.
The following steps should allow you to download the GitHub generated package and run the code.
Login to GitHub
On the actions page, click the most recent action to view the most up-to-date files.
Download the kastra_ffxi_sim-full artifact at the bottom of the page.
Unzip the kastra_ffxi_sim-full.zip archive.
Double-click the gui_main.exe file to run it.
Alternatively open Windows10 Powershell, navigate to the install location, and run the GUI by typing its name "gui_main.exe". This will allow you to see any errors that pop up if it crashes immediately.
The GUI layout
The GUI is broken up into four tabs:
The Inputs tab is used to enter basic parameters such as main/sub jobs, TP ranges, enemy stats, player buffs, and your equipped gear set. This tab allows you to perform a quick analysis of your equipped gear set using the "Quick-look" buttons under the displayed gear, which will run an average damage (or TP) calculation based on your inputs throughout this tab. These buttons are incredibly useful for quickly checking how different pieces of equipment perform for your situation.
Clicking on one of the gear images changes the list on the bottom-right to show the available equipment for the slot you clicked. You may equip gear by simply selecting it from the list. To view the stats of the gear, you may mouse-over the picture of the gear to display tooltips, which contain the full list of stats used on that gear.
After clicking one of the buttons at the top of the tab, the stats shown on the tab will update based on the equipped set based on your selected buffs and equipment.
If you want to see the full list of all stats, then use the compare stats button on the Optimize tab. This button prints the entire list of all stats used by the code to the terminal window (the command prompt window that opens with the GUI) for the TP and WS sets together so they may be compared. This list is displayed in alphabetical order. Note that while all stats are shown, not all stats are used by the code, such as Fencer, which may be shown, but is not enabled unless you meet the requirements for Fencer to activate. Similarly, some stats printed are only mid-way points to calculating final stats. For example: "Accuracy" is the sum of only certain types of accuracy, such as gear, traits, and some buffs. This "Accuracy" stat is used to calculate the final "Accuracy1" and "Accuracy2" stats, which are your main and off-hand accuracies.
The Optimize tab is used to select the exact pieces of equipment you want the code to consider when automatically finding gear sets. A few convenient buttons are placed for quickly selecting or unselecting everything in a gear slot, as well as an option to select which rank of Odyssey gear you wish to select when using the "Select All" buttons.
The "Select all" button selects all items in the displayed equipment slot list.
The "Select ALL" button selects all items in all equipment slot lists.
The "Unselect all" button unselected all items in the displayed equipment slot list.
The "Select from File" button will select all items in all equipment slot lists that are listed in an input file. However, this input file MUST have the format used by the Windower GearSwap add-on command "//gs export all"
By default, when using the "select" buttons:
Empyrean +2 earrings from Sortie are not selected, but the +1 versions are.
Empyrean +3 armor is selected, but Empyrean +2 armor is not.
AF and Relic +4 are selected, lower is not.
JSE+2 necks are selected, but JSE+1 necks are not.
The new HQ2 augmentable crafted limbus gear is included, but only the R0 version is selected, while the R30 is not.
Nyame Path B is selected, but Nyame Paths A and C are not.
Certain expensive or inconvenient items are excluded: Hoxne Ampulla, Balder Earring +1, Antitail, etc
Odyssey equipment is included at ranks 0, 5, 10, 15, 20, 25, and 30. When using the "select" buttons, only the rank corresponding to the "Odyssey Rank" drop down menu selection will be selected. For convenience, I've included a checkbox to overwrite this selection for Nyame, which will limit the maximum value to R25 so you may choose to select all Odyssey equipment at Rank 30, but keep Nyame at Rank 25.
Because players are only able to choose one ring are a reward from the Seekers of Adoulin and Voracious Resurgence missions, I've added drop down menus to restrict automatic selection of these rings to the players choice when using the "select" buttons.
The bottom of this tab includes inputs for defining the metric used to find the best sets for TP, Magic, and Weapon Skills. For example, when automatically finding the best magic set, you can adjust the "Spell Metric" to "TP Returned" to find the set that returns the most TP for Occult Acumen, which is convenient for DRK using Impact to start a fight with AM3.
The "PDT Requirement" and "MDT Requirement" entries allow users to build DT sets. Adding a high DT requirement will take more time since the algorithm builds DT sets starting from 0% DT. These values must be negative for DT sets.
The "Optimize" buttons take the user's inputs (buffs, job, enemy, etc) and selected equipment to automatically find an equipment set that satisfies the metric defined earlier. For example: you can find the highest damage weapon skill set by selecting "Damage Dealt" for the "WS Metric" entry and clicking the "Optimize WS" button.
Finding a best set can take some time depending on your computer hardware.
You can choose to have the code print out its progress to the terminal window by enabling the "Verbose Swaps" option within the "Settings" button at the top of the GUI. This will slow down the code a bit since it will print many lines.
After a best set has been found, you may click the "Equip best set" button to automatically equip the best set to the quicklook tab to play with in more detail.
The Simulations tab allows the user to run basic DPS simulations with one TP and WS set combination. Each of these sets can be quickly moved to/from the inputs tab using the "Copy set to inputs tab" buttons. Alternatively, you may use the "Copy set to clipboard" to copy the set to your computer's clipboard, which would be the same as highlighting a gearswap file's equipment set and clicking Control+C to copy it. This can then be pasted into your gearswap file for convenience.
Clicking the "Run DPS Simulations" button will run simulate a few hours of continuous auto attack rounds and weapon skills with your equipped gear (on the Simulations tab), selected buffs, and against your selected enemy stats. The simulated enemy has unlimited HP and your selected buffs are considered permanent, so the code will not simulate things like losing and reapplying aftermath, haste samba, innin, etc. TP is used after your simulated TP (from simulated attack rounds and regain) reaches your minimum TP threshold defined on the inputs tab. If you enable the "Plot DPS" checkbox, then a plot of your DPS over simulation time is plotted so you can see how stable the DPS is.
Clicking the "Create weapon skill distribution plot" button will simulate 10,000 weapon skills (without a TP phase) and plot a histogram of all of the damage values. This is useful to see the possibilities on increasing damage from multi-attacks, or seeing the absolute maximum damage possible.
|
| The algorithm |
The details of the code's algorithm can be found in the orignal Ninja thread, but to keep things somewhat self-contained, here I provide a general summary of the code's automated set finding process.
The automatic set-finding algorithm follows a simple pattern using a 2-swap partially-exhaustive search algorithm:
Starting from the equipment equipped in the inputs tab, unequip all items that the players main job can not use.
For each equipment slot, confirm the list of items to check from the selected items in the "Optimize" tab.
Unequip equipment for slots that have at least one item selected in the "Optimize" tab.
For the equipment slots that will be checked, select two slots randomly. The code will only swap two items simultaneously.
Randomly equip one item from the equipment in each slot's selected equipment list to these slots.
Check that the combination of equipment is valid. Automatically reject and skip sets that are not valid.
- Do not equip two of the same Rare ring, do not use a shield with 2-handed weapon, do not use a grip with a 1-handed weapon, do not try to shoot an arrow out of a gun, etc
- In the case of the user requiring a specific DT value, a valid set must satisfy the required DT as well. For example: the user wants -20% DT, then the code will skip sets that only have -19% DT to save time.
After building a valid gear set, the code runs a single average-value simulation, estimating the average damage dealt or the average time taken to gain TP for a weapon skill, based on the equations and logic determined through community testing.
Compare the output to the stored "best" output.
- Reject the equipped gear if the output is worse than the stored "best" output.
- Accept the equipped gear if the output is better than the previous "best".
Repeat from Step 5 until all combinations of equipment from each slot are checked.
Repeat from Step 4 until all combinations of two simultaneous equipment slots have been checked.
Repeat from Step 3 until no better set is found, but give up after 2 consecutive iterations where no better set is found.
For the most part, the code will find the "best" set within 2 to 3 total iterations and completes within a few seconds, but the total time taken depends on your computer hardware.
If the user requires a specific DT value in their automated set, then the code the code will iteratively build sets that gradually reach the user's requirement. For example: if the user wants at least -30% DT, then the code will find the best 0% DT set and calculate its DT. If the set happens to have at least -30% DT already, then it stops. If the set has -x% DT, then the code will run the optimization algorithm again, rejecting all gear sets that have less than -(x+1)% DT. This process repeats until the -30% required DT is satisfied, which may take a few minutes depending on your computer hardware and how many steps it takes.
|
| Results |
To demonstrate the effectiveness of the code, I've used it to automatically find "best in slot" sets for many weapon skills on all jobs in mid-buff and high-buff situations. The sets and the details on the buffs and enemy used to find the sets are posted to BG Wiki (see https://www.bg-wiki.com/ffxi/All_Jobs_Gear_Sets).
The "best in slot" sets vary depending on your exact situation. The sets presented on BG Wiki were built for a specific enemy and buff set described on the BG Wiki guide page. This means that the gear sets presented should be treated as references for building your own sets, and not as absolute best in slot since your situation may be different. However, I believe the sets I've built and posted to BG Wiki should still perform well in most situations. I highly recommend downloading the code and playing with different sets for your specific situation. You may end up finding a set with, for example, higher Magic Evasion or higher DT, but is only "worse" than my posted set by about 2%.
If you see any obvious issues with these sets, such as equipment that should obviously win by a significant amount, but isn't shown in a specific set, then let me know so I can look into any potential issues with the code.
|
Date Created: 2023-05-13 17:32:42
Date Last Modified: 2025-12-14 11:54:54
Updates: 19
Bytes: 22739
|
|