Final Fantasy XI Private Server Data Explorer
This project was made completely for fun, and the fact that I may use these programs to support my own server if I ever retire or get enough time to play again. There are now three separate pieces to this effort. The first is the Angular web client. Second is the Golang API that the client uses to retrieve data from the MariaDB database, custom json files, and lua script files used by the actual private server. The third piece is the C# auction house broker I wrote more recently.
In case you didn't notice, these all use different languages. This is because I love to learn new things and I can jump into a new programming language easily. It also has to do with when each program was made.
The client has many different views and allows the user to search based on various categories. These categories include things like the auction house, items, mobs, and crafting skills. The client also allows the user to view the details of anything in the search results or from lots of links on the various pages.
Auction House Search
The auction house page allows the user to search for items that are currently for sale on the auction house. The results of a search show all items that match the search criteria. The user can then click on any item to see the details of that item. The results show the item name, the price, the category to find the item in the in-game auction house, and whether or not the item is in a stack.
Item Details
The item details can be reached from links in a variety of locations. Some of the places item detail links can be found are the auction house search results, the crafting materials list, the mob treasure list, or the fishing menu. The item details page has a button which will navigate and automatically search the auction house for that item.
The details shows a variety of information. It shows the item box and description which is based on the model from the game. It shows what kind of item it is. For example, whether the item is usable or rare. It also shows which mobs drop the item, any recipes that use or make the item, which npcs sell the item, and where the item can be caught by fishing.
Job Details
The job details page shows information specific to each job. Each job's details can be selected from a summary page that lists all the jobs. The details page shows the job's skills, traits, abilities, skill caps, and artifact armor. The images below show part of the Warrior job details.
The skill caps for each job adds an ability I've never seen on any sites about the game. The level of the skill cap can be set specifically to see what the skill caps are for that level for each weapon usable by that job. This could be useful while leveling and trying to keep skills capped. Leveling weapon skills in FFXI used to be a huge task on its own outside of normal leveling.
Player Search
Since I do not currently have a live server with players on it, I do not have recent pictures of this area to show. The following pictures are from a couple years ago, so they are a different size and the search button is a different color. I also only have the dark mode screenshots, so if you're viewing in light theme OS, you will see the dark background instead of light. Characters are shown in homam armor regardless of what armor they were wearing in-game. I have lots of images to match up with character models but they were generic faceshots, so I didn't like them much. It would be easy to switch over and use the character creation faceshots though.
Mob Search
The mob search pages allows the user to search for mobs by name. The search results will show an entry for every instance of the mobs that match the search criteria. For example, it will show a different entry for each zone an NM is found, so Genbu would show up in Sky and Nyzul Assault. Clicking on one of these entries will show the details of that mob.
The mob details page shows a lot of information about each mob. This information is obtained from a variety of sources, but most comes from the database and some values are calculated by using the algorithms in the C++ game server code.
The details shows the attributes, elemental resistances, and even the HP and MP of the mob. It also shows other useful information about the mob's attack capabilities, skills, and spells. Lastly the details show the treasure dropped by the mob and what the percent chance of that item dropping is. Each item in the Treasure section can be clicked to see the details of that item.
Item Search
The item search page is similar to the auction house search except that it is not limited to items for sale on the auction house. It includes every item in the database. The results show the item model from the game with the item description. Clicking on an item takes the user to the item details page for that specific item.
Fishing
The fishing page shows the fish that can be caught in a level range. The level range can be adjusted using a slider and there is a switch to include items that can be fished in the results. Items tend to clog up the view because they can be caught at pretty much any level and include things like rusty armor.
Each item in the results shows the fish name, the minimum skill the fish can be caught, the maximum skill that can be gained by catching the fish, and the size of the fish.
Clicking on one of the results takes the user to the fish details page. The details page shows the fish item model, characteristics, and the best baits and rods to use to catch the fish. It also has a button to automatically navigate and search the auction house for the fish.
Crafting
The main crafting page shows all the crafting categories and uses icons from items made with that craft. Clicking on one of these categories will take the user to a page which allows them to search for crafts within a certain level range.
The results for each craft shows the skill level needed to make the item, which is also the max skill level that can be reached by making the item. The minimum skill can be a reasonable amount of levels below the listed skill level. The results also show whether it is a desynth item or if the item requires a Key Item to craft it. Clicking on an item will take the user to the item details page for that item, which shows more information like what is needed to make it or what recipes use that item.
Zones
The zones page allows the user to search for zones. The results show the zone name, the level range, and the zone type. Clicking on a zone takes the user to the zone details page for that zone.
The zone details page shows the different maps for the zone. It also lists all NPCs or targets in the zone, as well as all the mobs including the NMs. Each mob can be clicked to go to the mob details page.
Skillchains
The main skillchains page shows a list of all the skillchain types. Clicking on one of the skillchains takes the user to the details page for that skill chain.
The details page for a skillchain shows the weapon skill types to make the skillchain for each possible skillchain level. It also lists all of the weapon skills that are the type of the skillchain.
If a weapon skill name in the list is clicked, it will show the details from the lua scripts for that specific weapon skill. These kind of details can be found for a variety of things like this including automaton skills, blue magic, etc.
Clicking on the weaponskill category like Hand-to-Hand will take the user to the Weapon Skills for that category. The results show the weapon skill name, the skill level that the weapon skill is learned, and other characteristics for each weaponskill. It also shows whether the weapon skill is an area attack.
BCNMs
The BCNM page allows users to search for a BCNM by name. The search results show the BCNM name, the level cap of the battlefield, and where the battlefield is. It also displays the time limit of the battlefield, how many people can enter, and any rules. Badges on the right show if the battlefield is for loot or a mission. Clicking the zone the battlefield is in navigates to that zone's details.
Missions
The Missions page shows all the categories for missions. Clicking on one of these categories shows all the missions in ascending order for that category.
Tutorials
The Tutorials page shows a list of all the available tutorials that are built into the game client. The tutorials cover a plethora of topics from combat and crafting to Dynamis and Besieged. Clicking on one of the tutorials shows the page or pages from the game client for that specific topic. The tutorial shown in the image below is for combat.
Conclusion
This effort taught me a lot about how the private server and even the game client is structured. I had to do a lot of research and hunt down details or figure out how to parse different scripts properly. It was also my first time to use Golang, so that was an interesting experience. Several C++ algorithms and structures were converted to Golang for the API.
It's been more than 10 years since I played the official game, but playing this game was a very memorable time for me and lots of people are playing on private servers today. The code for these projects is publicly available on my Github if anyone wants to use it.