• Visit Rebornbuddy
  • How do I think that an ItemScore plugin should work like.

    Discussion in 'Archives' started by tozededao, Feb 19, 2014.

    1. tozededao

      tozededao Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      1,225
      Likes Received:
      5
      Trophy Points:
      38
      As the community has been talking recently, we certainly need some sort of ItemScore in order to ID the items and vendor or stash them based on its rolls.

      Comparing to D3, this game is way more complex and we can't have a unique preset for all the items so my idea would be having multiple presets based on all the most common builds out there, these presets would be community driven and you would be able to create your presets aswell. Having a generic preset aswell would help evaluating items that we don't really have a preset made for but it would also add false-positive good items.

      Each "Build" would have presets for all type of gear, Rings, Amulets, Helm, etc.
      Each "Build" would have a list of the item types you would want to evaluate, a Lightning Arrow build is not gonna get any score of a 2Handed Weapon because it is not able to use it.
      We needed a few functions such as calculating the Physical and Elemental DPS of a weapon, the total % of resists, the total amount of STR, INT,DEX, Average Elemental Damage, Average Physical Damage, total amount of IIR, IIQ, total amount of Spell Damage %, and I think I've covered all.

      Lets say the bot is trying to evaluate this item:
      View attachment 120651

      After doing all the function calculations and calculating that its DPS is 502, we're now going to evaluate based on presets.

      All the builds that don't use 2Handed Maces as primary weapon are not gonna bother calculating the score based on their statweights.

      A Ground Slam Marauder wants this type of weapon, lets see how good it is.

      Example of Ground Slam Marauder 2H Mace Statweight:

      [TABLE="width: 400"]
      [TR]
      [TD]Elemental DPS[/TD]
      [TD]1[/TD]
      [/TR]
      [TR]
      [TD]Physical DPS[/TD]
      [TD]5[/TD]
      [/TR]
      [TR]
      [TD]Strenght[/TD]
      [TD]2[/TD]
      [/TR]
      [TR]
      [TD]Life Leech[/TD]
      [TD]100[/TD]
      [/TR]
      [TR]
      [TD]Stun Duration[/TD]
      [TD]10[/TD]
      [/TR]
      [TR]
      [TD]Stun Thresold[/TD]
      [TD]20[/TD]
      [/TR]
      [TR]
      [TD]% Of combined Resist[/TD]
      [TD]5[/TD]
      [/TR]
      [/TABLE]

      That weapon would score 2860 with that preset

      Lets imagine our Min Score to Stash was 3000, we had to calculate the rest of presets to see if any would score 3000+, but as long as we find one preset that is above our preset it would stash it straight away.

      It would be a though work to tweak all the presets specially because you would have to keep comparing with other weapons, different builds but it is something that works reasonable well at beginning and extremely well when all the presets are tweaked.

      I've been playing PoE for almost 3 years and I have 3 90+ characters, 9 80+ and really experience with the game economy and the diversity of the builds that are out there. I wouldn't mind tweaking all those statweights so they become accurate, what I really lack is the abilty to do such thing on C#, and most likely it can't be done as a plugin on the current state.
       
    2. Apoc

      Apoc Moderator Staff Member Moderator

      Joined:
      Jan 16, 2010
      Messages:
      2,790
      Likes Received:
      94
      Trophy Points:
      48
      Doing this by build would nullify farming for anything other than yourself, and basically playing a self-found league (which there never will be).

      If it's something you desperately want to do, go for it, but it can't happen for the vast majority of users since every build is different, and a good ring is good for many different builds. Not just the one you happen to be looting for.
       
    3. IeU

      IeU Member

      Joined:
      Jul 20, 2010
      Messages:
      830
      Likes Received:
      11
      Trophy Points:
      18
      We should at least get some stat matching like other bots have.
       
    4. njmgaming

      njmgaming New Member

      Joined:
      Jan 27, 2014
      Messages:
      15
      Likes Received:
      0
      Trophy Points:
      0
      For the most part, excluding a bunch of worthless stats, it would probably be much more valuable to just read how many mods are in the top tier of rolls. Compare the mods on an item with a json/lua/ini whatever. There is probably many pre-made on the webz already.

      Ring 1
      life 76 (top roll)
      adds phys 8-15 (top roll)
      attack speed 6% (top roll)
      fire resist 44% (top roll)
      cold resist 34% (not top roll, but almost)
      +2 life gain on kill (wtf)

      for example, keep items with 3-4 top tier mods, or 2 top tier and 3 medium mods, regardless of build

      in general, any item you have that has multiple high rolls of any useful stat is certainly worth more than 6 alt shards, if you're willing to take the time to sell it.
       
    5. tozededao

      tozededao Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      1,225
      Likes Received:
      5
      Trophy Points:
      38
      I guess you misunderstood it , the loot filters wouldn't match your build but a ton of build presets in order to see if the item you find is actually good for any build, thats why you evaluate it for multiple builds.

      That's what I do when I evaluate an item, I try to see if there is actually any build who would make use of it, and if so, how good it would be.
       
    6. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,252
      Likes Received:
      290
      Trophy Points:
      83
      If something isn't currently possible, we'll try our best to make it possible as long as its within the scope of the bot project. The only thing missing right now is the ability to not use item filters for matching, but rather your own logic, at runtime. Having that ability would allow people to do a lot more advanced filtering logic, such as being able to implement filters based on their current character's gear rather than some pre-determined setup. This leads the way to being able to easily do auto-equip and auto-upgrade, since you can just check against your current gear at filter evaluation.

      Now, the catch to this, would be that there's not going to be any gui to work with (unless someone wanted to make one to generate the code). It'd have to be done all through code, like CRs are. Since we already allow changing combat target priority and inclusion, allow for a custom player mover, have the CRs user created, I think having the ability to use your own item filter system at runtime is well within reason. With our current setup it's possible to implement such a system, and it should not affect the normal users who are just using our long standing static item filter system. There's not going to be any guides on how to do really specific things yet, but if you want to play around with it, you can.

      As I mentioned before why we don't have stat filtering in the gui, we do have the ability to do so. It's just that there's just no easy, non-code wise to support everything people want to do that wouldn't take a ton of time that we've found yet. I've added in some changes to allow using code to do it instead for testing purposes. Since the point of beta is to try new things and find better ways to improve the bot, users will be able to now compliment the static filtering system, or override it completely. The default behavior has not changed, so you will need to do a few extra things to enable it. We cannot promise this system will stay in place or won't change, but for now, if you'd like to try it out, you can.

      Here's a plugin example that will (should, lol) work on the next beta version (#752). It shows how you could have a plugin that does exactly what you are talking about. The only difference is, this example shows disregarding the static filter rather than just adding in the item score stuff but that's easily changed by removing most of the item filter code and switching to ItemEvaluatorMatchingMode.StaticOrRuntime.

      Now, the "work" is figuring out how you want to score items. In my example, I'm scoring stats one by one to form a composite item score. If the item score is past my thresholds for pickup/stash, the bot would process those. However, this takes quite a bit of tweaking and testing, because you don't want to miss good things just because of your scoring values. To eliminate an item if it has a stat you just don't want, you'd apply negative weight. Ypu'd need to handle all the stats of things that you want to process.

      To map a stat to the StatType, you just replace spaces, and convert the symbols into abbreviated words. For example, for the life leech mod, "Life Leech From Physical Damage % " => "LifeLeechFromPhysicalDamagePct". For a complete list of stats, you'd want to use the object explorer in Visual Studio with the exilebuddy reference.

      Alternatively, you can work in different logic and work with the affixes themselves. If you want to do something like njmgaming mentioned with top stat rolls by tier, then the "work" is having to identify if the affix is the top of the tier or not. For example, on one of my items, here's an affix:
      You need to register and have one post to see spoilers!
      Now check the prefix page. If you went by Honed alone, you'd end up with the wrong type since there's 3 different cases of it. If you went by stat type alone, the same things, since it's used in more than one affix. You'd have to process the internal name, which the 4 would be the tier. If we dumped mods.dat and used that info, we should be able to expose it, but that's some extra data processing we'll need to spend a few days on to expose, eventually. Anyways, you'd still want to do affix specific scoring to eliminate the useless ones and only consider the decent ones on gear.

      Which method is the least work and maintenance to users, there's no real telling since it depends on your needs. If you wanted to setup a system that centered around builds, you certainly could, but you'd have to code that in. There's obvious limitations and flaws with doing a stat weight system like I showed in my example, because of thresholds and what is actually useful to people. It might be better to just handle every single case to avoid any issues, but then you're looking at quite a time investment. In the long run, it might be useful, but if you've been following the game announcements, a lot of stuff is about to change. I'm pretty sure we'll have to rework quite a few things.

      I think this is a lot more manageable code wise, but not everyone can code or is familiar enough with a lot of this stuff to do it. There's a lot of different data to manage here, and trying to provide it in a gui in a way that won't break patch to patch and is easily usable has always been the problem. If we simply added everything to combo boxes and let people choose it, you'd make a couple of filters and just give up because of how tedious it was. As a result, people would need a really interactive gui that supported searching through the data to find the types of stats they wanted,and something like that is just impractical for us right now.

      The key thing is to not think what works for you best, but what would work for as many people as possible. I still feel the amount of worked required to make something really nice and usable for most people is better spent fixing API issues, improving the bot itself, and advancing CRs, as a lot of those things need improvements. We still don't have guides and tutorials for even the basic stuff. If the bot were otherwise near flawless, then it'd be a totally different story, but for now, that's pretty much where we are in this matter.
       
    7. imdivesmaintank

      imdivesmaintank New Member

      Joined:
      Oct 30, 2013
      Messages:
      342
      Likes Received:
      0
      Trophy Points:
      0
      I really think if we could just create 1 "IDed item" filter at a time the same way poe.xyz.is lets you search for items, that would be the best (then if the IDed item matches any of the filters, it stashes it). The only thing it's missing is an item level filter and it would fill every need I've ever had. And clearly all that data is available from the game if they're searching on it. Item scores are too hard to do imo, especially with the value of affixes changing as builds of the week gain popularity. Plus, what's worth picking up for one player may not be for another. Maybe I have a really obscure build that uses affixes most people don't value. If you couldn't do this and had to do some kind of item score, this would probably be a good starting point: It's Worth Keeping If... : pathofexile.
       
    8. tozededao

      tozededao Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      1,225
      Likes Received:
      5
      Trophy Points:
      38
      I like the idea of multiple presets and stash as soon as 1 is bigger than threshold because it allows people to implement new statweights on the go, ability to update and tweak easily.

      Will it work for everybody? Probably not, because most people who use this bot still don't know enough about the game, I don't blame them. That is why I wouldn't mind tweaking all the values and different builds. And I have 20 stash pages of decent rares to test those stat weights. Maybe testing 1 item for 30 different presets isn't the best for performance but at least it will be accurate, and it will help people with 4 stash pages to have a clean stash not filling that fast, specially if we have bossfarming set up soon and people use Magic Find characters for it. 3 Runs and you have 4 stash pages full.

      I dream the day we have a Farming Botbase for bosses and specific zones with better logic than explore it all, ability to rush bosses, stash handling with item ID and vendor recipes.

      Damn Sacrifice of the Vaal is getting me really excited.
       

    Share This Page