With almost every performer in my current db being either 4 or 5 stars, I’m probably not making the most out of the rating, so I think I’ll give this sort of approach a try.
EDIT: Spent some time with this tonight, and it is pretty fun. There is room for improvement, but it’s a great foundation. Immediately more usable than some of the other plugins that I’ve tried out that attempted a similar ranking system. Thanks to you and @dtt.
EDIT 2: I can see that you’re using AI and making commits pretty frequently, so I’m not going to try making a pull request or my own fork at the moment. I do have a couple of suggestions though:
Since Performers support custom metadata fields, I would suggest to track wins and losses in custom fields so that this can be factored into the ELO rating deltas.
If the performer’s total matches (wins + losses) is less than some benchmark, maybe 10 total matches, then double the rating delta. This will help new unrated performers reach the appropriate range more quickly.
With swiss matchups, if the performer’s win percentage is high (maybe 70% or higher) bias towards matching them against a higher rated performer. Or another simpler approach may be to just increase the points won if the performer has a high percentage (if player with 70% or higher win rate and wins, multiply point gain by some small factor). If a performer is favorited, you could also apply a similar small boost to point gain to keep them higher in the ratings - although I could also see that causing issues for people with a lot of favorites by pushing too many performers high on the rating scale rather than maintaining a more even distribution.
There is some room for improvement with the way new matchups are fetched.
Fetching the entire list every time is not optimal and can be quite slow with a larger database. For me, it’s not really a problem with performers even with a relatively large database, but I see that you also tried adding in image rating and that is not functional at all for me because of how long it takes to load that full image list.
Improve randomization of matchups in gauntlet style. Right now, you will typically see the same performers show up repeatedly because they are the first person found with a specific score. It might also be possible to factor in the wins/losses in here as well (someone with a higher number of total matches is more likely to be a good benchmark for comparison as opposed to a performer with few matches).
For gauntlet style matchups, it would be nice if you could just select a specific performer to start with. Maybe this could be initiated with a button on the performer page or some sort of dropdown list added to the rating UI.
It would be nice to be able to filter the pool of possibly selected performers. It’s suggested in the Stash Battle plugin thread, but one way to do this would be to just use whatever filter is currently applied when the user clicks the button to open the Hot or Not rating UI.
I could however see this leading to some confusion if the user doesn’t realize a filter is being applied, so you would maybe need something in the UI to call out that a filter is applied along with a button to either toggle filtering off or to just clear the filter.
i was thinking about adding a custom field to track wins and losses, have not dug into it yet.
yeah i tried the image thing just to see. it works but is very slow because of the number of images.
i did add an option that gives 5 performers to pick from to take through gauntlet. if you haven’t pulled the latest, try that out and see what you think.
FYI there is a similar performer rating plugin @Valkyr made based on the Glicko rating system.
It stores rating data in custom performer fields, includes a leaderboard, and shows Glicko ratings/rank on performer cards. But it lacks some of those comparison modes yours has.
@JAVegeta420 made some updates today. if you get around to messing with it, let me know what you think.
added stat tracking and updated the logic to use the stats
added the rank randomization to gauntlet mode
simplified image battles to only swiss mode. added some limiting on the initial query to improve performance
might try to dig into some filtering stuff tonight
EDIT: Some nice updates. Gauntlet flow seems better with fewer repeats showing up. Image matchups are still slow but it is functional now.
One minor issue I see is with the stat updates in the gauntlet - the initially selected performer is always updated with +1 win and +0 losses after the gauntlet and anyone they faced receives no stat update.
i believe i have filters working now. it is checking the active filters on the page, including multiple active filters. i’ve tested a lot of them and they seem to be working ok but there may be edge cases that still fail.
Seems to not be working for me with gender and tag criteria. The filter looks like it’s malformed. The performer filter that I see in your graphql call is this:
hello i love so much your extension ! It’s very fun to play !
I have to report just one thing for the moment.
Bug Report - hotornot
Summary: The “Favorite Performer” filter does not appear to be functioning correctly when searching for matches. Matches are not being filtered to only show performers marked as favorites.
Expected Result:
The search results should only display matches featuring performers who have been marked as “favorites” within the extension.
Actual Result:
The search results display matches featuring all performers, including those who have not been marked as favorites. The “Favorite Performer” filter appears to have no effect.
Installed the plugin and tried it out.
Getting error message in the dialog: `Error loading scenes: Cannot query field “customFields” on type “Performer”. Did you mean “custom_fields”?`