Add comments and update readme
continuous-integration/drone/push Build is passing Details

This commit is contained in:
MashPotato 2022-07-22 22:33:21 -06:00
parent eab22a8f06
commit 908ddf078a
2 changed files with 28 additions and 3 deletions

View File

@ -45,4 +45,29 @@ set retainer_2=Mondieu
.\gilgetter.exe
```
On first run, it will take some time to initialize and pull in all the item ID to name mappings, as well as the initial data sync with Universalis, after this is completed it should be accessible at http://localhost:8080
On first run, it will take some time to initialize and pull in all the item ID to name mappings, as well as the initial data sync with Universalis, after this is completed it should be accessible at http://localhost:8080
## Workflow
Once you've built the application and are able to run it, the general workflow is
1. Run the application, initial refresh of price data from Universalis - depending on number of recipes in the crafting-recipes directory this may take a few seconds to almost an hour.
2. A list of the best items to craft will be displayed - but this uses non-realtime data from Universalis, it may be stale. If you're fine with that, continute to step 3. If you want to have high confidence the suggested items are based on realtime market, it's best to run down the list and click the copy item name button, paste into market board search (while running an uploader such as XIVLauncher). GilGetter will refresh the price after 30 seconds. If you run down the list of items, you can be certain the suggested items are currently the best items to craft right now. This will also show what items you already have posted by putting a checkmark next to them.
3. Wait 30 seconds, a refresh prompt will be displayed.
4. Run down the list of items you want to craft or post by clicking the copy name button next to the item. You can mark the item to craft by pressing the '0' number button on your keyboard. You can tag items with numbers 1-9 by pressing the corresponding key on your keyboard as well (useful for marking retainer slots if you store items on your retainer).
5. When you've selected items you want to craft, click the checkout button. You'll be taken to a page showing the items you want to craft, suggested quantity (based on sale velocity) and below that a list of crafting materials and quantities.
6. Buy the crafting materials
7. Craft the items
8. Post items (I like to only have one of each item at a time and store rest on retainers just for posting later)
9. Collect
## FAQ
#### Why are there no graphs/charts?
Graphics are for people that like stories and make decisions. The point of this utility is that the analysis has been done, and decisions have already been made. A generalized strategy that works well is baked into the ranking function. This is not a tool for performing analysis on an item by item basis.
#### What is the strategy?
GilGetter's strategy is value-add between the current price of crafting materials and the estimated sale price of a crafted item. It also contains weights for sale velocity and historical price (vs current price). The sale velocity helps cover the hidden cost of taking up a retainer sell slot (i.e. an item which could bring a lot of profit, but only 2 of them are sold per real life year). All the factors are ran through the ranking function - sortItemSlice() in the main.go file and a list of suggested items are displayed for which you can craft and make money with.

View File

@ -428,12 +428,12 @@ func fullPriceRefresh() error {
func sortItemSlice() {
log.Printf("metric re-sort triggered")
priceUpdateProgress = 100
priceUpdateProgress = 100 // We set this to 100 to ensure any Universalis refresh is in the completed state when we sort the items.
itemSlice = make([]MarketItem, 0)
// Calculate the metric for each item
for _, item := range items {
if len(item.CraftingMaterials) < 1 {
if len(item.CraftingMaterials) < 1 { // If there are no crafting materials for an item (i.e. the item is a crafting material itself), we ignore it.
continue
}