Creating a FFXIV Market Board Application

So last week I was watching a video on how to earn gil (the currency used in FFXIV).

Apparently the gist of it is to buy items from the Material Supplier found in major cities and your house (if you’re lucky / wealthy enough to have one).

So as I was watching the video I was thinking that there must be a better way to figure out what items to sell then to manually go through each items listings.

Programming a solution

I figured that as with most games there must be an API I could work with to get the vendor items and their market prices from the API.

After some research I discovered that XIVAPI existed. Great deal of documentation but at the time the market prices API wasn’t working. Luckily the folks over on their Discord were insanely helpful! They even implemented an endpoint method that allowed me to pull multiple items from the market board so I don’t have to make an insane amount of calls to their API!

Learning to dynamically load data into a bootstrap table

Since I’m horrible at CSS and creating good designs I usually opt to use a bootstrap theme as a starting point and get the different pieces of HTML from there. Only this time I had to figure out a way to dynamically load data without creating templates and using jQuery to append this each time.

And yet again the people on Discord were very helpful! They suggested I try to use vue.js. As I had never used this before I do what I always do, find some practical examples I could work of.

I couldn’t quite find what I was looking for and I wasn’t sure how their framework worked at all without going through all of their documentation step for step.

Miracle strikes, bootstrap-vue.js!

It was then when I struck gold, I had found bootstrap-vue.js! I quickly dove in and found some working examples, I had some issues getting data to show the way I wanted but yet again I’m saved by the lovely people from the bootstrap-vue Discord!

I love bootstrap-vue.js, there’s just so many things that work out of the box as long as you supply it with correct JSON data. But I sure still have many things to learn about using bootstrap-vue.js.

How to analyze the market

Another issue I had to tackle was how I was going to interpret the data available on the market. How do you derive what is valuable and what is a good investment?

I ended up making 2 “artificial columns” with some formula to determine what could be a good investment.

The first one was “Time To Sell” which was hard to do given I had limited data (I by default only get 50 history listings and I wanted to keep this a pure clientside application).

What I did was assign points based on shorter periods between sale dates and apply the following formula:

salePoints = Math.log(Math.sqrt(Math.round(salePoints / historyAmount))).toFixed(2);

I also made sure to specifically exclude HQ quality items from these since you can’t buy those from a vendor (well maybe if you got the specific crafting class fully leveled).

The second one was “Profit” even though the more correct term is possible profit but I had limited header space if I wanted to have the table look smooth.

This one was rather easy, I just calculated the average sale price by summing all the sales (minus the HQ items) and then dividing it by the amount of sales (minus HQ yet again) and then subtract the vendor buy price from it.

Conclusions and final thoughts

I enjoyed dabbling into the XIVAPI and thinking about how to calculate profit, I also managed to learn about bootstrap-vue.js which I surely might use again in the future.

Click here if you guys want to check this out for yourself and the Github Repo over here.

I hope you guys enjoyed my writeup, I sure did 🙂
Love you all, Zeffuro

Final Fantasy XIV – I’ve been missing out for way too long!

Hey guys, I’ve been pondering about what to post for the last couple of weeks an decided to make my second post about this amazing game I’ve been playing.

So what game am I talking about? Well I assume you’ve already read the title but for those who haven’t: Final Fantasy XIV.

So I began my journey on the 18th of February 2019 after I noticed that the game was available for free through Twitch Prime (and will continue to be until the 3rd of May).

Creating my first character

I had heard that some of my buddies from WildStar had moved over to Final Fantasy XIV on the realm Ragnarok.
So what do I do? From the start screen I select Chaos (EU Datacenter) and choose Ragnarok as realm and start creating my character.

So as I’m nearing the completion of my character I get the following question (but for a different realm):

And for whatever reason I didn’t pay much attention to this question and just clicked on yes. I assumed this was a standard confirmation that was something among the lines of: “Are you sure you want to create this character”.

This resulted in me leveling my character to about level 17 before my buddy came online on Discord. So I wanted to ask him to invite me to his Free Company (basically a player guild).

The mistake

He tells me he’s unable to invite and asked me if I’m on the correct server, I tell him yes I selected Ragnarok before. He asked me to check the top right of my screen near the clock and I gasp in horror!

Apparently I had been leveling on a different realm for almost the entire day and I didn’t even notice. In the end I can only blame myself for not properly reading the prompt in it’s entirety but from that day on I tell my friends to pay close attention whenever they create a new character so they will not repeat my mistakes!

The journey

So eventually I ended up recreating my character (luckily I had saved my character appearance data) and I started my journey once more!

This time I was determined to experience the MSQ (Main Story Quest) in it’s entirety and I sure did so!

Yesterday (the 26th of March 2019) I finally managed to complete the MSQ which included the content of yesterday’s patch (4.56).

I really loved the story thus far and after watching the full Shadowbringers trailer I’m properly hyped for the continuation of the story!

How does it compare to World of Warcraft?

Personally I enjoyed about every aspect of Final Fantasy XIV way more then I did in World of Warcraft. But this could also be me having rose-coloured glasses on from being burned out on WoW.

I feel that the way Trials and Raids are handled is just so much more enjoyable then how World of Warcraft does it.

There’s no wasting a lot of time killing a ton of trash but I can get straight into the fight and deal with the mechanics that the fight has to offer!

I also love how old content continues to be relevant by how the sync system works. Sure you’ll have less spells to play with doing older content but you get to experience how the fight is supposed to be experienced (to a certain degree, since classes tend get updated each expansion).

The job system is amazing

I love everything about how alternate jobs are handled here! You can simply equip a different gear set and play as that class. Sure you need to level all of them up again but if you have your first class at max level you’ll level twice as fast on them!

There’s a ton of ways out there to level them up. Be it Deep Dungeons, FATEs or Duty Roulette so you can just do whatever you feel like doing without feeling pressured to level as fast as you can.

Final thoughts

I think Final Fantasy XIV is an amazing game that every MMORPG lover needs to give a go. It might feel tedious at first but if you take your time and go through the story at your own pace there’s an amazing story to experience.

It’s funny that a simple blog post about what I’ve been doing turned out to be a semi-review but I regret nothing, at least I got some content now.

This was Zeffuro, signing out!

Welcome to my blog!

Hey folks, Zeffuro here!

Welcome to my blog and I bid you welcome here.
So while my nickname is Zeffuro my actual name is Jeffrey so feel free to refer to me as Zeff, Zeffuro, Jeff, Jeffro, Jeffrey or whatever you feel comfortable with!

I’m not entirely sure what I’ll be posting here but I’ll try to make an effort to post at least weekly. If you have any suggestions for me let me know in the comments!

Love you all,