FFXIAH.com

New Items
2026-07-09
5979 users online
Gear Sets Text



Gearsets By Job (BG Wiki links)













Known Issues

  • GUI scaling behaves poorly when using custom DPI scaling settings on Windows.

  • The GUI does not scale in size for low resolution screens.








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.
  1. Login to GitHub

  2. On the actions page, click the most recent action to view the most up-to-date files.

  3. Download the kastra_ffxi_sim-full artifact at the bottom of the page.

  4. Unzip the kastra_ffxi_sim-full.zip archive.

  5. Double-click the gui_main.exe file to run it.

  6. 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 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:
  1. Starting from the equipment equipped in the inputs tab, unequip all items that the players main job can not use.

  2. For each equipment slot, confirm the list of items to check from the selected items in the "Optimize" tab.

  3. Unequip equipment for slots that have at least one item selected in the "Optimize" tab.

  4. For the equipment slots that will be checked, select two slots randomly. The code will only swap two items simultaneously.

  5. Randomly equip one item from the equipment in each slot's selected equipment list to these slots.

  6. 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.

  7. 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.

  8. 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".

  9. Repeat from Step 5 until all combinations of equipment from each slot are checked.

  10. Repeat from Step 4 until all combinations of two simultaneous equipment slots have been checked.

  11. 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.

Author: Izanami
Date Created: 2023-05-13 17:32:42
Date Last Modified: 2025-12-14 11:54:54
Updates: 19
Bytes: 22739