-
-
Notifications
You must be signed in to change notification settings - Fork 173
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bug in drop availability calculation (maybe?) #596
Comments
Hello, Please provide the |
I will need to wait for another case like this, the Diablo 4 drop had only like 15 min left, it was incomplete like that for 2 days aprox, I didn't said anything because it was days until the drop end, but yesterday I saw that behavior, the program was farming another drop from 0 instead of farming the 15 minutes left of that other drop. I reloaded the inventory from settings so it changed to Diablo 4 after a few minutes |
Edit: I opened the app and I found a similar case This is the dump file (I had to change the extension because dat is not supported by github) After restarting the app I got the same behaviour, now farming another drop for 11/5 instead of the 10/30 one |
Honestly I can at least somewhat say that the |
Hmm, well, the behavior might be unexpected and "buggy" at first, yes. However, the logic for availability is quite simple, it's just "campaign end remaining time" divided by "total remaining drops time", for ex. a campaign ends in 60 minutes, the drops within have 30 minutes remaining total, so the availability is: All of this means that, as the drops are mined, the currently mined drop will keep raising their lowest availability, while all other availabilities will decrease, until the two values "meet" at some point in the middle, at which point they'll all be mined "together", with the lowest availability switching rapidly between all campaigns/drops, sort of like this: https://github.com/user-attachments/assets/c2d944d7-21cc-4a84-8f16-e69706eefb2f In reality though, the miner is not able to switch back and forth between campaigns/games/channels this fast, as the availability-based sorting order is only updated on a reload ( I'm actually starting to doubt this mode being "better" than the simple "ending soonest", even though it's premise of giving more priority to campaigns requiring more time to finish sounds better on paper. I'm sure there's a way to "fix" the availability calculation, for ex. by giving more weight to the remaining campaign end time instead of the remaining drop time, but I'd need to do some tests to determine how to improve it. Thoughts? |
Tbh, given that the miner has to perform the entire "reload" sequence to update the sorting order and all that (and by default, this only happens every 60 minutes), I don't think the If we had a more efficient way to doing the game switching and all that other than solely during |
Right, I agree with pretty much everything you've said. The question remains: Where to go from here? I personally only use the Priority list, and these extra priority modes are, well, "extra". It's a little bit quirky, but it works somewhat. Should I leave it as is, try to fix it / rework the formula a little, or just remove/disable it temporarily, until for ex. #220 could bring it more to life? |
I'd say for now, the best approach would probably be to temporarily remove or disable it until we get #220 done. Then, we can revisit how it would affect |
I don't know, maybe doing something like (availability + days remaining) so even if some drops have the same availability the drops sooner to expire will be prioritized? |
I can see the voices are split. One part of me wants to just rework the mode to fix it, but the other part of me sees now that the mode itself has a fatal flaw - the value it sorts with changes with time. As long as it changes, the miner will try to optimize the value across all of the campaigns first, and then keep switching back-n-forth between all campaigns, leading to the erratic behavior I've described above. If I were to fix it, the value would have to be changed to remain constant, regardless of the passing time. That kinda goes against the idea of the mode itself though, so constant cannot be used. Instead of constant, it could be rounded to some kind of a timeframe, so that the value changes for ex. every 30 minutes or an hour - this would end up having the same effect as the system functions right now though, because of how the priorities are updated only on reload. This implies having to change the timeframe to at least something longer than one hour, like 6-12-24 hours. That means it'd only really make sense for longer campaigns, and campaigns shorter than 24 hours could use the equivalent of "ending soonest" as fallback. I'll try to simulate some example cases over the weekend, if I can find some time for this, to see how could a rework like this work. If all else fails, the mode will probably end up being removed/disabled in the future. |
For some reason the program decided to prioritize a long not started drop ending on the 31 (SMITE), before a nearly finished drop ending in less than 24 hours (Diablo 4).
I'm using the low availability mode
The text was updated successfully, but these errors were encountered: