Skip to content

SparrowBrain/Playnite.PlayNext

Repository files navigation

Playnite Play Next Addon

DownloadCountTotal LatestVersion DownloadCountLatest

What Is It?

Play Next addon for Playnite (similar to Steam PlayNext).

Since we don't have big data like Steam, the recommendations are based on your activity (playtime, recent play order) as well as general properties (like critic score, community score or release year).

Main NextPlay view screenshot Main NextPlay view screenshot The recommendation score algorithm is highly customizable to your personal taste.

Settings

Main NextPlay view screenshot

Total Play Next score is calculated by weighting and adding up following attributes:

Attribute Value
Genre Attribute score
Feature Attribute score
Developer Attribute score
Publisher Attribute score
Tag Attribute score
Series Attribute score weighted by order in series
Critic Score Itself
Community Score Itself
Release Year How close to preferred year it is. It can either be the current year (ie newer games are preferred), or a specific one
Game Length How close to preferred length it is. The length can be specified in hours. Requires HowLongToBeat addon ⚠️
Random Random score

Attribute score depends on your activity:

Activity Comment
Total Playtime All playtime
Recent Playtime Playtime within recent days, requires GameActivity addon ⚠️
Recent Order Order of games played in recent days
Favourites Games favourited by the user
User Score Score given by the user to the game

Algorithm

Algorithm works in two steps:

  1. It calculates scores for attributes (genre, feature, developer, publisher, tag);
  2. It uses attribute score with additional game properties to calculate the final score.

Attribute Score Calculation

Total Playtime

We iterate through all games that have any playtime. The attributes of the most played game get the maximum score while other games' attributes get proportionally smaller scores (depending on playtime).

Recent Playtime

Same as Total Playtime, except we use recent playtime withing configured recent days to get the attribute scores.

Recent Order

In a way it's a poor man's Recent Playtime. It just orders games played within recent days and assigns the highest score to most recent game's attributes, giving proportionally smaller scores to older game's attributes, ending with zero for the last one.

Favourites

We iterate through all games favourited by the user. All attributes in any such game get the maximum value.

User Score

We iterate through all games. Any attributes of games that have been assigned user score higher than Average User Score (defined in settings) get proportionally spread score above 50. Any games below said average get a negative scores for their attributes.

Breakdown:

  • Score of 0 → mapped to 0 (neutral, not penalized).
  • Below average → linearly mapped from 0 to -50. A score just above 0 approaches -50, a score just below average approaches 0.
  • At or above average → linearly mapped from 50 to 100. A score equal to averageScore gives exactly 50, a score of 100 gives exactly 100.

Game Score Calculation

Attribute Scores

Adds up score to the game score using the different attribute scores calculated by playtime / recent order.

Series Scores

Same as attribute scores, except it's weighted by the order in the series. The first game in the series gets the maximum score, while the last one gets the smallest score. Order in series can be either release date or sorting name.

Critic Score

Just adds the game's critic score to the score. Skipped if game has no critic score.

Community Score

Just adds the game's community score to the score. Skipped if game has no community score.

Release Year

Takes release years for all games and then assigns the scores depending on the difference from the preferred year. If the game's release year matches, the game gets maximum score. The other release years earn proportionally less score, depending on the difference from preferred release year. The biggest difference will earn zero score.

For example if our prefered year is 2000 and our biggest difference game is from 2010, then we get these scores:

  • Year 1990 - 0;
  • Year 1995 - 50;
  • Year 2000 - 100;
  • Year 2005 - 50;
  • Year 2010 - 0;

Game Length

Takes the game lengths for all games and assings the scores depending on the difference from the preferred length, capping out at half the preferred length. For example if our preferred length is 20 hours, then we get these scores:

  • Hours 0 - 0;
  • Hours 10 - 0;
  • Hours 15 - 50;
  • Hours 20 - 100;
  • Hours 25 - 50;
  • Hours 30 - 0;

Random

Random assigns a random score between 0 anmd 100. This is useful if you want the recommended games to keep changing.

Also, if this is non-zero, it makes a Refresh button to appear. You can then regerenate the suggestion the list at any point.

Weighting

Weighting sets a maximum amount of score a specific part of algorigthm can contribute to the end result. That means in attribute score calculation weights set how much specific types influence the attribute scores. And in game score calculation we specify how much those attribute types influence the final score for games that will get recommended.

This lets us fine tune algorithm to get the games we prefer. For example we can aim for games with the same genre we played a lot and games with high critic scores.

Presets

PlayNext settings support presets. You can save multiple different setting options and switch between them using the preset drop-down.

This also enables showing multiple PlayNext game shelves in StartPage extension with different recommendation algorithm parameters.

Exclusion lists

You can exclude certain games to not be recommended by using these exclusion lists:

  • Libraries
  • Platforms
  • Categories
  • Tags

Installation

You can install it either from Playnite's addon browser, or from the web addon browser.

Other Addons Integration

StartPage

Main NextPlay view screenshot

PlayNext has a custom view for StartPage. It's designed to look similar to StartPage game shelves.

GameActivity

In order to get attribute score calculation based on Recent Playtime to work you will need to have GameActivity addon installed.

HowLongToBeat

In order to calculate the score depending on the game length you will need to have HowLongToBeat addon installed.

Localization

You can help translate the extension to your language on the Crowdin page.

About

Play Next addon for Playnite (similar to Steam Play Next).

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages